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

Unified Diff: tools/gn/target_unittest.cc

Issue 1752033002: Add "create_bundle" target in order to support bundle with gn. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gn-bundle-data
Patch Set: Add unit tests, address comments, update docs and format with clang-format Created 4 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/gn/target_generator.cc ('k') | tools/gn/test_with_scope.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/gn/target_unittest.cc
diff --git a/tools/gn/target_unittest.cc b/tools/gn/target_unittest.cc
index 8376fffcd5670eb69c752763f05d47ca744f4298..8f6684f650cacb3d57e5a4a475a27b8a5b368590 100644
--- a/tools/gn/target_unittest.cc
+++ b/tools/gn/target_unittest.cc
@@ -763,3 +763,66 @@ TEST(Target, AssertNoDeps) {
a2.assert_no_deps().push_back(disallow_a);
ASSERT_TRUE(a2.OnResolved(&err));
}
+
+TEST(Target, PullRecursiveBundleData) {
+ TestWithScope setup;
+ Err err;
+
+ // We have the following dependency graph:
+ // A (create_bundle) -> B (bundle_data)
+ // \-> C (create_bundle) -> D (bundle_data)
+ // \-> E (group) -> F (bundle_data)
+ // \-> B (bundle_data)
+ TestTarget a(setup, "//foo:a", Target::CREATE_BUNDLE);
+ TestTarget b(setup, "//foo:b", Target::BUNDLE_DATA);
+ TestTarget c(setup, "//foo:c", Target::CREATE_BUNDLE);
+ TestTarget d(setup, "//foo:d", Target::BUNDLE_DATA);
+ TestTarget e(setup, "//foo:e", Target::GROUP);
+ TestTarget f(setup, "//foo:f", Target::BUNDLE_DATA);
+ a.public_deps().push_back(LabelTargetPair(&b));
+ a.public_deps().push_back(LabelTargetPair(&c));
+ a.public_deps().push_back(LabelTargetPair(&e));
+ c.public_deps().push_back(LabelTargetPair(&d));
+ e.public_deps().push_back(LabelTargetPair(&f));
+ e.public_deps().push_back(LabelTargetPair(&b));
+
+ b.sources().push_back(SourceFile("//foo/b1.txt"));
+ b.sources().push_back(SourceFile("//foo/b2.txt"));
+ b.action_values().outputs() = SubstitutionList::MakeForTest(
+ "{{bundle_resources_dir}}/{{source_file_part}}");
+ ASSERT_TRUE(b.OnResolved(&err));
+
+ d.sources().push_back(SourceFile("//foo/d.txt"));
+ d.action_values().outputs() = SubstitutionList::MakeForTest(
+ "{{bundle_resources_dir}}/{{source_file_part}}");
+ ASSERT_TRUE(d.OnResolved(&err));
+
+ f.sources().push_back(SourceFile("//foo/f1.txt"));
+ f.sources().push_back(SourceFile("//foo/f2.txt"));
+ f.sources().push_back(SourceFile("//foo/f3.txt"));
+ f.sources().push_back(
+ SourceFile("//foo/Foo.xcassets/foo.imageset/Contents.json"));
+ f.sources().push_back(
+ SourceFile("//foo/Foo.xcassets/foo.imageset/FooEmpty-29.png"));
+ f.sources().push_back(
+ SourceFile("//foo/Foo.xcassets/foo.imageset/FooEmpty-29@2x.png"));
+ f.sources().push_back(
+ SourceFile("//foo/Foo.xcassets/foo.imageset/FooEmpty-29@3x.png"));
+ f.action_values().outputs() = SubstitutionList::MakeForTest(
+ "{{bundle_resources_dir}}/{{source_file_part}}");
+ ASSERT_TRUE(f.OnResolved(&err));
+
+ ASSERT_TRUE(e.OnResolved(&err));
+ ASSERT_TRUE(c.OnResolved(&err));
+ ASSERT_TRUE(a.OnResolved(&err));
+
+ // A gets its data from B and F.
+ ASSERT_EQ(a.bundle_data().file_rules().size(), 2u);
+ ASSERT_EQ(a.bundle_data().file_rules()[0].sources().size(), 2u);
+ ASSERT_EQ(a.bundle_data().file_rules()[1].sources().size(), 3u);
+ ASSERT_EQ(a.bundle_data().asset_catalog_sources().size(), 4u);
+
+ // C gets its data from D.
+ ASSERT_EQ(c.bundle_data().file_rules().size(), 1u);
+ ASSERT_EQ(c.bundle_data().file_rules()[0].sources().size(), 1u);
+}
« no previous file with comments | « tools/gn/target_generator.cc ('k') | tools/gn/test_with_scope.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698