Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Side by Side Diff: tools/gn/target_unittest.cc

Issue 2605963002: Stop propagation of dependent configs between toolchains. (Closed)
Patch Set: public_configs Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/gn/target.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "tools/gn/target.h" 5 #include "tools/gn/target.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 #include "tools/gn/build_settings.h" 10 #include "tools/gn/build_settings.h"
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 ASSERT_TRUE(b_fwd.OnResolved(&err)); 130 ASSERT_TRUE(b_fwd.OnResolved(&err));
131 ASSERT_TRUE(a_fwd.OnResolved(&err)); 131 ASSERT_TRUE(a_fwd.OnResolved(&err));
132 132
133 // A_fwd should now have both configs. 133 // A_fwd should now have both configs.
134 ASSERT_EQ(1u, a_fwd.configs().size()); 134 ASSERT_EQ(1u, a_fwd.configs().size());
135 EXPECT_EQ(&all, a_fwd.configs()[0].ptr); 135 EXPECT_EQ(&all, a_fwd.configs()[0].ptr);
136 ASSERT_EQ(1u, a_fwd.all_dependent_configs().size()); 136 ASSERT_EQ(1u, a_fwd.all_dependent_configs().size());
137 EXPECT_EQ(&all, a_fwd.all_dependent_configs()[0].ptr); 137 EXPECT_EQ(&all, a_fwd.all_dependent_configs()[0].ptr);
138 } 138 }
139 139
140 // Tests that dependent configs don't propagate between toolchains.
141 TEST(Target, NoDependentConfigsBetweenToolchains) {
142 TestWithScope setup;
143 Err err;
144
145 // Create another toolchain.
146 Toolchain other_toolchain(setup.settings(),
147 Label(SourceDir("//other/"), "toolchain"));
148 TestWithScope::SetupToolchain(&other_toolchain);
149
150 // Set up a dependency chain of |a| -> |b| -> |c| where |a| has a different
151 // toolchain.
152 Target a(setup.settings(),
153 Label(SourceDir("//foo/"), "a", other_toolchain.label().dir(),
154 other_toolchain.label().name()));
155 a.set_output_type(Target::EXECUTABLE);
156 EXPECT_TRUE(a.SetToolchain(&other_toolchain, &err));
157 TestTarget b(setup, "//foo:b", Target::EXECUTABLE);
158 TestTarget c(setup, "//foo:c", Target::SOURCE_SET);
159 a.private_deps().push_back(LabelTargetPair(&b));
160 b.private_deps().push_back(LabelTargetPair(&c));
161
162 // All dependent config.
163 Config all_dependent(setup.settings(), Label(SourceDir("//foo/"), "all"));
164 ASSERT_TRUE(all_dependent.OnResolved(&err));
165 c.all_dependent_configs().push_back(LabelConfigPair(&all_dependent));
166
167 // Public config.
168 Config public_config(setup.settings(), Label(SourceDir("//foo/"), "public"));
169 ASSERT_TRUE(public_config.OnResolved(&err));
170 c.public_configs().push_back(LabelConfigPair(&public_config));
171
172 // Another public config.
173 Config public_config2(setup.settings(),
174 Label(SourceDir("//foo/"), "public2"));
175 ASSERT_TRUE(public_config2.OnResolved(&err));
176 b.public_configs().push_back(LabelConfigPair(&public_config2));
177
178 ASSERT_TRUE(c.OnResolved(&err));
179 ASSERT_TRUE(b.OnResolved(&err));
180 ASSERT_TRUE(a.OnResolved(&err));
181
182 // B should have gotten the configs from C.
183 ASSERT_EQ(3u, b.configs().size());
184 EXPECT_EQ(&public_config2, b.configs()[0].ptr);
185 EXPECT_EQ(&all_dependent, b.configs()[1].ptr);
186 EXPECT_EQ(&public_config, b.configs()[2].ptr);
187 ASSERT_EQ(1u, b.all_dependent_configs().size());
188 EXPECT_EQ(&all_dependent, b.all_dependent_configs()[0].ptr);
189
190 // A should not have gotten any configs from B or C.
191 ASSERT_EQ(0u, a.configs().size());
192 ASSERT_EQ(0u, a.all_dependent_configs().size());
193 }
194
140 TEST(Target, InheritLibs) { 195 TEST(Target, InheritLibs) {
141 TestWithScope setup; 196 TestWithScope setup;
142 Err err; 197 Err err;
143 198
144 // Create a dependency chain: 199 // Create a dependency chain:
145 // A (executable) -> B (shared lib) -> C (static lib) -> D (source set) 200 // A (executable) -> B (shared lib) -> C (static lib) -> D (source set)
146 TestTarget a(setup, "//foo:a", Target::EXECUTABLE); 201 TestTarget a(setup, "//foo:a", Target::EXECUTABLE);
147 TestTarget b(setup, "//foo:b", Target::SHARED_LIBRARY); 202 TestTarget b(setup, "//foo:b", Target::SHARED_LIBRARY);
148 TestTarget c(setup, "//foo:c", Target::STATIC_LIBRARY); 203 TestTarget c(setup, "//foo:c", Target::STATIC_LIBRARY);
149 TestTarget d(setup, "//foo:d", Target::SOURCE_SET); 204 TestTarget d(setup, "//foo:d", Target::SOURCE_SET);
(...skipping 837 matching lines...) Expand 10 before | Expand all | Expand 10 after
987 ASSERT_EQ(c.bundle_data().file_rules().size(), 1u); 1042 ASSERT_EQ(c.bundle_data().file_rules().size(), 1u);
988 ASSERT_EQ(c.bundle_data().file_rules()[0].sources().size(), 1u); 1043 ASSERT_EQ(c.bundle_data().file_rules()[0].sources().size(), 1u);
989 ASSERT_EQ(c.bundle_data().bundle_deps().size(), 1u); 1044 ASSERT_EQ(c.bundle_data().bundle_deps().size(), 1u);
990 1045
991 // E does not have any bundle_data information but gets a list of 1046 // E does not have any bundle_data information but gets a list of
992 // bundle_deps to propagate them during target resolution. 1047 // bundle_deps to propagate them during target resolution.
993 ASSERT_TRUE(e.bundle_data().file_rules().empty()); 1048 ASSERT_TRUE(e.bundle_data().file_rules().empty());
994 ASSERT_TRUE(e.bundle_data().assets_catalog_sources().empty()); 1049 ASSERT_TRUE(e.bundle_data().assets_catalog_sources().empty());
995 ASSERT_EQ(e.bundle_data().bundle_deps().size(), 2u); 1050 ASSERT_EQ(e.bundle_data().bundle_deps().size(), 2u);
996 } 1051 }
OLDNEW
« no previous file with comments | « tools/gn/target.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698