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

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

Issue 2101923006: Fix BundleData::GetBundleRootDirOutput() for non-default toolchain. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@create-bundle-deps
Patch Set: Rebase. Created 4 years, 5 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/ninja_create_bundle_target_writer.h" 5 #include "tools/gn/ninja_create_bundle_target_writer.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "tools/gn/target.h" 11 #include "tools/gn/target.h"
12 #include "tools/gn/test_with_scope.h" 12 #include "tools/gn/test_with_scope.h"
13 13
14 namespace { 14 namespace {
15 15
16 void SetupBundleDataDir(BundleData* bundle_data, const std::string& root_dir) { 16 void SetupBundleDataDir(BundleData* bundle_data, const std::string& root_dir) {
17 std::string bundle_root_dir = root_dir + "/bar.bundle/Contents"; 17 std::string bundle_root_dir = root_dir + "/bar.bundle/Contents";
18 bundle_data->root_dir() = SourceDir(bundle_root_dir); 18 bundle_data->root_dir() = SourceDir(bundle_root_dir);
19 bundle_data->resources_dir() = SourceDir(bundle_root_dir + "/Resources"); 19 bundle_data->resources_dir() = SourceDir(bundle_root_dir + "/Resources");
20 bundle_data->executable_dir() = SourceDir(bundle_root_dir + "/MacOS"); 20 bundle_data->executable_dir() = SourceDir(bundle_root_dir + "/MacOS");
21 bundle_data->plugins_dir() = SourceDir(bundle_root_dir + "/Plug Ins"); 21 bundle_data->plugins_dir() = SourceDir(bundle_root_dir + "/Plug Ins");
22 } 22 }
23 23
24 } // namespace 24 } // namespace
25 25
26 // Tests multiple files with an output pattern. 26 // Tests multiple files with an output pattern.
27 TEST(NinjaCreateBundleTargetWriter, Run) { 27 TEST(NinjaCreateBundleTargetWriter, Run) {
28 Err err; 28 Err err;
29
30 TestWithScope setup; 29 TestWithScope setup;
31 setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
32 30
33 Target bundle_data(setup.settings(), Label(SourceDir("//foo/"), "data")); 31 Target bundle_data(setup.settings(), Label(SourceDir("//foo/"), "data"));
34 bundle_data.set_output_type(Target::BUNDLE_DATA); 32 bundle_data.set_output_type(Target::BUNDLE_DATA);
35 bundle_data.sources().push_back(SourceFile("//foo/input1.txt")); 33 bundle_data.sources().push_back(SourceFile("//foo/input1.txt"));
36 bundle_data.sources().push_back(SourceFile("//foo/input2.txt")); 34 bundle_data.sources().push_back(SourceFile("//foo/input2.txt"));
37 bundle_data.action_values().outputs() = SubstitutionList::MakeForTest( 35 bundle_data.action_values().outputs() = SubstitutionList::MakeForTest(
38 "{{bundle_resources_dir}}/{{source_file_part}}"); 36 "{{bundle_resources_dir}}/{{source_file_part}}");
39 bundle_data.SetToolchain(setup.toolchain()); 37 bundle_data.SetToolchain(setup.toolchain());
40 bundle_data.visibility().SetPublic(); 38 bundle_data.visibility().SetPublic();
41 ASSERT_TRUE(bundle_data.OnResolved(&err)); 39 ASSERT_TRUE(bundle_data.OnResolved(&err));
(...skipping 21 matching lines...) Expand all
63 "bar.bundle/Contents/Resources/input1.txt " 61 "bar.bundle/Contents/Resources/input1.txt "
64 "bar.bundle/Contents/Resources/input2.txt\n" 62 "bar.bundle/Contents/Resources/input2.txt\n"
65 "build bar.bundle: phony obj/baz/bar.stamp\n"; 63 "build bar.bundle: phony obj/baz/bar.stamp\n";
66 std::string out_str = out.str(); 64 std::string out_str = out.str();
67 EXPECT_EQ(expected, out_str); 65 EXPECT_EQ(expected, out_str);
68 } 66 }
69 67
70 // Tests multiple files from asset catalog. 68 // Tests multiple files from asset catalog.
71 TEST(NinjaCreateBundleTargetWriter, AssetCatalog) { 69 TEST(NinjaCreateBundleTargetWriter, AssetCatalog) {
72 Err err; 70 Err err;
73
74 TestWithScope setup; 71 TestWithScope setup;
75 setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
76 72
77 Target bundle_data(setup.settings(), Label(SourceDir("//foo/"), "data")); 73 Target bundle_data(setup.settings(), Label(SourceDir("//foo/"), "data"));
78 bundle_data.set_output_type(Target::BUNDLE_DATA); 74 bundle_data.set_output_type(Target::BUNDLE_DATA);
79 bundle_data.sources().push_back( 75 bundle_data.sources().push_back(
80 SourceFile("//foo/Foo.xcassets/Contents.json")); 76 SourceFile("//foo/Foo.xcassets/Contents.json"));
81 bundle_data.sources().push_back( 77 bundle_data.sources().push_back(
82 SourceFile("//foo/Foo.xcassets/foo.imageset/Contents.json")); 78 SourceFile("//foo/Foo.xcassets/foo.imageset/Contents.json"));
83 bundle_data.sources().push_back( 79 bundle_data.sources().push_back(
84 SourceFile("//foo/Foo.xcassets/foo.imageset/FooIcon-29.png")); 80 SourceFile("//foo/Foo.xcassets/foo.imageset/FooIcon-29.png"));
85 bundle_data.sources().push_back( 81 bundle_data.sources().push_back(
(...skipping 27 matching lines...) Expand all
113 "bar.bundle/Contents/Resources/Assets.car\n" 109 "bar.bundle/Contents/Resources/Assets.car\n"
114 "build bar.bundle: phony obj/baz/bar.stamp\n"; 110 "build bar.bundle: phony obj/baz/bar.stamp\n";
115 std::string out_str = out.str(); 111 std::string out_str = out.str();
116 EXPECT_EQ(expected, out_str); 112 EXPECT_EQ(expected, out_str);
117 } 113 }
118 114
119 // Tests that the phony target for the top-level bundle directory is generated 115 // Tests that the phony target for the top-level bundle directory is generated
120 // correctly. 116 // correctly.
121 TEST(NinjaCreateBundleTargetWriter, PhonyTarget) { 117 TEST(NinjaCreateBundleTargetWriter, PhonyTarget) {
122 Err err; 118 Err err;
123
124 TestWithScope setup; 119 TestWithScope setup;
125 setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
126 120
127 Target create_bundle( 121 Target create_bundle(
128 setup.settings(), 122 setup.settings(),
129 Label(SourceDir("//baz/"), "bar", setup.toolchain()->label().dir(), 123 Label(SourceDir("//baz/"), "bar", setup.toolchain()->label().dir(),
130 setup.toolchain()->label().name())); 124 setup.toolchain()->label().name()));
131 SetupBundleDataDir(&create_bundle.bundle_data(), "//out/Debug"); 125 SetupBundleDataDir(&create_bundle.bundle_data(), "//out/Debug");
132 create_bundle.set_output_type(Target::CREATE_BUNDLE); 126 create_bundle.set_output_type(Target::CREATE_BUNDLE);
133 create_bundle.SetToolchain(setup.toolchain()); 127 create_bundle.SetToolchain(setup.toolchain());
134 ASSERT_TRUE(create_bundle.OnResolved(&err)); 128 ASSERT_TRUE(create_bundle.OnResolved(&err));
135 129
136 std::ostringstream out; 130 std::ostringstream out;
137 NinjaCreateBundleTargetWriter writer(&create_bundle, out); 131 NinjaCreateBundleTargetWriter writer(&create_bundle, out);
138 writer.Run(); 132 writer.Run();
139 133
140 const char expected[] = 134 const char expected[] =
141 "build obj/baz/bar.stamp: stamp\n" 135 "build obj/baz/bar.stamp: stamp\n"
142 "build bar.bundle: phony obj/baz/bar.stamp\n"; 136 "build bar.bundle: phony obj/baz/bar.stamp\n";
143 std::string out_str = out.str(); 137 std::string out_str = out.str();
144 EXPECT_EQ(expected, out_str); 138 EXPECT_EQ(expected, out_str);
145 } 139 }
146 140
147 // Tests complex target with multiple bundle_data sources, including 141 // Tests complex target with multiple bundle_data sources, including
148 // some asset catalog. 142 // some asset catalog.
149 TEST(NinjaCreateBundleTargetWriter, Complex) { 143 TEST(NinjaCreateBundleTargetWriter, Complex) {
150 Err err; 144 Err err;
151
152 TestWithScope setup; 145 TestWithScope setup;
153 setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
154 146
155 Target bundle_data0(setup.settings(), 147 Target bundle_data0(setup.settings(),
156 Label(SourceDir("//qux/"), "info_plist")); 148 Label(SourceDir("//qux/"), "info_plist"));
157 bundle_data0.set_output_type(Target::BUNDLE_DATA); 149 bundle_data0.set_output_type(Target::BUNDLE_DATA);
158 bundle_data0.sources().push_back(SourceFile("//qux/qux-Info.plist")); 150 bundle_data0.sources().push_back(SourceFile("//qux/qux-Info.plist"));
159 bundle_data0.action_values().outputs() = 151 bundle_data0.action_values().outputs() =
160 SubstitutionList::MakeForTest("{{bundle_root_dir}}/Info.plist"); 152 SubstitutionList::MakeForTest("{{bundle_root_dir}}/Info.plist");
161 bundle_data0.SetToolchain(setup.toolchain()); 153 bundle_data0.SetToolchain(setup.toolchain());
162 bundle_data0.visibility().SetPublic(); 154 bundle_data0.visibility().SetPublic();
163 ASSERT_TRUE(bundle_data0.OnResolved(&err)); 155 ASSERT_TRUE(bundle_data0.OnResolved(&err));
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 "bar.bundle/Contents/Resources/input2.txt " 236 "bar.bundle/Contents/Resources/input2.txt "
245 "bar.bundle/Contents/Resources/Assets.car\n" 237 "bar.bundle/Contents/Resources/Assets.car\n"
246 "build bar.bundle: phony obj/baz/bar.stamp\n"; 238 "build bar.bundle: phony obj/baz/bar.stamp\n";
247 std::string out_str = out.str(); 239 std::string out_str = out.str();
248 EXPECT_EQ(expected, out_str); 240 EXPECT_EQ(expected, out_str);
249 } 241 }
250 242
251 // Tests code signing steps. 243 // Tests code signing steps.
252 TEST(NinjaCreateBundleTargetWriter, CodeSigning) { 244 TEST(NinjaCreateBundleTargetWriter, CodeSigning) {
253 Err err; 245 Err err;
254
255 TestWithScope setup; 246 TestWithScope setup;
256 setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/"));
257 247
258 Target executable(setup.settings(), Label(SourceDir("//baz/"), "quz")); 248 Target executable(setup.settings(), Label(SourceDir("//baz/"), "quz"));
259 executable.set_output_type(Target::EXECUTABLE); 249 executable.set_output_type(Target::EXECUTABLE);
260 executable.sources().push_back(SourceFile("//baz/quz.c")); 250 executable.sources().push_back(SourceFile("//baz/quz.c"));
261 executable.SetToolchain(setup.toolchain()); 251 executable.SetToolchain(setup.toolchain());
262 executable.visibility().SetPublic(); 252 executable.visibility().SetPublic();
263 ASSERT_TRUE(executable.OnResolved(&err)); 253 ASSERT_TRUE(executable.OnResolved(&err));
264 254
265 Target bundle_data(setup.settings(), Label(SourceDir("//foo/"), "data")); 255 Target bundle_data(setup.settings(), Label(SourceDir("//foo/"), "data"));
266 bundle_data.set_output_type(Target::BUNDLE_DATA); 256 bundle_data.set_output_type(Target::BUNDLE_DATA);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 "build bar.bundle/Contents/quz bar.bundle/_CodeSignature/CodeResources: " 306 "build bar.bundle/Contents/quz bar.bundle/_CodeSignature/CodeResources: "
317 "__baz_bar___toolchain_default__code_signing_rule " 307 "__baz_bar___toolchain_default__code_signing_rule "
318 "| obj/baz/bar.codesigning.inputdeps.stamp\n" 308 "| obj/baz/bar.codesigning.inputdeps.stamp\n"
319 "build obj/baz/bar.stamp: stamp " 309 "build obj/baz/bar.stamp: stamp "
320 "bar.bundle/Contents/quz " 310 "bar.bundle/Contents/quz "
321 "bar.bundle/_CodeSignature/CodeResources\n" 311 "bar.bundle/_CodeSignature/CodeResources\n"
322 "build bar.bundle: phony obj/baz/bar.stamp\n"; 312 "build bar.bundle: phony obj/baz/bar.stamp\n";
323 std::string out_str = out.str(); 313 std::string out_str = out.str();
324 EXPECT_EQ(expected, out_str); 314 EXPECT_EQ(expected, out_str);
325 } 315 }
OLDNEW
« no previous file with comments | « tools/gn/ninja_copy_target_writer_unittest.cc ('k') | tools/gn/ninja_group_target_writer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698