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

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

Issue 3015713002: Roll to pickup pool changes
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.transform_test; 5 library barback.test.package_graph.transform_test;
6 6
7 import 'package:barback/src/utils.dart'; 7 import 'package:barback/src/utils.dart';
8 import 'package:scheduled_test/scheduled_test.dart'; 8 import 'package:scheduled_test/scheduled_test.dart';
9 9
10 import '../utils.dart'; 10 import '../utils.dart';
11 11
12 main() { 12 main() {
13 initConfig(); 13 initConfig();
14 test("a new transformer is applied to a matching asset", () { 14 test("a new transformer is applied to a matching asset", () {
15 initGraph(["app|foo.blub"]); 15 initGraph(["app|foo.blub"]);
16 16
17 updateSources(["app|foo.blub"]); 17 updateSources(["app|foo.blub"]);
18 expectAsset("app|foo.blub", "foo"); 18 expectAsset("app|foo.blub", "foo");
19 buildShouldSucceed(); 19 buildShouldSucceed();
20 20
21 updateTransformers("app", [[new RewriteTransformer("blub", "blab")]]); 21 updateTransformers("app", [
22 [new RewriteTransformer("blub", "blab")]
23 ]);
22 expectAsset("app|foo.blab", "foo.blab"); 24 expectAsset("app|foo.blab", "foo.blab");
23 buildShouldSucceed(); 25 buildShouldSucceed();
24 }); 26 });
25 27
26 test("a new transformer is not applied to a non-matching asset", () { 28 test("a new transformer is not applied to a non-matching asset", () {
27 initGraph(["app|foo.blub"]); 29 initGraph(["app|foo.blub"]);
28 30
29 updateSources(["app|foo.blub"]); 31 updateSources(["app|foo.blub"]);
30 expectAsset("app|foo.blub", "foo"); 32 expectAsset("app|foo.blub", "foo");
31 buildShouldSucceed(); 33 buildShouldSucceed();
32 34
33 updateTransformers("app", [[new RewriteTransformer("zip", "zap")]]); 35 updateTransformers("app", [
36 [new RewriteTransformer("zip", "zap")]
37 ]);
34 expectAsset("app|foo.blub", "foo"); 38 expectAsset("app|foo.blub", "foo");
35 expectNoAsset("app|foo.zap"); 39 expectNoAsset("app|foo.zap");
36 buildShouldSucceed(); 40 buildShouldSucceed();
37 }); 41 });
38 42
39 test("updateTransformers doesn't re-run an old transformer", () { 43 test("updateTransformers doesn't re-run an old transformer", () {
40 var rewrite = new RewriteTransformer("blub", "blab"); 44 var rewrite = new RewriteTransformer("blub", "blab");
41 initGraph(["app|foo.blub"], {"app": [[rewrite]]}); 45 initGraph([
46 "app|foo.blub"
47 ], {
48 "app": [
49 [rewrite]
50 ]
51 });
42 52
43 updateSources(["app|foo.blub"]); 53 updateSources(["app|foo.blub"]);
44 expectAsset("app|foo.blab", "foo.blab"); 54 expectAsset("app|foo.blab", "foo.blab");
45 buildShouldSucceed(); 55 buildShouldSucceed();
46 56
47 updateTransformers("app", [[rewrite]]); 57 updateTransformers("app", [
58 [rewrite]
59 ]);
48 expectAsset("app|foo.blab", "foo.blab"); 60 expectAsset("app|foo.blab", "foo.blab");
49 buildShouldSucceed(); 61 buildShouldSucceed();
50 62
51 expect(rewrite.numRuns, completion(equals(1))); 63 expect(rewrite.numRuns, completion(equals(1)));
52 }); 64 });
53 65
54 test("updateTransformers re-runs old transformers in a new phase", () { 66 test("updateTransformers re-runs old transformers in a new phase", () {
55 var rewrite1 = new RewriteTransformer("txt", "blub"); 67 var rewrite1 = new RewriteTransformer("txt", "blub");
56 var rewrite2 = new RewriteTransformer("blub", "blab"); 68 var rewrite2 = new RewriteTransformer("blub", "blab");
57 initGraph(["app|foo.txt"], {"app": [[rewrite1], [rewrite2]]}); 69 initGraph([
70 "app|foo.txt"
71 ], {
72 "app": [
73 [rewrite1],
74 [rewrite2]
75 ]
76 });
58 77
59 updateSources(["app|foo.txt"]); 78 updateSources(["app|foo.txt"]);
60 expectAsset("app|foo.blab", "foo.blub.blab"); 79 expectAsset("app|foo.blab", "foo.blub.blab");
61 buildShouldSucceed(); 80 buildShouldSucceed();
62 81
63 updateTransformers("app", [[rewrite2], [rewrite1]]); 82 updateTransformers("app", [
83 [rewrite2],
84 [rewrite1]
85 ]);
64 expectAsset("app|foo.blub", "foo.blub"); 86 expectAsset("app|foo.blub", "foo.blub");
65 expectNoAsset("app|foo.blab"); 87 expectNoAsset("app|foo.blab");
66 buildShouldSucceed(); 88 buildShouldSucceed();
67 }); 89 });
68 90
69 test("updateTransformers re-runs an old transformer when a previous phase " 91 test(
92 "updateTransformers re-runs an old transformer when a previous phase "
70 "changes", () { 93 "changes", () {
71 var rewrite = new RewriteTransformer("txt", "out"); 94 var rewrite = new RewriteTransformer("txt", "out");
72 initGraph(["app|foo.txt"], {"app": [[], [rewrite]]}); 95 initGraph([
96 "app|foo.txt"
97 ], {
98 "app": [
99 [],
100 [rewrite]
101 ]
102 });
73 103
74 updateSources(["app|foo.txt"]); 104 updateSources(["app|foo.txt"]);
75 expectAsset("app|foo.out", "foo.out"); 105 expectAsset("app|foo.out", "foo.out");
76 buildShouldSucceed(); 106 buildShouldSucceed();
77 107
78 updateTransformers("app", [ 108 updateTransformers("app", [
79 [new RewriteTransformer("txt", "txt")], 109 [new RewriteTransformer("txt", "txt")],
80 [rewrite] 110 [rewrite]
81 ]); 111 ]);
82 expectAsset("app|foo.out", "foo.txt.out"); 112 expectAsset("app|foo.out", "foo.txt.out");
83 buildShouldSucceed(); 113 buildShouldSucceed();
84 }); 114 });
85 115
86 test("a removed transformer is no longer applied", () { 116 test("a removed transformer is no longer applied", () {
87 initGraph(["app|foo.blub"], {"app": [ 117 initGraph([
88 [new RewriteTransformer("blub", "blab")] 118 "app|foo.blub"
89 ]}); 119 ], {
120 "app": [
121 [new RewriteTransformer("blub", "blab")]
122 ]
123 });
90 124
91 updateSources(["app|foo.blub"]); 125 updateSources(["app|foo.blub"]);
92 expectAsset("app|foo.blab", "foo.blab"); 126 expectAsset("app|foo.blab", "foo.blab");
93 buildShouldSucceed(); 127 buildShouldSucceed();
94 128
95 updateTransformers("app", []); 129 updateTransformers("app", []);
96 expectAsset("app|foo.blub", "foo"); 130 expectAsset("app|foo.blub", "foo");
97 expectNoAsset("app|foo.blab"); 131 expectNoAsset("app|foo.blab");
98 buildShouldSucceed(); 132 buildShouldSucceed();
99 }); 133 });
100 134
101 test("a new transformer is pipelined", () { 135 test("a new transformer is pipelined", () {
102 var rewrite1 = new RewriteTransformer("source", "phase1"); 136 var rewrite1 = new RewriteTransformer("source", "phase1");
103 var rewrite3 = new RewriteTransformer("phase2", "phase3"); 137 var rewrite3 = new RewriteTransformer("phase2", "phase3");
104 initGraph(["app|foo.source"], {"app": [ 138 initGraph([
105 [rewrite1], 139 "app|foo.source"
106 [rewrite3] 140 ], {
107 ]}); 141 "app": [
142 [rewrite1],
143 [rewrite3]
144 ]
145 });
108 146
109 updateSources(["app|foo.source"]); 147 updateSources(["app|foo.source"]);
110 expectNoAsset("app|foo.phase3"); 148 expectNoAsset("app|foo.phase3");
111 buildShouldSucceed(); 149 buildShouldSucceed();
112 150
113 updateTransformers("app", [ 151 updateTransformers("app", [
114 [rewrite1], 152 [rewrite1],
115 [new RewriteTransformer("phase1", "phase2")], 153 [new RewriteTransformer("phase1", "phase2")],
116 [rewrite3] 154 [rewrite3]
117 ]); 155 ]);
118 expectAsset("app|foo.phase3", "foo.phase1.phase2.phase3"); 156 expectAsset("app|foo.phase3", "foo.phase1.phase2.phase3");
119 buildShouldSucceed(); 157 buildShouldSucceed();
120 }); 158 });
121 159
122 test("a removed transformer is un-pipelined", () { 160 test("a removed transformer is un-pipelined", () {
123 var rewrite1 = new RewriteTransformer("source", "phase1"); 161 var rewrite1 = new RewriteTransformer("source", "phase1");
124 var rewrite3 = new RewriteTransformer("phase2", "phase3"); 162 var rewrite3 = new RewriteTransformer("phase2", "phase3");
125 initGraph(["app|foo.source"], {"app": [ 163 initGraph([
126 [rewrite1], 164 "app|foo.source"
127 [new RewriteTransformer("phase1", "phase2")], 165 ], {
128 [rewrite3] 166 "app": [
129 ]}); 167 [rewrite1],
168 [new RewriteTransformer("phase1", "phase2")],
169 [rewrite3]
170 ]
171 });
130 172
131 updateSources(["app|foo.source"]); 173 updateSources(["app|foo.source"]);
132 expectAsset("app|foo.phase3", "foo.phase1.phase2.phase3"); 174 expectAsset("app|foo.phase3", "foo.phase1.phase2.phase3");
133 buildShouldSucceed(); 175 buildShouldSucceed();
134 176
135 updateTransformers("app", [[rewrite1], [rewrite3]]); 177 updateTransformers("app", [
178 [rewrite1],
179 [rewrite3]
180 ]);
136 expectNoAsset("app|foo.phase3"); 181 expectNoAsset("app|foo.phase3");
137 buildShouldSucceed(); 182 buildShouldSucceed();
138 }); 183 });
139 184
140 test("a transformer is removed during isPrimary", () { 185 test("a transformer is removed during isPrimary", () {
141 var rewrite = new RewriteTransformer("blub", "blab"); 186 var rewrite = new RewriteTransformer("blub", "blab");
142 initGraph(["app|foo.blub"], {"app": [[rewrite]]}); 187 initGraph([
188 "app|foo.blub"
189 ], {
190 "app": [
191 [rewrite]
192 ]
193 });
143 194
144 rewrite.pauseIsPrimary("app|foo.blub"); 195 rewrite.pauseIsPrimary("app|foo.blub");
145 updateSources(["app|foo.blub"]); 196 updateSources(["app|foo.blub"]);
146 // Ensure we're waiting on [rewrite.isPrimary]. 197 // Ensure we're waiting on [rewrite.isPrimary].
147 schedule(pumpEventQueue); 198 schedule(pumpEventQueue);
148 199
149 updateTransformers("app", []); 200 updateTransformers("app", []);
150 rewrite.resumeIsPrimary("app|foo.blub"); 201 rewrite.resumeIsPrimary("app|foo.blub");
151 expectAsset("app|foo.blub", "foo"); 202 expectAsset("app|foo.blub", "foo");
152 expectNoAsset("app|foo.blab"); 203 expectNoAsset("app|foo.blab");
153 buildShouldSucceed(); 204 buildShouldSucceed();
154 }); 205 });
155 206
156 test("a transformer is removed during apply", () { 207 test("a transformer is removed during apply", () {
157 var rewrite = new RewriteTransformer("blub", "blab"); 208 var rewrite = new RewriteTransformer("blub", "blab");
158 initGraph(["app|foo.blub"], {"app": [[rewrite]]}); 209 initGraph([
210 "app|foo.blub"
211 ], {
212 "app": [
213 [rewrite]
214 ]
215 });
159 216
160 rewrite.pauseApply(); 217 rewrite.pauseApply();
161 updateSources(["app|foo.blub"]); 218 updateSources(["app|foo.blub"]);
162 // Ensure we're waiting on [rewrite.apply]. 219 // Ensure we're waiting on [rewrite.apply].
163 schedule(pumpEventQueue); 220 schedule(pumpEventQueue);
164 221
165 updateTransformers("app", []); 222 updateTransformers("app", []);
166 rewrite.resumeApply(); 223 rewrite.resumeApply();
167 expectAsset("app|foo.blub", "foo"); 224 expectAsset("app|foo.blub", "foo");
168 expectNoAsset("app|foo.blab"); 225 expectNoAsset("app|foo.blab");
169 buildShouldSucceed(); 226 buildShouldSucceed();
170 }); 227 });
171 228
172 test("a transformer is added to an existing phase during isPrimary", () { 229 test("a transformer is added to an existing phase during isPrimary", () {
173 var rewrite = new RewriteTransformer("blub", "blab"); 230 var rewrite = new RewriteTransformer("blub", "blab");
174 initGraph(["app|foo.blub", "app|bar.blib"], {"app": [[rewrite]]}); 231 initGraph([
232 "app|foo.blub",
233 "app|bar.blib"
234 ], {
235 "app": [
236 [rewrite]
237 ]
238 });
175 239
176 rewrite.pauseIsPrimary("app|foo.blub"); 240 rewrite.pauseIsPrimary("app|foo.blub");
177 updateSources(["app|foo.blub", "app|bar.blib"]); 241 updateSources(["app|foo.blub", "app|bar.blib"]);
178 // Ensure we're waiting on [rewrite.isPrimary]. 242 // Ensure we're waiting on [rewrite.isPrimary].
179 schedule(pumpEventQueue); 243 schedule(pumpEventQueue);
180 244
181 updateTransformers("app", [ 245 updateTransformers("app", [
182 [rewrite, new RewriteTransformer("blib", "blob")] 246 [rewrite, new RewriteTransformer("blib", "blob")]
183 ]); 247 ]);
184 rewrite.resumeIsPrimary("app|foo.blub"); 248 rewrite.resumeIsPrimary("app|foo.blub");
185 expectAsset("app|foo.blab", "foo.blab"); 249 expectAsset("app|foo.blab", "foo.blab");
186 expectAsset("app|bar.blob", "bar.blob"); 250 expectAsset("app|bar.blob", "bar.blob");
187 buildShouldSucceed(); 251 buildShouldSucceed();
188 }); 252 });
189 253
190 test("a cross-package transform sees a new transformer in a new phase", () { 254 test("a cross-package transform sees a new transformer in a new phase", () {
191 var rewrite = new RewriteTransformer("inc", "inc"); 255 var rewrite = new RewriteTransformer("inc", "inc");
192 initGraph({ 256 initGraph({
193 "pkg1|foo.txt": "pkg2|foo.inc", 257 "pkg1|foo.txt": "pkg2|foo.inc",
194 "pkg2|foo.inc": "foo" 258 "pkg2|foo.inc": "foo"
195 }, { 259 }, {
196 "pkg1": [[new ManyToOneTransformer("txt")]], 260 "pkg1": [
197 "pkg2": [[rewrite]] 261 [new ManyToOneTransformer("txt")]
262 ],
263 "pkg2": [
264 [rewrite]
265 ]
198 }); 266 });
199 267
200 updateSources(["pkg1|foo.txt", "pkg2|foo.inc"]); 268 updateSources(["pkg1|foo.txt", "pkg2|foo.inc"]);
201 expectAsset("pkg1|foo.out", "foo.inc"); 269 expectAsset("pkg1|foo.out", "foo.inc");
202 buildShouldSucceed(); 270 buildShouldSucceed();
203 271
204 updateTransformers("pkg2", [ 272 updateTransformers("pkg2", [
205 [rewrite], 273 [rewrite],
206 [new RewriteTransformer("inc", "inc")] 274 [new RewriteTransformer("inc", "inc")]
207 ]); 275 ]);
208 expectAsset("pkg1|foo.out", "foo.inc.inc"); 276 expectAsset("pkg1|foo.out", "foo.inc.inc");
209 buildShouldSucceed(); 277 buildShouldSucceed();
210 }); 278 });
211 279
212 test("a cross-package transform doesn't see a removed transformer in a " 280 test(
281 "a cross-package transform doesn't see a removed transformer in a "
213 "removed phase", () { 282 "removed phase", () {
214 var rewrite = new RewriteTransformer("inc", "inc"); 283 var rewrite = new RewriteTransformer("inc", "inc");
215 initGraph({ 284 initGraph({
216 "pkg1|foo.txt": "pkg2|foo.inc", 285 "pkg1|foo.txt": "pkg2|foo.inc",
217 "pkg2|foo.inc": "foo" 286 "pkg2|foo.inc": "foo"
218 }, { 287 }, {
219 "pkg1": [[new ManyToOneTransformer("txt")]], 288 "pkg1": [
289 [new ManyToOneTransformer("txt")]
290 ],
220 "pkg2": [ 291 "pkg2": [
221 [rewrite], 292 [rewrite],
222 [new RewriteTransformer("inc", "inc")] 293 [new RewriteTransformer("inc", "inc")]
223 ] 294 ]
224 }); 295 });
225 296
226 updateSources(["pkg1|foo.txt", "pkg2|foo.inc"]); 297 updateSources(["pkg1|foo.txt", "pkg2|foo.inc"]);
227 expectAsset("pkg1|foo.out", "foo.inc.inc"); 298 expectAsset("pkg1|foo.out", "foo.inc.inc");
228 buildShouldSucceed(); 299 buildShouldSucceed();
229 300
230 updateTransformers("pkg2", [[rewrite]]); 301 updateTransformers("pkg2", [
302 [rewrite]
303 ]);
231 expectAsset("pkg1|foo.out", "foo.inc"); 304 expectAsset("pkg1|foo.out", "foo.inc");
232 buildShouldSucceed(); 305 buildShouldSucceed();
233 }); 306 });
234 307
235 group("pass-through", () { 308 group("pass-through", () {
236 test("a new transformer can see pass-through assets", () { 309 test("a new transformer can see pass-through assets", () {
237 var rewrite = new RewriteTransformer("zip", "zap"); 310 var rewrite = new RewriteTransformer("zip", "zap");
238 initGraph(["app|foo.blub"], {"app": [[rewrite]]}); 311 initGraph([
312 "app|foo.blub"
313 ], {
314 "app": [
315 [rewrite]
316 ]
317 });
239 318
240 updateSources(["app|foo.blub"]); 319 updateSources(["app|foo.blub"]);
241 buildShouldSucceed(); 320 buildShouldSucceed();
242 321
243 updateTransformers("app", [ 322 updateTransformers("app", [
244 [rewrite], 323 [rewrite],
245 [new RewriteTransformer("blub", "blab")] 324 [new RewriteTransformer("blub", "blab")]
246 ]); 325 ]);
247 expectAsset("app|foo.blab", "foo.blab"); 326 expectAsset("app|foo.blab", "foo.blab");
248 buildShouldSucceed(); 327 buildShouldSucceed();
249 }); 328 });
250 329
251 test("a new transformer can overwrite an old asset", () { 330 test("a new transformer can overwrite an old asset", () {
252 var rewrite = new RewriteTransformer("zip", "zap"); 331 var rewrite = new RewriteTransformer("zip", "zap");
253 initGraph(["app|foo.txt"], {"app": [[rewrite]]}); 332 initGraph([
333 "app|foo.txt"
334 ], {
335 "app": [
336 [rewrite]
337 ]
338 });
254 339
255 updateSources(["app|foo.txt"]); 340 updateSources(["app|foo.txt"]);
256 expectAsset("app|foo.txt", "foo"); 341 expectAsset("app|foo.txt", "foo");
257 buildShouldSucceed(); 342 buildShouldSucceed();
258 343
259 // Add a transformer that will overwrite the previously-passed-through 344 // Add a transformer that will overwrite the previously-passed-through
260 // "foo.txt" asset. The transformed asset should be emitted, not the 345 // "foo.txt" asset. The transformed asset should be emitted, not the
261 // passed-through asset. 346 // passed-through asset.
262 updateTransformers("app", [ 347 updateTransformers("app", [
263 [rewrite, new RewriteTransformer("txt", "txt")] 348 [rewrite, new RewriteTransformer("txt", "txt")]
264 ]); 349 ]);
265 expectAsset("app|foo.txt", "foo.txt"); 350 expectAsset("app|foo.txt", "foo.txt");
266 buildShouldSucceed(); 351 buildShouldSucceed();
267 }); 352 });
268 353
269 test("passes an asset through when an overwriting transform is removed", 354 test("passes an asset through when an overwriting transform is removed",
270 () { 355 () {
271 initGraph(["app|foo.txt"], { 356 initGraph([
272 "app": [[new RewriteTransformer("txt", "txt")]] 357 "app|foo.txt"
358 ], {
359 "app": [
360 [new RewriteTransformer("txt", "txt")]
361 ]
273 }); 362 });
274 363
275 updateSources(["app|foo.txt"]); 364 updateSources(["app|foo.txt"]);
276 expectAsset("app|foo.txt", "foo.txt"); 365 expectAsset("app|foo.txt", "foo.txt");
277 buildShouldSucceed(); 366 buildShouldSucceed();
278 367
279 updateTransformers("app", [[]]); 368 updateTransformers("app", [[]]);
280 expectAsset("app|foo.txt", "foo"); 369 expectAsset("app|foo.txt", "foo");
281 buildShouldSucceed(); 370 buildShouldSucceed();
282 }); 371 });
283 372
284 test("passes an asset through when its overwriting transform is removed " 373 test(
374 "passes an asset through when its overwriting transform is removed "
285 "during apply", () { 375 "during apply", () {
286 var rewrite = new RewriteTransformer("txt", "txt"); 376 var rewrite = new RewriteTransformer("txt", "txt");
287 initGraph(["app|foo.txt"], {"app": [[rewrite]]}); 377 initGraph([
378 "app|foo.txt"
379 ], {
380 "app": [
381 [rewrite]
382 ]
383 });
288 384
289 rewrite.pauseApply(); 385 rewrite.pauseApply();
290 updateSources(["app|foo.txt"]); 386 updateSources(["app|foo.txt"]);
291 expectAssetDoesNotComplete("app|foo.txt"); 387 expectAssetDoesNotComplete("app|foo.txt");
292 388
293 updateTransformers("app", [[]]); 389 updateTransformers("app", [[]]);
294 rewrite.resumeApply(); 390 rewrite.resumeApply();
295 expectAsset("app|foo.txt", "foo"); 391 expectAsset("app|foo.txt", "foo");
296 buildShouldSucceed(); 392 buildShouldSucceed();
297 }); 393 });
298 394
299 test("doesn't pass an asset through when its overwriting transform is " 395 test(
396 "doesn't pass an asset through when its overwriting transform is "
300 "removed during apply if another transform overwrites it", () { 397 "removed during apply if another transform overwrites it", () {
301 var rewrite1 = new RewriteTransformer("txt", "txt"); 398 var rewrite1 = new RewriteTransformer("txt", "txt");
302 var rewrite2 = new RewriteTransformer("txt", "txt"); 399 var rewrite2 = new RewriteTransformer("txt", "txt");
303 initGraph(["app|foo.txt"], {"app": [[rewrite1, rewrite2]]}); 400 initGraph([
401 "app|foo.txt"
402 ], {
403 "app": [
404 [rewrite1, rewrite2]
405 ]
406 });
304 407
305 rewrite1.pauseApply(); 408 rewrite1.pauseApply();
306 updateSources(["app|foo.txt"]); 409 updateSources(["app|foo.txt"]);
307 expectAsset("app|foo.txt", "foo.txt"); 410 expectAsset("app|foo.txt", "foo.txt");
308 // Ensure we're waiting on [rewrite1.apply] 411 // Ensure we're waiting on [rewrite1.apply]
309 schedule(pumpEventQueue); 412 schedule(pumpEventQueue);
310 413
311 updateTransformers("app", [[rewrite2]]); 414 updateTransformers("app", [
415 [rewrite2]
416 ]);
312 rewrite1.resumeApply(); 417 rewrite1.resumeApply();
313 expectAsset("app|foo.txt", "foo.txt"); 418 expectAsset("app|foo.txt", "foo.txt");
314 buildShouldSucceed(); 419 buildShouldSucceed();
315 }); 420 });
316 421
317 test("doesn't pass an asset through when one overwriting transform is " 422 test(
423 "doesn't pass an asset through when one overwriting transform is "
318 "removed if another transform still overwrites it", () { 424 "removed if another transform still overwrites it", () {
319 var rewrite = new RewriteTransformer("txt", "txt"); 425 var rewrite = new RewriteTransformer("txt", "txt");
320 initGraph(["app|foo.txt"], {"app": [[ 426 initGraph([
321 rewrite, 427 "app|foo.txt"
322 new RewriteTransformer("txt", "txt") 428 ], {
323 ]]}); 429 "app": [
430 [rewrite, new RewriteTransformer("txt", "txt")]
431 ]
432 });
324 433
325 updateSources(["app|foo.txt"]); 434 updateSources(["app|foo.txt"]);
326 // This could be either the output of [CheckContentTransformer] or 435 // This could be either the output of [CheckContentTransformer] or
327 // [RewriteTransformer], depending which completes first. 436 // [RewriteTransformer], depending which completes first.
328 expectAsset("app|foo.txt", anything); 437 expectAsset("app|foo.txt", anything);
329 buildShouldFail([isAssetCollisionException("app|foo.txt")]); 438 buildShouldFail([isAssetCollisionException("app|foo.txt")]);
330 439
331 updateTransformers("app", [[rewrite]]); 440 updateTransformers("app", [
441 [rewrite]
442 ]);
332 expectAsset("app|foo.txt", "foo.txt"); 443 expectAsset("app|foo.txt", "foo.txt");
333 buildShouldSucceed(); 444 buildShouldSucceed();
334 }); 445 });
335 }); 446 });
336 447
337 // Regression test. 448 // Regression test.
338 test("a phase is added, then an input is removed and re-added", () { 449 test("a phase is added, then an input is removed and re-added", () {
339 var rewrite = new RewriteTransformer("txt", "mid"); 450 var rewrite = new RewriteTransformer("txt", "mid");
340 initGraph(["app|foo.txt"], { 451 initGraph([
341 "app": [[rewrite]] 452 "app|foo.txt"
453 ], {
454 "app": [
455 [rewrite]
456 ]
342 }); 457 });
343 458
344 updateSources(["app|foo.txt"]); 459 updateSources(["app|foo.txt"]);
345 expectAsset("app|foo.mid", "foo.mid"); 460 expectAsset("app|foo.mid", "foo.mid");
346 buildShouldSucceed(); 461 buildShouldSucceed();
347 462
348 updateTransformers("app", [ 463 updateTransformers("app", [
349 [rewrite], 464 [rewrite],
350 [new RewriteTransformer("mid", "out")] 465 [new RewriteTransformer("mid", "out")]
351 ]); 466 ]);
352 expectAsset("app|foo.out", "foo.mid.out"); 467 expectAsset("app|foo.out", "foo.mid.out");
353 buildShouldSucceed(); 468 buildShouldSucceed();
354 469
355 removeSources(["app|foo.txt"]); 470 removeSources(["app|foo.txt"]);
356 expectNoAsset("app|foo.out"); 471 expectNoAsset("app|foo.out");
357 buildShouldSucceed(); 472 buildShouldSucceed();
358 473
359 updateSources(["app|foo.txt"]); 474 updateSources(["app|foo.txt"]);
360 expectAsset("app|foo.out", "foo.mid.out"); 475 expectAsset("app|foo.out", "foo.mid.out");
361 buildShouldSucceed(); 476 buildShouldSucceed();
362 }); 477 });
363 478
364 // Regression test for issue 19540. 479 // Regression test for issue 19540.
365 test("a phase is removed and then one of its inputs is updated", () { 480 test("a phase is removed and then one of its inputs is updated", () {
366 // Have an empty first phase because the first phase is never removed. 481 // Have an empty first phase because the first phase is never removed.
367 initGraph(["app|foo.txt"], { 482 initGraph([
368 "app": [[], [new RewriteTransformer("txt", "out")]] 483 "app|foo.txt"
484 ], {
485 "app": [
486 [],
487 [new RewriteTransformer("txt", "out")]
488 ]
369 }); 489 });
370 490
371 updateSources(["app|foo.txt"]); 491 updateSources(["app|foo.txt"]);
372 expectAsset("app|foo.out", "foo.out"); 492 expectAsset("app|foo.out", "foo.out");
373 buildShouldSucceed(); 493 buildShouldSucceed();
374 494
375 // First empty both phases. This allows the second phase to be considered 495 // First empty both phases. This allows the second phase to be considered
376 // idle even when its transformer is no longer running. 496 // idle even when its transformer is no longer running.
377 updateTransformers("app", [[], []]); 497 updateTransformers("app", [[], []]);
378 buildShouldSucceed(); 498 buildShouldSucceed();
379 499
380 // Now remove the second phase. It should unsubscribe from its input's 500 // Now remove the second phase. It should unsubscribe from its input's
381 // events. 501 // events.
382 updateTransformers("app", [[]]); 502 updateTransformers("app", [[]]);
383 buildShouldSucceed(); 503 buildShouldSucceed();
384 504
385 // Update the input. With issue 19540, this would cause the removed phase to 505 // Update the input. With issue 19540, this would cause the removed phase to
386 // try to update its status, which would crash. 506 // try to update its status, which would crash.
387 updateSources(["app|foo.txt"]); 507 updateSources(["app|foo.txt"]);
388 buildShouldSucceed(); 508 buildShouldSucceed();
389 }); 509 });
390 } 510 }
OLDNEW
« no previous file with comments | « packages/barback/test/multiset_test.dart ('k') | packages/barback/test/package_graph/collisions_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698