| // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "tools/gn/scope_per_file_provider.h" |
| #include "tools/gn/build_settings.h" |
| #include "tools/gn/settings.h" |
| #include "tools/gn/test_with_scope.h" |
| #include "tools/gn/toolchain.h" |
| #include "tools/gn/variables.h" |
| #include "util/test/test.h" |
| |
| TEST(ScopePerFileProvider, Expected) { |
| TestWithScope test; |
| |
| // Prevent horrible wrapping of calls below. |
| #define GPV(val) provider.GetProgrammaticValue(val)->string_value() |
| |
| // Test the default toolchain. |
| { |
| Scope scope(test.settings()); |
| scope.set_source_dir(SourceDir("//source/")); |
| ScopePerFileProvider provider(&scope, true); |
| |
| EXPECT_EQ("//toolchain:default", GPV(variables::kCurrentToolchain)); |
| // TODO(brettw) this test harness does not set up the Toolchain manager |
| // which is the source of this value, so we can't test this yet. |
| // EXPECT_EQ("//toolchain:default", GPV(variables::kDefaultToolchain)); |
| EXPECT_EQ("//out/Debug", GPV(variables::kRootBuildDir)); |
| EXPECT_EQ("//out/Debug/gen", GPV(variables::kRootGenDir)); |
| EXPECT_EQ("//out/Debug", GPV(variables::kRootOutDir)); |
| EXPECT_EQ("//out/Debug/gen/source", GPV(variables::kTargetGenDir)); |
| EXPECT_EQ("//out/Debug/obj/source", GPV(variables::kTargetOutDir)); |
| } |
| |
| // Test some with an alternate toolchain. |
| { |
| Settings settings(test.build_settings(), "tc/"); |
| Toolchain toolchain(&settings, Label(SourceDir("//toolchain/"), "tc")); |
| settings.set_toolchain_label(toolchain.label()); |
| |
| Scope scope(&settings); |
| scope.set_source_dir(SourceDir("//source/")); |
| ScopePerFileProvider provider(&scope, true); |
| |
| EXPECT_EQ("//toolchain:tc", GPV(variables::kCurrentToolchain)); |
| // See above. |
| // EXPECT_EQ("//toolchain:default", GPV(variables::kDefaultToolchain)); |
| EXPECT_EQ("//out/Debug", GPV(variables::kRootBuildDir)); |
| EXPECT_EQ("//out/Debug/tc/gen", GPV(variables::kRootGenDir)); |
| EXPECT_EQ("//out/Debug/tc", GPV(variables::kRootOutDir)); |
| EXPECT_EQ("//out/Debug/tc/gen/source", GPV(variables::kTargetGenDir)); |
| EXPECT_EQ("//out/Debug/tc/obj/source", GPV(variables::kTargetOutDir)); |
| } |
| } |