OLD | NEW |
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" |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 writer.Run(); | 48 writer.Run(); |
49 | 49 |
50 const char expected[] = | 50 const char expected[] = |
51 "build bar.bundle/Resources/input1.txt: copy_bundle_data " | 51 "build bar.bundle/Resources/input1.txt: copy_bundle_data " |
52 "../../foo/input1.txt\n" | 52 "../../foo/input1.txt\n" |
53 "build bar.bundle/Resources/input2.txt: copy_bundle_data " | 53 "build bar.bundle/Resources/input2.txt: copy_bundle_data " |
54 "../../foo/input2.txt\n" | 54 "../../foo/input2.txt\n" |
55 "\n" | 55 "\n" |
56 "build obj/baz/bar.stamp: stamp " | 56 "build obj/baz/bar.stamp: stamp " |
57 "bar.bundle/Resources/input1.txt " | 57 "bar.bundle/Resources/input1.txt " |
58 "bar.bundle/Resources/input2.txt\n"; | 58 "bar.bundle/Resources/input2.txt\n" |
| 59 "build bar.bundle: phony obj/baz/bar.stamp\n"; |
59 std::string out_str = out.str(); | 60 std::string out_str = out.str(); |
60 EXPECT_EQ(expected, out_str); | 61 EXPECT_EQ(expected, out_str); |
61 } | 62 } |
62 | 63 |
63 // Tests multiple files from asset catalog. | 64 // Tests multiple files from asset catalog. |
64 TEST(NinjaCreateBundleTargetWriter, AssetCatalog) { | 65 TEST(NinjaCreateBundleTargetWriter, AssetCatalog) { |
65 TestWithScope setup; | 66 TestWithScope setup; |
66 Err err; | 67 Err err; |
67 | 68 |
68 setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/")); | 69 setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/")); |
(...skipping 21 matching lines...) Expand all Loading... |
90 writer.Run(); | 91 writer.Run(); |
91 | 92 |
92 const char expected[] = | 93 const char expected[] = |
93 "build bar.bundle/Resources/Assets.car: compile_xcassets " | 94 "build bar.bundle/Resources/Assets.car: compile_xcassets " |
94 "../../foo/Foo.xcassets | " | 95 "../../foo/Foo.xcassets | " |
95 "../../foo/Foo.xcassets/foo.imageset/Contents.json " | 96 "../../foo/Foo.xcassets/foo.imageset/Contents.json " |
96 "../../foo/Foo.xcassets/foo.imageset/FooIcon-29.png " | 97 "../../foo/Foo.xcassets/foo.imageset/FooIcon-29.png " |
97 "../../foo/Foo.xcassets/foo.imageset/FooIcon-29@2x.png " | 98 "../../foo/Foo.xcassets/foo.imageset/FooIcon-29@2x.png " |
98 "../../foo/Foo.xcassets/foo.imageset/FooIcon-29@3x.png\n" | 99 "../../foo/Foo.xcassets/foo.imageset/FooIcon-29@3x.png\n" |
99 "\n" | 100 "\n" |
100 "build obj/baz/bar.stamp: stamp bar.bundle/Resources/Assets.car\n"; | 101 "build obj/baz/bar.stamp: stamp bar.bundle/Resources/Assets.car\n" |
| 102 "build bar.bundle: phony obj/baz/bar.stamp\n"; |
101 std::string out_str = out.str(); | 103 std::string out_str = out.str(); |
102 EXPECT_EQ(expected, out_str); | 104 EXPECT_EQ(expected, out_str); |
103 } | 105 } |
| 106 |
| 107 // Tests that the phony target for the top-level bundle directory is generated |
| 108 // correctly. |
| 109 TEST(NinjaCreateBundleTargetWriter, BundleRootDirOutput) { |
| 110 TestWithScope setup; |
| 111 Err err; |
| 112 |
| 113 setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/")); |
| 114 Target target(setup.settings(), Label(SourceDir("//baz/"), "bar")); |
| 115 target.set_output_type(Target::CREATE_BUNDLE); |
| 116 |
| 117 const std::string bundle_root_dir("//out/Debug/bar.bundle/Contents"); |
| 118 target.bundle_data().root_dir().assign(bundle_root_dir); |
| 119 target.bundle_data().resources_dir().assign(bundle_root_dir + "/Resources"); |
| 120 target.bundle_data().executable_dir().assign(bundle_root_dir + "/MacOS"); |
| 121 target.bundle_data().plugins_dir().assign(bundle_root_dir + "/Plug Ins"); |
| 122 |
| 123 std::vector<SourceFile> sources; |
| 124 sources.push_back(SourceFile("//foo/input1.txt")); |
| 125 sources.push_back(SourceFile("//foo/input2.txt")); |
| 126 target.bundle_data().file_rules().push_back(BundleFileRule( |
| 127 sources, SubstitutionPattern::MakeForTest( |
| 128 "{{bundle_resources_dir}}/{{source_file_part}}"))); |
| 129 |
| 130 target.SetToolchain(setup.toolchain()); |
| 131 ASSERT_TRUE(target.OnResolved(&err)); |
| 132 |
| 133 std::ostringstream out; |
| 134 NinjaCreateBundleTargetWriter writer(&target, out); |
| 135 writer.Run(); |
| 136 |
| 137 const char expected[] = |
| 138 "build bar.bundle/Contents/Resources/input1.txt: copy_bundle_data " |
| 139 "../../foo/input1.txt\n" |
| 140 "build bar.bundle/Contents/Resources/input2.txt: copy_bundle_data " |
| 141 "../../foo/input2.txt\n" |
| 142 "\n" |
| 143 "build obj/baz/bar.stamp: stamp " |
| 144 "bar.bundle/Contents/Resources/input1.txt " |
| 145 "bar.bundle/Contents/Resources/input2.txt\n" |
| 146 "build bar.bundle: phony obj/baz/bar.stamp\n"; |
| 147 std::string out_str = out.str(); |
| 148 EXPECT_EQ(expected, out_str); |
| 149 } |
104 | 150 |
105 // Tests complex target with multiple bundle_data sources, including | 151 // Tests complex target with multiple bundle_data sources, including |
106 // some asset catalog. | 152 // some asset catalog. |
107 TEST(NinjaCreateBundleTargetWriter, OrderOnlyDeps) { | 153 TEST(NinjaCreateBundleTargetWriter, OrderOnlyDeps) { |
108 TestWithScope setup; | 154 TestWithScope setup; |
109 Err err; | 155 Err err; |
110 | 156 |
111 setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/")); | 157 setup.build_settings()->SetBuildDir(SourceDir("//out/Debug/")); |
112 Target target(setup.settings(), Label(SourceDir("//baz/"), "bar")); | 158 Target target(setup.settings(), Label(SourceDir("//baz/"), "bar")); |
113 target.set_output_type(Target::CREATE_BUNDLE); | 159 target.set_output_type(Target::CREATE_BUNDLE); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 "../../foo/Foo.xcassets | " | 206 "../../foo/Foo.xcassets | " |
161 "../../foo/Foo.xcassets/foo.imageset/Contents.json " | 207 "../../foo/Foo.xcassets/foo.imageset/Contents.json " |
162 "../../foo/Foo.xcassets/foo.imageset/FooIcon-29.png " | 208 "../../foo/Foo.xcassets/foo.imageset/FooIcon-29.png " |
163 "../../foo/Foo.xcassets/foo.imageset/FooIcon-29@2x.png " | 209 "../../foo/Foo.xcassets/foo.imageset/FooIcon-29@2x.png " |
164 "../../foo/Foo.xcassets/foo.imageset/FooIcon-29@3x.png\n" | 210 "../../foo/Foo.xcassets/foo.imageset/FooIcon-29@3x.png\n" |
165 "\n" | 211 "\n" |
166 "build obj/baz/bar.stamp: stamp " | 212 "build obj/baz/bar.stamp: stamp " |
167 "bar.bundle/Resources/input1.txt " | 213 "bar.bundle/Resources/input1.txt " |
168 "bar.bundle/Resources/input2.txt " | 214 "bar.bundle/Resources/input2.txt " |
169 "bar.bundle/Info.plist " | 215 "bar.bundle/Info.plist " |
170 "bar.bundle/Resources/Assets.car\n"; | 216 "bar.bundle/Resources/Assets.car\n" |
| 217 "build bar.bundle: phony obj/baz/bar.stamp\n"; |
171 std::string out_str = out.str(); | 218 std::string out_str = out.str(); |
172 EXPECT_EQ(expected, out_str); | 219 EXPECT_EQ(expected, out_str); |
173 } | 220 } |
OLD | NEW |