Home | History | Annotate | Download | only in gn
      1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "testing/gtest/include/gtest/gtest.h"
      6 #include "tools/gn/build_settings.h"
      7 #include "tools/gn/scope_per_file_provider.h"
      8 #include "tools/gn/settings.h"
      9 #include "tools/gn/test_with_scope.h"
     10 #include "tools/gn/toolchain.h"
     11 #include "tools/gn/variables.h"
     12 
     13 TEST(ScopePerFileProvider, Expected) {
     14   TestWithScope test;
     15 
     16 // Prevent horrible wrapping of calls below.
     17 #define GPV(val) provider.GetProgrammaticValue(val)->string_value()
     18 
     19   // Test the default toolchain.
     20   {
     21     Scope scope(test.settings());
     22     scope.set_source_dir(SourceDir("//source/"));
     23     ScopePerFileProvider provider(&scope, true);
     24 
     25     EXPECT_EQ("//toolchain:default",    GPV(variables::kCurrentToolchain));
     26     // TODO(brettw) this test harness does not set up the Toolchain manager
     27     // which is the source of this value, so we can't test this yet.
     28     //EXPECT_EQ("//toolchain:default",    GPV(variables::kDefaultToolchain));
     29     EXPECT_EQ("//out/Debug",            GPV(variables::kRootBuildDir));
     30     EXPECT_EQ("//out/Debug/gen",        GPV(variables::kRootGenDir));
     31     EXPECT_EQ("//out/Debug",            GPV(variables::kRootOutDir));
     32     EXPECT_EQ("//out/Debug/gen/source", GPV(variables::kTargetGenDir));
     33     EXPECT_EQ("//out/Debug/obj/source", GPV(variables::kTargetOutDir));
     34   }
     35 
     36   // Test some with an alternate toolchain.
     37   {
     38     Settings settings(test.build_settings(), "tc/");
     39     Toolchain toolchain(&settings, Label(SourceDir("//toolchain/"), "tc"));
     40     settings.set_toolchain_label(toolchain.label());
     41 
     42     Scope scope(&settings);
     43     scope.set_source_dir(SourceDir("//source/"));
     44     ScopePerFileProvider provider(&scope, true);
     45 
     46     EXPECT_EQ("//toolchain:tc",            GPV(variables::kCurrentToolchain));
     47     // See above.
     48     //EXPECT_EQ("//toolchain:default",       GPV(variables::kDefaultToolchain));
     49     EXPECT_EQ("//out/Debug",               GPV(variables::kRootBuildDir));
     50     EXPECT_EQ("//out/Debug/tc/gen",        GPV(variables::kRootGenDir));
     51     EXPECT_EQ("//out/Debug/tc",            GPV(variables::kRootOutDir));
     52     EXPECT_EQ("//out/Debug/tc/gen/source", GPV(variables::kTargetGenDir));
     53     EXPECT_EQ("//out/Debug/tc/obj/source", GPV(variables::kTargetOutDir));
     54   }
     55 }
     56