| Index: tools/gn/target_unittest.cc
|
| diff --git a/tools/gn/target_unittest.cc b/tools/gn/target_unittest.cc
|
| index 9bfeed5c32ebb7873f95142508c84b8949684d92..9ddcf376ad3f054242f413407199ace34d08758e 100644
|
| --- a/tools/gn/target_unittest.cc
|
| +++ b/tools/gn/target_unittest.cc
|
| @@ -137,6 +137,61 @@ TEST(Target, DependentConfigs) {
|
| EXPECT_EQ(&all, a_fwd.all_dependent_configs()[0].ptr);
|
| }
|
|
|
| +// Tests that dependent configs don't propagate between toolchains.
|
| +TEST(Target, NoDependentConfigsBetweenToolchains) {
|
| + TestWithScope setup;
|
| + Err err;
|
| +
|
| + // Create another toolchain.
|
| + Toolchain other_toolchain(setup.settings(),
|
| + Label(SourceDir("//other/"), "toolchain"));
|
| + TestWithScope::SetupToolchain(&other_toolchain);
|
| +
|
| + // Set up a dependency chain of |a| -> |b| -> |c| where |a| has a different
|
| + // toolchain.
|
| + Target a(setup.settings(),
|
| + Label(SourceDir("//foo/"), "a", other_toolchain.label().dir(),
|
| + other_toolchain.label().name()));
|
| + a.set_output_type(Target::EXECUTABLE);
|
| + EXPECT_TRUE(a.SetToolchain(&other_toolchain, &err));
|
| + TestTarget b(setup, "//foo:b", Target::EXECUTABLE);
|
| + TestTarget c(setup, "//foo:c", Target::SOURCE_SET);
|
| + a.private_deps().push_back(LabelTargetPair(&b));
|
| + b.private_deps().push_back(LabelTargetPair(&c));
|
| +
|
| + // All dependent config.
|
| + Config all_dependent(setup.settings(), Label(SourceDir("//foo/"), "all"));
|
| + ASSERT_TRUE(all_dependent.OnResolved(&err));
|
| + c.all_dependent_configs().push_back(LabelConfigPair(&all_dependent));
|
| +
|
| + // Public config.
|
| + Config public_config(setup.settings(), Label(SourceDir("//foo/"), "public"));
|
| + ASSERT_TRUE(public_config.OnResolved(&err));
|
| + c.public_configs().push_back(LabelConfigPair(&public_config));
|
| +
|
| + // Another public config.
|
| + Config public_config2(setup.settings(),
|
| + Label(SourceDir("//foo/"), "public2"));
|
| + ASSERT_TRUE(public_config2.OnResolved(&err));
|
| + b.public_configs().push_back(LabelConfigPair(&public_config2));
|
| +
|
| + ASSERT_TRUE(c.OnResolved(&err));
|
| + ASSERT_TRUE(b.OnResolved(&err));
|
| + ASSERT_TRUE(a.OnResolved(&err));
|
| +
|
| + // B should have gotten the configs from C.
|
| + ASSERT_EQ(3u, b.configs().size());
|
| + EXPECT_EQ(&public_config2, b.configs()[0].ptr);
|
| + EXPECT_EQ(&all_dependent, b.configs()[1].ptr);
|
| + EXPECT_EQ(&public_config, b.configs()[2].ptr);
|
| + ASSERT_EQ(1u, b.all_dependent_configs().size());
|
| + EXPECT_EQ(&all_dependent, b.all_dependent_configs()[0].ptr);
|
| +
|
| + // A should not have gotten any configs from B or C.
|
| + ASSERT_EQ(0u, a.configs().size());
|
| + ASSERT_EQ(0u, a.all_dependent_configs().size());
|
| +}
|
| +
|
| TEST(Target, InheritLibs) {
|
| TestWithScope setup;
|
| Err err;
|
|
|