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

Side by Side Diff: packages/barback/test/package_graph/group_test.dart

Issue 3014633002: Roll to pickup pool changes (Closed)
Patch Set: Created 3 years, 2 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 (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library barback.test.package_graph.group_test; 5 library barback.test.package_graph.group_test;
6 6
7 import 'dart:async';
8
9 import 'package:barback/barback.dart'; 7 import 'package:barback/barback.dart';
10 import 'package:scheduled_test/scheduled_test.dart'; 8 import 'package:scheduled_test/scheduled_test.dart';
11 9
12 import '../utils.dart'; 10 import '../utils.dart';
13 11
14 main() { 12 main() {
15 initConfig(); 13 initConfig();
16 test("runs transforms in a group", () { 14 test("runs transforms in a group", () {
17 initGraph(["app|foo.a"], {"app": [ 15 initGraph([
18 [new TransformerGroup([ 16 "app|foo.a"
19 [new RewriteTransformer("a", "b")], 17 ], {
20 [new RewriteTransformer("b", "c")] 18 "app": [
21 ])] 19 [
22 ]}); 20 new TransformerGroup([
21 [new RewriteTransformer("a", "b")],
22 [new RewriteTransformer("b", "c")]
23 ])
24 ]
25 ]
26 });
23 updateSources(["app|foo.a"]); 27 updateSources(["app|foo.a"]);
24 expectAsset("app|foo.c", "foo.b.c"); 28 expectAsset("app|foo.c", "foo.b.c");
25 buildShouldSucceed(); 29 buildShouldSucceed();
26 }); 30 });
27 31
28 test("passes the output of a group to the next phase", () { 32 test("passes the output of a group to the next phase", () {
29 initGraph(["app|foo.a"], {"app": [ 33 initGraph([
30 [new TransformerGroup([ 34 "app|foo.a"
31 [new RewriteTransformer("a", "b")], 35 ], {
32 [new RewriteTransformer("b", "c")] 36 "app": [
33 ])], 37 [
34 [new RewriteTransformer("c", "d")] 38 new TransformerGroup([
35 ]}); 39 [new RewriteTransformer("a", "b")],
40 [new RewriteTransformer("b", "c")]
41 ])
42 ],
43 [new RewriteTransformer("c", "d")]
44 ]
45 });
36 updateSources(["app|foo.a"]); 46 updateSources(["app|foo.a"]);
37 expectAsset("app|foo.d", "foo.b.c.d"); 47 expectAsset("app|foo.d", "foo.b.c.d");
38 buildShouldSucceed(); 48 buildShouldSucceed();
39 }); 49 });
40 50
41 test("passes the output of a previous phase to a group", () { 51 test("passes the output of a previous phase to a group", () {
42 initGraph(["app|foo.a"], {"app": [ 52 initGraph([
43 [new RewriteTransformer("a", "b")], 53 "app|foo.a"
44 [new TransformerGroup([ 54 ], {
45 [new RewriteTransformer("b", "c")], 55 "app": [
46 [new RewriteTransformer("c", "d")] 56 [new RewriteTransformer("a", "b")],
47 ])] 57 [
48 ]}); 58 new TransformerGroup([
59 [new RewriteTransformer("b", "c")],
60 [new RewriteTransformer("c", "d")]
61 ])
62 ]
63 ]
64 });
49 updateSources(["app|foo.a"]); 65 updateSources(["app|foo.a"]);
50 expectAsset("app|foo.d", "foo.b.c.d"); 66 expectAsset("app|foo.d", "foo.b.c.d");
51 buildShouldSucceed(); 67 buildShouldSucceed();
52 }); 68 });
53 69
54 test("intermediate assets in a group are usable as secondary inputs within " 70 test(
71 "intermediate assets in a group are usable as secondary inputs within "
55 "that group", () { 72 "that group", () {
56 initGraph({ 73 initGraph({
57 "app|foo.a": "contents", 74 "app|foo.a": "contents",
58 "app|bar.txt": "foo.inc" 75 "app|bar.txt": "foo.inc"
59 }, {"app": [ 76 }, {
60 [new TransformerGroup([ 77 "app": [
61 [new RewriteTransformer("a", "inc")], 78 [
62 [new ManyToOneTransformer("txt")] 79 new TransformerGroup([
63 ])] 80 [new RewriteTransformer("a", "inc")],
64 ]}); 81 [new ManyToOneTransformer("txt")]
82 ])
83 ]
84 ]
85 });
65 86
66 updateSources(["app|foo.a", "app|bar.txt"]); 87 updateSources(["app|foo.a", "app|bar.txt"]);
67 expectAsset("app|bar.out", "contents.inc"); 88 expectAsset("app|bar.out", "contents.inc");
68 buildShouldSucceed(); 89 buildShouldSucceed();
69 }); 90 });
70 91
71 test("groups can be nested", () { 92 test("groups can be nested", () {
72 initGraph(["app|foo.a", "app|bar.x"], {"app": [ 93 initGraph([
73 [new TransformerGroup([ 94 "app|foo.a",
74 [new TransformerGroup([ 95 "app|bar.x"
75 [new RewriteTransformer("a", "b")], 96 ], {
76 [new RewriteTransformer("b", "c")] 97 "app": [
77 ]), new TransformerGroup([ 98 [
78 [new RewriteTransformer("x", "y"), new RewriteTransformer("a", "y")], 99 new TransformerGroup([
79 [new RewriteTransformer("y", "z")] 100 [
80 ])], 101 new TransformerGroup([
81 [new RewriteTransformer("c", "d")] 102 [new RewriteTransformer("a", "b")],
82 ])] 103 [new RewriteTransformer("b", "c")]
83 ]}); 104 ]),
105 new TransformerGroup([
106 [
107 new RewriteTransformer("x", "y"),
108 new RewriteTransformer("a", "y")
109 ],
110 [new RewriteTransformer("y", "z")]
111 ])
112 ],
113 [new RewriteTransformer("c", "d")]
114 ])
115 ]
116 ]
117 });
84 updateSources(["app|foo.a", "app|bar.x"]); 118 updateSources(["app|foo.a", "app|bar.x"]);
85 expectAsset("app|foo.d", "foo.b.c.d"); 119 expectAsset("app|foo.d", "foo.b.c.d");
86 expectAsset("app|foo.z", "foo.y.z"); 120 expectAsset("app|foo.z", "foo.y.z");
87 expectAsset("app|bar.z", "bar.y.z"); 121 expectAsset("app|bar.z", "bar.y.z");
88 buildShouldSucceed(); 122 buildShouldSucceed();
89 }); 123 });
90 124
91 test("an updated asset is propagated through a group", () { 125 test("an updated asset is propagated through a group", () {
92 initGraph(["app|foo.a"], {"app": [ 126 initGraph([
93 [new TransformerGroup([ 127 "app|foo.a"
94 [new RewriteTransformer("a", "b")], 128 ], {
95 [new RewriteTransformer("b", "c")] 129 "app": [
96 ])] 130 [
97 ]}); 131 new TransformerGroup([
132 [new RewriteTransformer("a", "b")],
133 [new RewriteTransformer("b", "c")]
134 ])
135 ]
136 ]
137 });
98 138
99 updateSources(["app|foo.a"]); 139 updateSources(["app|foo.a"]);
100 expectAsset("app|foo.c", "foo.b.c"); 140 expectAsset("app|foo.c", "foo.b.c");
101 buildShouldSucceed(); 141 buildShouldSucceed();
102 142
103 modifyAsset("app|foo.a", "new foo"); 143 modifyAsset("app|foo.a", "new foo");
104 updateSources(["app|foo.a"]); 144 updateSources(["app|foo.a"]);
105 expectAsset("app|foo.c", "new foo.b.c"); 145 expectAsset("app|foo.c", "new foo.b.c");
106 buildShouldSucceed(); 146 buildShouldSucceed();
107 }); 147 });
108 148
109 test("an updated asset only runs the necessary transforms in a group", () { 149 test("an updated asset only runs the necessary transforms in a group", () {
110 var rewriteA = new RewriteTransformer("a", "b"); 150 var rewriteA = new RewriteTransformer("a", "b");
111 var rewriteX = new RewriteTransformer("x", "b"); 151 var rewriteX = new RewriteTransformer("x", "b");
112 initGraph(["app|foo.a", "app|bar.x"], {"app": [ 152 initGraph([
113 [new TransformerGroup([ 153 "app|foo.a",
114 [rewriteA, rewriteX], 154 "app|bar.x"
115 [new RewriteTransformer("b", "c")] 155 ], {
116 ])] 156 "app": [
117 ]}); 157 [
158 new TransformerGroup([
159 [rewriteA, rewriteX],
160 [new RewriteTransformer("b", "c")]
161 ])
162 ]
163 ]
164 });
118 165
119 updateSources(["app|foo.a", "app|bar.x"]); 166 updateSources(["app|foo.a", "app|bar.x"]);
120 expectAsset("app|foo.c", "foo.b.c"); 167 expectAsset("app|foo.c", "foo.b.c");
121 expectAsset("app|bar.c", "bar.b.c"); 168 expectAsset("app|bar.c", "bar.b.c");
122 buildShouldSucceed(); 169 buildShouldSucceed();
123 170
124 modifyAsset("app|foo.a", "new foo"); 171 modifyAsset("app|foo.a", "new foo");
125 updateSources(["app|foo.a"]); 172 updateSources(["app|foo.a"]);
126 expectAsset("app|foo.c", "new foo.b.c"); 173 expectAsset("app|foo.c", "new foo.b.c");
127 buildShouldSucceed(); 174 buildShouldSucceed();
128 175
129 expect(rewriteA.numRuns, completion(equals(2))); 176 expect(rewriteA.numRuns, completion(equals(2)));
130 expect(rewriteX.numRuns, completion(equals(1))); 177 expect(rewriteX.numRuns, completion(equals(1)));
131 }); 178 });
132 179
133 group("encapsulation", () { 180 group("encapsulation", () {
134 test("a group can't see a parallel transform's outputs", () { 181 test("a group can't see a parallel transform's outputs", () {
135 initGraph(["app|foo.x"], {"app": [[ 182 initGraph([
136 new TransformerGroup([ 183 "app|foo.x"
137 [new RewriteTransformer("a", "b")], 184 ], {
138 [new RewriteTransformer("b", "c")] 185 "app": [
139 ]), 186 [
140 new RewriteTransformer("x", "b") 187 new TransformerGroup([
141 ]]}); 188 [new RewriteTransformer("a", "b")],
189 [new RewriteTransformer("b", "c")]
190 ]),
191 new RewriteTransformer("x", "b")
192 ]
193 ]
194 });
142 updateSources(["app|foo.x"]); 195 updateSources(["app|foo.x"]);
143 expectAsset("app|foo.b", "foo.b"); 196 expectAsset("app|foo.b", "foo.b");
144 expectNoAsset("app|foo.c"); 197 expectNoAsset("app|foo.c");
145 buildShouldSucceed(); 198 buildShouldSucceed();
146 }); 199 });
147 200
148 test("a parallel transform can't see a group's outputs", () { 201 test("a parallel transform can't see a group's outputs", () {
149 initGraph(["app|foo.a"], {"app": [[ 202 initGraph([
150 new TransformerGroup([ 203 "app|foo.a"
151 [new RewriteTransformer("a", "b")], 204 ], {
152 [new RewriteTransformer("b", "c")] 205 "app": [
153 ]), 206 [
154 new RewriteTransformer("c", "z") 207 new TransformerGroup([
155 ]]}); 208 [new RewriteTransformer("a", "b")],
209 [new RewriteTransformer("b", "c")]
210 ]),
211 new RewriteTransformer("c", "z")
212 ]
213 ]
214 });
156 updateSources(["app|foo.a"]); 215 updateSources(["app|foo.a"]);
157 expectAsset("app|foo.c", "foo.b.c"); 216 expectAsset("app|foo.c", "foo.b.c");
158 expectNoAsset("app|foo.z"); 217 expectNoAsset("app|foo.z");
159 buildShouldSucceed(); 218 buildShouldSucceed();
160 }); 219 });
161 220
162 test("a parallel transform can't see a group's intermediate assets", () { 221 test("a parallel transform can't see a group's intermediate assets", () {
163 initGraph(["app|foo.a"], {"app": [[ 222 initGraph([
164 new TransformerGroup([ 223 "app|foo.a"
165 [new RewriteTransformer("a", "b")], 224 ], {
166 [new RewriteTransformer("b", "c")] 225 "app": [
167 ]), 226 [
168 new RewriteTransformer("b", "z") 227 new TransformerGroup([
169 ]]}); 228 [new RewriteTransformer("a", "b")],
229 [new RewriteTransformer("b", "c")]
230 ]),
231 new RewriteTransformer("b", "z")
232 ]
233 ]
234 });
170 updateSources(["app|foo.a"]); 235 updateSources(["app|foo.a"]);
171 expectAsset("app|foo.c", "foo.b.c"); 236 expectAsset("app|foo.c", "foo.b.c");
172 expectNoAsset("app|foo.z"); 237 expectNoAsset("app|foo.z");
173 buildShouldSucceed(); 238 buildShouldSucceed();
174 }); 239 });
175 240
176 test("parallel groups can't see one another's intermediate assets", () { 241 test("parallel groups can't see one another's intermediate assets", () {
177 initGraph(["app|foo.a", "app|bar.x"], {"app": [ 242 initGraph([
178 [new TransformerGroup([ 243 "app|foo.a",
179 [new RewriteTransformer("a", "b")], 244 "app|bar.x"
180 [new RewriteTransformer("b", "c")] 245 ], {
181 ]), new TransformerGroup([ 246 "app": [
182 [new RewriteTransformer("x", "b")], 247 [
183 [new RewriteTransformer("b", "z")] 248 new TransformerGroup([
184 ])] 249 [new RewriteTransformer("a", "b")],
185 ]}); 250 [new RewriteTransformer("b", "c")]
251 ]),
252 new TransformerGroup([
253 [new RewriteTransformer("x", "b")],
254 [new RewriteTransformer("b", "z")]
255 ])
256 ]
257 ]
258 });
186 updateSources(["app|foo.a", "app|bar.x"]); 259 updateSources(["app|foo.a", "app|bar.x"]);
187 expectAsset("app|foo.c", "foo.b.c"); 260 expectAsset("app|foo.c", "foo.b.c");
188 expectAsset("app|bar.z", "bar.b.z"); 261 expectAsset("app|bar.z", "bar.b.z");
189 expectNoAsset("app|foo.z"); 262 expectNoAsset("app|foo.z");
190 expectNoAsset("app|bar.c"); 263 expectNoAsset("app|bar.c");
191 buildShouldSucceed(); 264 buildShouldSucceed();
192 }); 265 });
193 266
194 test("parallel groups' intermediate assets can't collide", () { 267 test("parallel groups' intermediate assets can't collide", () {
195 initGraph(["app|foo.a", "app|foo.x"], {"app": [ 268 initGraph([
196 [new TransformerGroup([ 269 "app|foo.a",
197 [new RewriteTransformer("a", "b")], 270 "app|foo.x"
198 [new RewriteTransformer("b", "c")..consumePrimary = true] 271 ], {
199 ]), new TransformerGroup([ 272 "app": [
200 [new RewriteTransformer("x", "b")], 273 [
201 [new RewriteTransformer("b", "z")..consumePrimary = true] 274 new TransformerGroup([
202 ])] 275 [new RewriteTransformer("a", "b")],
203 ]}); 276 [new RewriteTransformer("b", "c")..consumePrimary = true]
277 ]),
278 new TransformerGroup([
279 [new RewriteTransformer("x", "b")],
280 [new RewriteTransformer("b", "z")..consumePrimary = true]
281 ])
282 ]
283 ]
284 });
204 updateSources(["app|foo.a", "app|foo.x"]); 285 updateSources(["app|foo.a", "app|foo.x"]);
205 expectAsset("app|foo.a"); 286 expectAsset("app|foo.a");
206 expectAsset("app|foo.x"); 287 expectAsset("app|foo.x");
207 expectAsset("app|foo.c", "foo.b.c"); 288 expectAsset("app|foo.c", "foo.b.c");
208 expectAsset("app|foo.z", "foo.b.z"); 289 expectAsset("app|foo.z", "foo.b.z");
209 buildShouldSucceed(); 290 buildShouldSucceed();
210 }); 291 });
211 }); 292 });
212 293
213 group("pass-through", () { 294 group("pass-through", () {
214 test("passes an unused input through a group", () { 295 test("passes an unused input through a group", () {
215 initGraph(["app|foo.x"], {"app": [ 296 initGraph([
216 [new TransformerGroup([ 297 "app|foo.x"
217 [new RewriteTransformer("a", "b")], 298 ], {
218 [new RewriteTransformer("b", "c")] 299 "app": [
219 ])] 300 [
220 ]}); 301 new TransformerGroup([
302 [new RewriteTransformer("a", "b")],
303 [new RewriteTransformer("b", "c")]
304 ])
305 ]
306 ]
307 });
221 updateSources(["app|foo.x"]); 308 updateSources(["app|foo.x"]);
222 expectNoAsset("app|foo.c"); 309 expectNoAsset("app|foo.c");
223 expectAsset("app|foo.x", "foo"); 310 expectAsset("app|foo.x", "foo");
224 buildShouldSucceed(); 311 buildShouldSucceed();
225 }); 312 });
226 313
227 test("passes non-overwritten inputs through a group", () { 314 test("passes non-overwritten inputs through a group", () {
228 initGraph(["app|foo.a"], {"app": [ 315 initGraph([
229 [new TransformerGroup([ 316 "app|foo.a"
230 [new RewriteTransformer("a", "b")], 317 ], {
231 [new RewriteTransformer("b", "c")] 318 "app": [
232 ])] 319 [
233 ]}); 320 new TransformerGroup([
321 [new RewriteTransformer("a", "b")],
322 [new RewriteTransformer("b", "c")]
323 ])
324 ]
325 ]
326 });
234 updateSources(["app|foo.a"]); 327 updateSources(["app|foo.a"]);
235 expectAsset("app|foo.a", "foo"); 328 expectAsset("app|foo.a", "foo");
236 expectAsset("app|foo.b", "foo.b"); 329 expectAsset("app|foo.b", "foo.b");
237 expectAsset("app|foo.c", "foo.b.c"); 330 expectAsset("app|foo.c", "foo.b.c");
238 buildShouldSucceed(); 331 buildShouldSucceed();
239 }); 332 });
240 333
241 test("passes an unused input through parallel groups", () { 334 test("passes an unused input through parallel groups", () {
242 initGraph(["app|foo.x"], {"app": [ 335 initGraph([
243 [new TransformerGroup([ 336 "app|foo.x"
244 [new RewriteTransformer("a", "b")], 337 ], {
245 [new RewriteTransformer("b", "c")] 338 "app": [
246 ]), new TransformerGroup([ 339 [
247 [new RewriteTransformer("1", "2")], 340 new TransformerGroup([
248 [new RewriteTransformer("2", "3")] 341 [new RewriteTransformer("a", "b")],
249 ])] 342 [new RewriteTransformer("b", "c")]
250 ]}); 343 ]),
344 new TransformerGroup([
345 [new RewriteTransformer("1", "2")],
346 [new RewriteTransformer("2", "3")]
347 ])
348 ]
349 ]
350 });
251 updateSources(["app|foo.x"]); 351 updateSources(["app|foo.x"]);
252 expectNoAsset("app|foo.c"); 352 expectNoAsset("app|foo.c");
253 expectNoAsset("app|foo.3"); 353 expectNoAsset("app|foo.3");
254 expectAsset("app|foo.x", "foo"); 354 expectAsset("app|foo.x", "foo");
255 buildShouldSucceed(); 355 buildShouldSucceed();
256 }); 356 });
257 357
258 test("passes an unused input through a group and a transform", () { 358 test("passes an unused input through a group and a transform", () {
259 initGraph(["app|foo.x"], {"app": [[ 359 initGraph([
260 new TransformerGroup([ 360 "app|foo.x"
261 [new RewriteTransformer("a", "b")], 361 ], {
262 [new RewriteTransformer("b", "c")] 362 "app": [
263 ]), 363 [
264 new RewriteTransformer("1", "2") 364 new TransformerGroup([
265 ]]}); 365 [new RewriteTransformer("a", "b")],
366 [new RewriteTransformer("b", "c")]
367 ]),
368 new RewriteTransformer("1", "2")
369 ]
370 ]
371 });
266 updateSources(["app|foo.x"]); 372 updateSources(["app|foo.x"]);
267 expectNoAsset("app|foo.c"); 373 expectNoAsset("app|foo.c");
268 expectNoAsset("app|foo.2"); 374 expectNoAsset("app|foo.2");
269 expectAsset("app|foo.x", "foo"); 375 expectAsset("app|foo.x", "foo");
270 buildShouldSucceed(); 376 buildShouldSucceed();
271 }); 377 });
272 378
273 test("doesn't pass through an input that's overwritten by a group but not " 379 test(
380 "doesn't pass through an input that's overwritten by a group but not "
274 "by transformers", () { 381 "by transformers", () {
275 initGraph(["app|foo.a"], {"app": [[ 382 initGraph([
276 new TransformerGroup([ 383 "app|foo.a"
277 [new RewriteTransformer("a", "a")], 384 ], {
278 ]), 385 "app": [
279 new RewriteTransformer("x", "y") 386 [
280 ]]}); 387 new TransformerGroup([
388 [new RewriteTransformer("a", "a")],
389 ]),
390 new RewriteTransformer("x", "y")
391 ]
392 ]
393 });
281 updateSources(["app|foo.a"]); 394 updateSources(["app|foo.a"]);
282 expectNoAsset("app|foo.y"); 395 expectNoAsset("app|foo.y");
283 expectAsset("app|foo.a", "foo.a"); 396 expectAsset("app|foo.a", "foo.a");
284 buildShouldSucceed(); 397 buildShouldSucceed();
285 }); 398 });
286 399
287 test("doesn't pass through an input that's overwritten by transformers but " 400 test(
401 "doesn't pass through an input that's overwritten by transformers but "
288 "not by a group", () { 402 "not by a group", () {
289 initGraph(["app|foo.x"], {"app": [[ 403 initGraph([
290 new TransformerGroup([ 404 "app|foo.x"
291 [new RewriteTransformer("a", "b")], 405 ], {
292 [new RewriteTransformer("b", "c")] 406 "app": [
293 ]), 407 [
294 new RewriteTransformer("x", "x") 408 new TransformerGroup([
295 ]]}); 409 [new RewriteTransformer("a", "b")],
410 [new RewriteTransformer("b", "c")]
411 ]),
412 new RewriteTransformer("x", "x")
413 ]
414 ]
415 });
296 updateSources(["app|foo.x"]); 416 updateSources(["app|foo.x"]);
297 expectNoAsset("app|foo.c"); 417 expectNoAsset("app|foo.c");
298 expectAsset("app|foo.x", "foo.x"); 418 expectAsset("app|foo.x", "foo.x");
299 buildShouldSucceed(); 419 buildShouldSucceed();
300 }); 420 });
301 421
302 test("doesn't pass through an input that's consumed by a group but not " 422 test(
423 "doesn't pass through an input that's consumed by a group but not "
303 "by transformers", () { 424 "by transformers", () {
304 initGraph(["app|foo.a"], {"app": [[ 425 initGraph([
305 new TransformerGroup([ 426 "app|foo.a"
306 [new RewriteTransformer("a", "b")..consumePrimary = true], 427 ], {
307 ]), 428 "app": [
308 new RewriteTransformer("x", "y") 429 [
309 ]]}); 430 new TransformerGroup([
431 [new RewriteTransformer("a", "b")..consumePrimary = true],
432 ]),
433 new RewriteTransformer("x", "y")
434 ]
435 ]
436 });
310 updateSources(["app|foo.a"]); 437 updateSources(["app|foo.a"]);
311 expectNoAsset("app|foo.a"); 438 expectNoAsset("app|foo.a");
312 expectAsset("app|foo.b", "foo.b"); 439 expectAsset("app|foo.b", "foo.b");
313 buildShouldSucceed(); 440 buildShouldSucceed();
314 }); 441 });
315 442
316 test("doesn't pass through an input that's consumed by transformers but " 443 test(
444 "doesn't pass through an input that's consumed by transformers but "
317 "not by a group", () { 445 "not by a group", () {
318 initGraph(["app|foo.x"], {"app": [[ 446 initGraph([
319 new TransformerGroup([ 447 "app|foo.x"
320 [new RewriteTransformer("a", "b")], 448 ], {
321 [new RewriteTransformer("b", "c")] 449 "app": [
322 ]), 450 [
323 new RewriteTransformer("x", "y")..consumePrimary = true 451 new TransformerGroup([
324 ]]}); 452 [new RewriteTransformer("a", "b")],
453 [new RewriteTransformer("b", "c")]
454 ]),
455 new RewriteTransformer("x", "y")..consumePrimary = true
456 ]
457 ]
458 });
325 updateSources(["app|foo.x"]); 459 updateSources(["app|foo.x"]);
326 expectNoAsset("app|foo.x"); 460 expectNoAsset("app|foo.x");
327 expectAsset("app|foo.y", "foo.y"); 461 expectAsset("app|foo.y", "foo.y");
328 buildShouldSucceed(); 462 buildShouldSucceed();
329 }); 463 });
330 464
331 test("doesn't detect a collision for an input that's modified in-place by " 465 test(
466 "doesn't detect a collision for an input that's modified in-place by "
332 "a transformer", () { 467 "a transformer", () {
333 initGraph(["app|foo.x"], {"app": [[ 468 initGraph([
334 new TransformerGroup([ 469 "app|foo.x"
335 [new RewriteTransformer("a", "b")], 470 ], {
336 [new RewriteTransformer("b", "c")] 471 "app": [
337 ]), 472 [
338 new RewriteTransformer("x", "x") 473 new TransformerGroup([
339 ]]}); 474 [new RewriteTransformer("a", "b")],
475 [new RewriteTransformer("b", "c")]
476 ]),
477 new RewriteTransformer("x", "x")
478 ]
479 ]
480 });
340 updateSources(["app|foo.x"]); 481 updateSources(["app|foo.x"]);
341 expectAsset("app|foo.x", "foo.x"); 482 expectAsset("app|foo.x", "foo.x");
342 buildShouldSucceed(); 483 buildShouldSucceed();
343 }); 484 });
344 485
345 test("doesn't detect a collision for an input that's modified in-place by " 486 test(
487 "doesn't detect a collision for an input that's modified in-place by "
346 "a group", () { 488 "a group", () {
347 initGraph(["app|foo.a"], {"app": [[ 489 initGraph([
348 new TransformerGroup([[new RewriteTransformer("a", "a")]]), 490 "app|foo.a"
349 new RewriteTransformer("x", "y") 491 ], {
350 ]]}); 492 "app": [
493 [
494 new TransformerGroup([
495 [new RewriteTransformer("a", "a")]
496 ]),
497 new RewriteTransformer("x", "y")
498 ]
499 ]
500 });
351 updateSources(["app|foo.a"]); 501 updateSources(["app|foo.a"]);
352 expectAsset("app|foo.a", "foo.a"); 502 expectAsset("app|foo.a", "foo.a");
353 buildShouldSucceed(); 503 buildShouldSucceed();
354 }); 504 });
355 }); 505 });
356 506
357 test("runs transforms in an added group", () { 507 test("runs transforms in an added group", () {
358 var rewrite = new RewriteTransformer("a", "z"); 508 var rewrite = new RewriteTransformer("a", "z");
359 initGraph(["app|foo.a"], {"app": [[rewrite]]}); 509 initGraph([
510 "app|foo.a"
511 ], {
512 "app": [
513 [rewrite]
514 ]
515 });
360 516
361 updateSources(["app|foo.a"]); 517 updateSources(["app|foo.a"]);
362 expectAsset("app|foo.z", "foo.z"); 518 expectAsset("app|foo.z", "foo.z");
363 buildShouldSucceed(); 519 buildShouldSucceed();
364 520
365 updateTransformers("app", [[ 521 updateTransformers("app", [
366 rewrite, 522 [
367 new TransformerGroup([ 523 rewrite,
368 [new RewriteTransformer("a", "b")], 524 new TransformerGroup([
369 [new RewriteTransformer("b", "c")] 525 [new RewriteTransformer("a", "b")],
370 ]) 526 [new RewriteTransformer("b", "c")]
371 ]]); 527 ])
528 ]
529 ]);
372 expectAsset("app|foo.z", "foo.z"); 530 expectAsset("app|foo.z", "foo.z");
373 expectAsset("app|foo.c", "foo.b.c"); 531 expectAsset("app|foo.c", "foo.b.c");
374 buildShouldSucceed(); 532 buildShouldSucceed();
375 }); 533 });
376 534
377 test("doesn't re-run transforms in a re-added group", () { 535 test("doesn't re-run transforms in a re-added group", () {
378 var rewrite1 = new RewriteTransformer("a", "b"); 536 var rewrite1 = new RewriteTransformer("a", "b");
379 var rewrite2 = new RewriteTransformer("b", "c"); 537 var rewrite2 = new RewriteTransformer("b", "c");
380 var group = new TransformerGroup([[rewrite1], [rewrite2]]); 538 var group = new TransformerGroup([
381 initGraph(["app|foo.a"], {"app": [[group]]}); 539 [rewrite1],
540 [rewrite2]
541 ]);
542 initGraph([
543 "app|foo.a"
544 ], {
545 "app": [
546 [group]
547 ]
548 });
382 549
383 updateSources(["app|foo.a"]); 550 updateSources(["app|foo.a"]);
384 expectAsset("app|foo.c", "foo.b.c"); 551 expectAsset("app|foo.c", "foo.b.c");
385 buildShouldSucceed(); 552 buildShouldSucceed();
386 553
387 updateTransformers("app", [ 554 updateTransformers("app", [
388 [group, new RewriteTransformer("a", "z")] 555 [group, new RewriteTransformer("a", "z")]
389 ]); 556 ]);
390 expectAsset("app|foo.c", "foo.b.c"); 557 expectAsset("app|foo.c", "foo.b.c");
391 expectAsset("app|foo.z", "foo.z"); 558 expectAsset("app|foo.z", "foo.z");
392 buildShouldSucceed(); 559 buildShouldSucceed();
393 560
394 expect(rewrite1.numRuns, completion(equals(1))); 561 expect(rewrite1.numRuns, completion(equals(1)));
395 expect(rewrite2.numRuns, completion(equals(1))); 562 expect(rewrite2.numRuns, completion(equals(1)));
396 }); 563 });
397 564
398 test("doesn't run transforms in a removed group", () { 565 test("doesn't run transforms in a removed group", () {
399 var rewrite1 = new RewriteTransformer("a", "b"); 566 var rewrite1 = new RewriteTransformer("a", "b");
400 var rewrite2 = new RewriteTransformer("b", "c"); 567 var rewrite2 = new RewriteTransformer("b", "c");
401 var group = new TransformerGroup([[rewrite1], [rewrite2]]); 568 var group = new TransformerGroup([
402 initGraph(["app|foo.a"], {"app": [[group]]}); 569 [rewrite1],
570 [rewrite2]
571 ]);
572 initGraph([
573 "app|foo.a"
574 ], {
575 "app": [
576 [group]
577 ]
578 });
403 579
404 updateSources(["app|foo.a"]); 580 updateSources(["app|foo.a"]);
405 expectAsset("app|foo.c", "foo.b.c"); 581 expectAsset("app|foo.c", "foo.b.c");
406 buildShouldSucceed(); 582 buildShouldSucceed();
407 583
408 updateTransformers("app", []); 584 updateTransformers("app", []);
409 expectNoAsset("app|foo.c"); 585 expectNoAsset("app|foo.c");
410 buildShouldSucceed(); 586 buildShouldSucceed();
411 }); 587 });
412 588
413 test("doesn't pass through an input that's overwritten by an added group", 589 test("doesn't pass through an input that's overwritten by an added group",
414 () { 590 () {
415 var rewrite = new RewriteTransformer("x", "z"); 591 var rewrite = new RewriteTransformer("x", "z");
416 initGraph(["app|foo.a"], {"app": [[rewrite]]}); 592 initGraph([
593 "app|foo.a"
594 ], {
595 "app": [
596 [rewrite]
597 ]
598 });
417 599
418 updateSources(["app|foo.a"]); 600 updateSources(["app|foo.a"]);
419 expectAsset("app|foo.a", "foo"); 601 expectAsset("app|foo.a", "foo");
420 buildShouldSucceed(); 602 buildShouldSucceed();
421 603
422 updateTransformers("app", [ 604 updateTransformers("app", [
423 [rewrite, new TransformerGroup([[new RewriteTransformer("a", "a")]])] 605 [
606 rewrite,
607 new TransformerGroup([
608 [new RewriteTransformer("a", "a")]
609 ])
610 ]
424 ]); 611 ]);
425 expectAsset("app|foo.a", "foo.a"); 612 expectAsset("app|foo.a", "foo.a");
426 buildShouldSucceed(); 613 buildShouldSucceed();
427 }); 614 });
428 615
429 // TODO(nweiz): make the collision error message nice 616 // TODO(nweiz): make the collision error message nice
430 test("reports collisions within a group", () { 617 test("reports collisions within a group", () {
431 initGraph(["app|foo.a", "app|foo.x"], {"app": [ 618 initGraph([
432 [new TransformerGroup([ 619 "app|foo.a",
433 [new RewriteTransformer("a", "b")], 620 "app|foo.x"
434 [new RewriteTransformer("x", "b")] 621 ], {
435 ])] 622 "app": [
436 ]}); 623 [
624 new TransformerGroup([
625 [new RewriteTransformer("a", "b")],
626 [new RewriteTransformer("x", "b")]
627 ])
628 ]
629 ]
630 });
437 updateSources(["app|foo.a", "app|foo.x"]); 631 updateSources(["app|foo.a", "app|foo.x"]);
438 buildShouldFail([isAssetCollisionException("app|foo.b")]); 632 buildShouldFail([isAssetCollisionException("app|foo.b")]);
439 }); 633 });
440 634
441 test("reports collisions between a group and a non-grouped transform", () { 635 test("reports collisions between a group and a non-grouped transform", () {
442 initGraph(["app|foo.a", "app|foo.x"], {"app": [[ 636 initGraph([
443 new TransformerGroup([ 637 "app|foo.a",
444 [new RewriteTransformer("a", "b")], 638 "app|foo.x"
445 [new RewriteTransformer("b", "c")] 639 ], {
446 ]), 640 "app": [
447 new RewriteTransformer("x", "c") 641 [
448 ]]}); 642 new TransformerGroup([
643 [new RewriteTransformer("a", "b")],
644 [new RewriteTransformer("b", "c")]
645 ]),
646 new RewriteTransformer("x", "c")
647 ]
648 ]
649 });
449 updateSources(["app|foo.a", "app|foo.x"]); 650 updateSources(["app|foo.a", "app|foo.x"]);
450 buildShouldFail([isAssetCollisionException("app|foo.c")]); 651 buildShouldFail([isAssetCollisionException("app|foo.c")]);
451 }); 652 });
452 653
453 // Regression test for issue 18872. 654 // Regression test for issue 18872.
454 test("a multi-phase group's outputs should be visible as secondary inputs " 655 test(
656 "a multi-phase group's outputs should be visible as secondary inputs "
455 "for a following group", () { 657 "for a following group", () {
456 initGraph({ 658 initGraph({
457 "app|foo.txt": "bar.c", 659 "app|foo.txt": "bar.c",
458 "app|bar.a": "bar" 660 "app|bar.a": "bar"
459 }, {"app": [ 661 }, {
460 [new TransformerGroup([ 662 "app": [
461 [new RewriteTransformer("a", "b")], 663 [
462 [new RewriteTransformer("b", "c")] 664 new TransformerGroup([
463 ])], 665 [new RewriteTransformer("a", "b")],
464 [new TransformerGroup([ 666 [new RewriteTransformer("b", "c")]
465 [new ManyToOneTransformer("txt")] 667 ])
466 ])] 668 ],
467 ]}); 669 [
670 new TransformerGroup([
671 [new ManyToOneTransformer("txt")]
672 ])
673 ]
674 ]
675 });
468 676
469 updateSources(["app|foo.txt", "app|bar.a"]); 677 updateSources(["app|foo.txt", "app|bar.a"]);
470 expectAsset("app|foo.out", "bar.b.c"); 678 expectAsset("app|foo.out", "bar.b.c");
471 buildShouldSucceed(); 679 buildShouldSucceed();
472 }); 680 });
473 } 681 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698