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

Side by Side Diff: packages/barback/test/package_graph/lazy_transformer_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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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.lazy_asset_test; 5 library barback.test.package_graph.lazy_asset_test;
6 6
7 import 'package:barback/barback.dart'; 7 import 'package:barback/barback.dart';
8 import 'package:barback/src/utils.dart';
9 import 'package:scheduled_test/scheduled_test.dart'; 8 import 'package:scheduled_test/scheduled_test.dart';
10 9
11 import '../utils.dart'; 10 import '../utils.dart';
12 11
13 main() { 12 main() {
14 initConfig(); 13 initConfig();
15 test("requesting a lazy asset should cause it to be generated", () { 14 test("requesting a lazy asset should cause it to be generated", () {
16 initGraph(["app|foo.blub"], {"app": [ 15 initGraph([
17 [new LazyRewriteTransformer("blub", "blab")] 16 "app|foo.blub"
18 ]}); 17 ], {
18 "app": [
19 [new LazyRewriteTransformer("blub", "blab")]
20 ]
21 });
19 updateSources(["app|foo.blub"]); 22 updateSources(["app|foo.blub"]);
20 expectAsset("app|foo.blab", "foo.blab"); 23 expectAsset("app|foo.blab", "foo.blab");
21 buildShouldSucceed(); 24 buildShouldSucceed();
22 }); 25 });
23 26
24 test("calling getAllAssets should cause a lazy asset to be generated", () { 27 test("calling getAllAssets should cause a lazy asset to be generated", () {
25 var transformer = new LazyRewriteTransformer("blub", "blab"); 28 var transformer = new LazyRewriteTransformer("blub", "blab");
26 initGraph(["app|foo.blub"], {"app": [[transformer]]}); 29 initGraph([
30 "app|foo.blub"
31 ], {
32 "app": [
33 [transformer]
34 ]
35 });
27 updateSources(["app|foo.blub"]); 36 updateSources(["app|foo.blub"]);
28 expectAllAssets(["app|foo.blub", "app|foo.blab"]); 37 expectAllAssets(["app|foo.blub", "app|foo.blab"]);
29 buildShouldSucceed(); 38 buildShouldSucceed();
30 expect(transformer.numRuns, completion(equals(1))); 39 expect(transformer.numRuns, completion(equals(1)));
31 }); 40 });
32 41
33 test("requesting a lazy asset multiple times should only cause it to be " 42 test(
43 "requesting a lazy asset multiple times should only cause it to be "
34 "generated once", () { 44 "generated once", () {
35 var transformer = new LazyRewriteTransformer("blub", "blab"); 45 var transformer = new LazyRewriteTransformer("blub", "blab");
36 initGraph(["app|foo.blub"], {"app": [[transformer]]}); 46 initGraph([
47 "app|foo.blub"
48 ], {
49 "app": [
50 [transformer]
51 ]
52 });
37 updateSources(["app|foo.blub"]); 53 updateSources(["app|foo.blub"]);
38 expectAsset("app|foo.blab", "foo.blab"); 54 expectAsset("app|foo.blab", "foo.blab");
39 expectAsset("app|foo.blab", "foo.blab"); 55 expectAsset("app|foo.blab", "foo.blab");
40 expectAsset("app|foo.blab", "foo.blab"); 56 expectAsset("app|foo.blab", "foo.blab");
41 buildShouldSucceed(); 57 buildShouldSucceed();
42 expect(transformer.numRuns, completion(equals(1))); 58 expect(transformer.numRuns, completion(equals(1)));
43 }); 59 });
44 60
45 test("a lazy asset can be consumed by a non-lazy transformer", () { 61 test("a lazy asset can be consumed by a non-lazy transformer", () {
46 initGraph(["app|foo.blub"], {"app": [ 62 initGraph([
47 [new LazyRewriteTransformer("blub", "blab")], 63 "app|foo.blub"
48 [new RewriteTransformer("blab", "blib")] 64 ], {
49 ]}); 65 "app": [
66 [new LazyRewriteTransformer("blub", "blab")],
67 [new RewriteTransformer("blab", "blib")]
68 ]
69 });
50 updateSources(["app|foo.blub"]); 70 updateSources(["app|foo.blub"]);
51 expectAsset("app|foo.blib", "foo.blab.blib"); 71 expectAsset("app|foo.blib", "foo.blab.blib");
52 buildShouldSucceed(); 72 buildShouldSucceed();
53 }); 73 });
54 74
55 test("a lazy asset isn't eagerly compiled", () { 75 test("a lazy asset isn't eagerly compiled", () {
56 var transformer = new LazyRewriteTransformer("blub", "blab"); 76 var transformer = new LazyRewriteTransformer("blub", "blab");
57 initGraph(["app|foo.blub"], {"app": [[transformer]]}); 77 initGraph([
78 "app|foo.blub"
79 ], {
80 "app": [
81 [transformer]
82 ]
83 });
58 updateSources(["app|foo.blub"]); 84 updateSources(["app|foo.blub"]);
59 buildShouldSucceed(); 85 buildShouldSucceed();
60 expect(transformer.numRuns, completion(equals(0))); 86 expect(transformer.numRuns, completion(equals(0)));
61 }); 87 });
62 88
63 test("a lazy asset emitted by a group isn't eagerly compiled", () { 89 test("a lazy asset emitted by a group isn't eagerly compiled", () {
64 var transformer = new LazyRewriteTransformer("blub", "blab"); 90 var transformer = new LazyRewriteTransformer("blub", "blab");
65 initGraph(["app|foo.blub"], {"app": [ 91 initGraph([
66 [new TransformerGroup([[transformer]])] 92 "app|foo.blub"
67 ]}); 93 ], {
94 "app": [
95 [
96 new TransformerGroup([
97 [transformer]
98 ])
99 ]
100 ]
101 });
68 updateSources(["app|foo.blub"]); 102 updateSources(["app|foo.blub"]);
69 buildShouldSucceed(); 103 buildShouldSucceed();
70 expect(transformer.numRuns, completion(equals(0))); 104 expect(transformer.numRuns, completion(equals(0)));
71 }); 105 });
72 106
73 test("a lazy asset piped into a non-lazy transformer is eagerly compiled", 107 test("a lazy asset piped into a non-lazy transformer is eagerly compiled",
74 () { 108 () {
75 var transformer = new LazyRewriteTransformer("blub", "blab"); 109 var transformer = new LazyRewriteTransformer("blub", "blab");
76 initGraph(["app|foo.blub"], {"app": [ 110 initGraph([
77 [transformer], 111 "app|foo.blub"
78 [new RewriteTransformer("blab", "blib")] 112 ], {
79 ]}); 113 "app": [
114 [transformer],
115 [new RewriteTransformer("blab", "blib")]
116 ]
117 });
80 updateSources(["app|foo.blub"]); 118 updateSources(["app|foo.blub"]);
81 buildShouldSucceed(); 119 buildShouldSucceed();
82 expect(transformer.numRuns, completion(equals(1))); 120 expect(transformer.numRuns, completion(equals(1)));
83 }); 121 });
84 122
85 test("a lazy asset piped into a declaring transformer isn't eagerly " 123 test(
124 "a lazy asset piped into a declaring transformer isn't eagerly "
86 "compiled", () { 125 "compiled", () {
87 var transformer1 = new LazyRewriteTransformer("blub", "blab"); 126 var transformer1 = new LazyRewriteTransformer("blub", "blab");
88 var transformer2 = new DeclaringRewriteTransformer("blab", "blib"); 127 var transformer2 = new DeclaringRewriteTransformer("blab", "blib");
89 initGraph(["app|foo.blub"], {"app": [ 128 initGraph([
90 [transformer1], [transformer2] 129 "app|foo.blub"
91 ]}); 130 ], {
131 "app": [
132 [transformer1],
133 [transformer2]
134 ]
135 });
92 updateSources(["app|foo.blub"]); 136 updateSources(["app|foo.blub"]);
93 buildShouldSucceed(); 137 buildShouldSucceed();
94 expect(transformer1.numRuns, completion(equals(0))); 138 expect(transformer1.numRuns, completion(equals(0)));
95 expect(transformer2.numRuns, completion(equals(0))); 139 expect(transformer2.numRuns, completion(equals(0)));
96 }); 140 });
97 141
98 test("a lazy asset piped into a declaring transformer is compiled " 142 test(
143 "a lazy asset piped into a declaring transformer is compiled "
99 "on-demand", () { 144 "on-demand", () {
100 initGraph(["app|foo.blub"], {"app": [ 145 initGraph([
101 [new LazyRewriteTransformer("blub", "blab")], 146 "app|foo.blub"
102 [new DeclaringRewriteTransformer("blab", "blib")] 147 ], {
103 ]}); 148 "app": [
149 [new LazyRewriteTransformer("blub", "blab")],
150 [new DeclaringRewriteTransformer("blab", "blib")]
151 ]
152 });
104 updateSources(["app|foo.blub"]); 153 updateSources(["app|foo.blub"]);
105 expectAsset("app|foo.blib", "foo.blab.blib"); 154 expectAsset("app|foo.blib", "foo.blab.blib");
106 buildShouldSucceed(); 155 buildShouldSucceed();
107 }); 156 });
108 157
109 test("a lazy asset piped through many declaring transformers isn't eagerly " 158 test(
159 "a lazy asset piped through many declaring transformers isn't eagerly "
110 "compiled", () { 160 "compiled", () {
111 var transformer1 = new LazyRewriteTransformer("one", "two"); 161 var transformer1 = new LazyRewriteTransformer("one", "two");
112 var transformer2 = new DeclaringRewriteTransformer("two", "three"); 162 var transformer2 = new DeclaringRewriteTransformer("two", "three");
113 var transformer3 = new DeclaringRewriteTransformer("three", "four"); 163 var transformer3 = new DeclaringRewriteTransformer("three", "four");
114 var transformer4 = new DeclaringRewriteTransformer("four", "five"); 164 var transformer4 = new DeclaringRewriteTransformer("four", "five");
115 initGraph(["app|foo.one"], {"app": [ 165 initGraph([
116 [transformer1], [transformer2], [transformer3], [transformer4] 166 "app|foo.one"
117 ]}); 167 ], {
168 "app": [
169 [transformer1],
170 [transformer2],
171 [transformer3],
172 [transformer4]
173 ]
174 });
118 updateSources(["app|foo.one"]); 175 updateSources(["app|foo.one"]);
119 buildShouldSucceed(); 176 buildShouldSucceed();
120 expect(transformer1.numRuns, completion(equals(0))); 177 expect(transformer1.numRuns, completion(equals(0)));
121 expect(transformer2.numRuns, completion(equals(0))); 178 expect(transformer2.numRuns, completion(equals(0)));
122 expect(transformer3.numRuns, completion(equals(0))); 179 expect(transformer3.numRuns, completion(equals(0)));
123 expect(transformer4.numRuns, completion(equals(0))); 180 expect(transformer4.numRuns, completion(equals(0)));
124 }); 181 });
125 182
126 test("a lazy asset piped through many declaring transformers is compiled " 183 test(
184 "a lazy asset piped through many declaring transformers is compiled "
127 "on-demand", () { 185 "on-demand", () {
128 initGraph(["app|foo.one"], {"app": [ 186 initGraph([
129 [new LazyRewriteTransformer("one", "two")], 187 "app|foo.one"
130 [new DeclaringRewriteTransformer("two", "three")], 188 ], {
131 [new DeclaringRewriteTransformer("three", "four")], 189 "app": [
132 [new DeclaringRewriteTransformer("four", "five")] 190 [new LazyRewriteTransformer("one", "two")],
133 ]}); 191 [new DeclaringRewriteTransformer("two", "three")],
192 [new DeclaringRewriteTransformer("three", "four")],
193 [new DeclaringRewriteTransformer("four", "five")]
194 ]
195 });
134 updateSources(["app|foo.one"]); 196 updateSources(["app|foo.one"]);
135 expectAsset("app|foo.five", "foo.two.three.four.five"); 197 expectAsset("app|foo.five", "foo.two.three.four.five");
136 buildShouldSucceed(); 198 buildShouldSucceed();
137 }); 199 });
138 200
139 test("a lazy asset piped into a non-lazy transformer that doesn't use its " 201 test(
202 "a lazy asset piped into a non-lazy transformer that doesn't use its "
140 "outputs isn't eagerly compiled", () { 203 "outputs isn't eagerly compiled", () {
141 var transformer = new LazyRewriteTransformer("blub", "blab"); 204 var transformer = new LazyRewriteTransformer("blub", "blab");
142 initGraph(["app|foo.blub"], {"app": [ 205 initGraph([
143 [transformer], 206 "app|foo.blub"
144 [new RewriteTransformer("txt", "out")] 207 ], {
145 ]}); 208 "app": [
209 [transformer],
210 [new RewriteTransformer("txt", "out")]
211 ]
212 });
146 updateSources(["app|foo.blub"]); 213 updateSources(["app|foo.blub"]);
147 buildShouldSucceed(); 214 buildShouldSucceed();
148 expect(transformer.numRuns, completion(equals(0))); 215 expect(transformer.numRuns, completion(equals(0)));
149 }); 216 });
150 217
151 test("a lazy asset piped into a non-lazy transformer that doesn't use its " 218 test(
219 "a lazy asset piped into a non-lazy transformer that doesn't use its "
152 "outputs is compiled on-demand", () { 220 "outputs is compiled on-demand", () {
153 initGraph(["app|foo.blub"], {"app": [ 221 initGraph([
154 [new LazyRewriteTransformer("blub", "blab")], 222 "app|foo.blub"
155 [new RewriteTransformer("txt", "out")] 223 ], {
156 ]}); 224 "app": [
225 [new LazyRewriteTransformer("blub", "blab")],
226 [new RewriteTransformer("txt", "out")]
227 ]
228 });
157 updateSources(["app|foo.blub"]); 229 updateSources(["app|foo.blub"]);
158 expectAsset("app|foo.blab", "foo.blab"); 230 expectAsset("app|foo.blab", "foo.blab");
159 buildShouldSucceed(); 231 buildShouldSucceed();
160 }); 232 });
161 233
162 test("a lazy transformer followed by a non-lazy transformer is re-run " 234 test(
235 "a lazy transformer followed by a non-lazy transformer is re-run "
163 "eagerly", () { 236 "eagerly", () {
164 var rewrite = new LazyRewriteTransformer("one", "two"); 237 var rewrite = new LazyRewriteTransformer("one", "two");
165 initGraph(["app|foo.one"], {"app": [ 238 initGraph([
166 [rewrite], 239 "app|foo.one"
167 [new RewriteTransformer("two", "three")] 240 ], {
168 ]}); 241 "app": [
242 [rewrite],
243 [new RewriteTransformer("two", "three")]
244 ]
245 });
169 246
170 updateSources(["app|foo.one"]); 247 updateSources(["app|foo.one"]);
171 expectAsset("app|foo.three", "foo.two.three"); 248 expectAsset("app|foo.three", "foo.two.three");
172 buildShouldSucceed(); 249 buildShouldSucceed();
173 250
174 updateSources(["app|foo.one"]); 251 updateSources(["app|foo.one"]);
175 buildShouldSucceed(); 252 buildShouldSucceed();
176 253
177 expect(rewrite.numRuns, completion(equals(2))); 254 expect(rewrite.numRuns, completion(equals(2)));
178 }); 255 });
179 256
180 test("a lazy transformer followed by a declaring transformer isn't re-run " 257 test(
258 "a lazy transformer followed by a declaring transformer isn't re-run "
181 "eagerly", () { 259 "eagerly", () {
182 var rewrite = new LazyRewriteTransformer("one", "two"); 260 var rewrite = new LazyRewriteTransformer("one", "two");
183 initGraph(["app|foo.one"], {"app": [ 261 initGraph([
184 [rewrite], 262 "app|foo.one"
185 [new DeclaringRewriteTransformer("two", "three")] 263 ], {
186 ]}); 264 "app": [
265 [rewrite],
266 [new DeclaringRewriteTransformer("two", "three")]
267 ]
268 });
187 269
188 updateSources(["app|foo.one"]); 270 updateSources(["app|foo.one"]);
189 expectAsset("app|foo.three", "foo.two.three"); 271 expectAsset("app|foo.three", "foo.two.three");
190 buildShouldSucceed(); 272 buildShouldSucceed();
191 273
192 updateSources(["app|foo.one"]); 274 updateSources(["app|foo.one"]);
193 buildShouldSucceed(); 275 buildShouldSucceed();
194 276
195 expect(rewrite.numRuns, completion(equals(1))); 277 expect(rewrite.numRuns, completion(equals(1)));
196 }); 278 });
197 279
198 test("a declaring transformer added after a materialized lazy transformer " 280 test(
281 "a declaring transformer added after a materialized lazy transformer "
199 "is still deferred", () { 282 "is still deferred", () {
200 var lazy = new LazyRewriteTransformer("one", "two"); 283 var lazy = new LazyRewriteTransformer("one", "two");
201 var declaring = new DeclaringRewriteTransformer("two", "three"); 284 var declaring = new DeclaringRewriteTransformer("two", "three");
202 initGraph(["app|foo.one"], {"app": [[lazy]]}); 285 initGraph([
286 "app|foo.one"
287 ], {
288 "app": [
289 [lazy]
290 ]
291 });
203 292
204 updateSources(["app|foo.one"]); 293 updateSources(["app|foo.one"]);
205 expectAsset("app|foo.two", "foo.two"); 294 expectAsset("app|foo.two", "foo.two");
206 buildShouldSucceed(); 295 buildShouldSucceed();
207 296
208 updateTransformers("app", [[lazy], [declaring]]); 297 updateTransformers("app", [
298 [lazy],
299 [declaring]
300 ]);
209 expectAsset("app|foo.three", "foo.two.three"); 301 expectAsset("app|foo.three", "foo.two.three");
210 buildShouldSucceed(); 302 buildShouldSucceed();
211 303
212 updateSources(["app|foo.one"]); 304 updateSources(["app|foo.one"]);
213 buildShouldSucceed(); 305 buildShouldSucceed();
214 306
215 expect(lazy.numRuns, completion(equals(1))); 307 expect(lazy.numRuns, completion(equals(1)));
216 expect(declaring.numRuns, completion(equals(1))); 308 expect(declaring.numRuns, completion(equals(1)));
217 }); 309 });
218 310
219 test("a lazy asset works as a cross-package input", () { 311 test("a lazy asset works as a cross-package input", () {
220 initGraph({ 312 initGraph({
221 "pkg1|foo.blub": "foo", 313 "pkg1|foo.blub": "foo",
222 "pkg2|a.txt": "pkg1|foo.blab" 314 "pkg2|a.txt": "pkg1|foo.blab"
223 }, {"pkg1": [ 315 }, {
224 [new LazyRewriteTransformer("blub", "blab")], 316 "pkg1": [
225 ], "pkg2": [ 317 [new LazyRewriteTransformer("blub", "blab")],
226 [new ManyToOneTransformer("txt")] 318 ],
227 ]}); 319 "pkg2": [
320 [new ManyToOneTransformer("txt")]
321 ]
322 });
228 323
229 updateSources(["pkg1|foo.blub", "pkg2|a.txt"]); 324 updateSources(["pkg1|foo.blub", "pkg2|a.txt"]);
230 expectAsset("pkg2|a.out", "foo.blab"); 325 expectAsset("pkg2|a.out", "foo.blab");
231 buildShouldSucceed(); 326 buildShouldSucceed();
232 }); 327 });
233 328
234 test("a lazy transformer can consume secondary inputs lazily", () { 329 test("a lazy transformer can consume secondary inputs lazily", () {
235 initGraph({ 330 initGraph({
236 "app|a.inc": "a", 331 "app|a.inc": "a",
237 "app|a.txt": "a.inc" 332 "app|a.txt": "a.inc"
238 }, {"app": [ 333 }, {
239 [new LazyManyToOneTransformer("txt")] 334 "app": [
240 ]}); 335 [new LazyManyToOneTransformer("txt")]
336 ]
337 });
241 338
242 updateSources(["app|a.inc", "app|a.txt"]); 339 updateSources(["app|a.inc", "app|a.txt"]);
243 expectAsset("app|a.out", "a"); 340 expectAsset("app|a.out", "a");
244 buildShouldSucceed(); 341 buildShouldSucceed();
245 }); 342 });
246 343
247 test("after being materialized a lazy transformer is still lazy", () { 344 test("after being materialized a lazy transformer is still lazy", () {
248 var transformer = new LazyRewriteTransformer("blub", "blab"); 345 var transformer = new LazyRewriteTransformer("blub", "blab");
249 initGraph(["app|foo.blub"], {"app": [[transformer]]}); 346 initGraph([
347 "app|foo.blub"
348 ], {
349 "app": [
350 [transformer]
351 ]
352 });
250 353
251 updateSources(["app|foo.blub"]); 354 updateSources(["app|foo.blub"]);
252 buildShouldSucceed(); 355 buildShouldSucceed();
253 356
254 // Request the asset once to force it to be materialized. 357 // Request the asset once to force it to be materialized.
255 expectAsset("app|foo.blab", "foo.blab"); 358 expectAsset("app|foo.blab", "foo.blab");
256 buildShouldSucceed(); 359 buildShouldSucceed();
257 360
258 updateSources(["app|foo.blub"]); 361 updateSources(["app|foo.blub"]);
259 buildShouldSucceed(); 362 buildShouldSucceed();
260 363
261 expect(transformer.numRuns, completion(equals(1))); 364 expect(transformer.numRuns, completion(equals(1)));
262 }); 365 });
263 366
264 test("after being materialized a lazy transformer can be materialized again", 367 test("after being materialized a lazy transformer can be materialized again",
265 () { 368 () {
266 var transformer = new LazyRewriteTransformer("blub", "blab"); 369 var transformer = new LazyRewriteTransformer("blub", "blab");
267 initGraph(["app|foo.blub"], {"app": [[transformer]]}); 370 initGraph([
371 "app|foo.blub"
372 ], {
373 "app": [
374 [transformer]
375 ]
376 });
268 377
269 updateSources(["app|foo.blub"]); 378 updateSources(["app|foo.blub"]);
270 buildShouldSucceed(); 379 buildShouldSucceed();
271 380
272 // Request the asset once to force it to be materialized. 381 // Request the asset once to force it to be materialized.
273 expectAsset("app|foo.blab", "foo.blab"); 382 expectAsset("app|foo.blab", "foo.blab");
274 buildShouldSucceed(); 383 buildShouldSucceed();
275 384
276 modifyAsset("app|foo.blub", "bar"); 385 modifyAsset("app|foo.blub", "bar");
277 updateSources(["app|foo.blub"]); 386 updateSources(["app|foo.blub"]);
278 expectAsset("app|foo.blab", "bar.blab"); 387 expectAsset("app|foo.blab", "bar.blab");
279 buildShouldSucceed(); 388 buildShouldSucceed();
280 }); 389 });
281 390
282 test("an error emitted in a lazy transformer's declareOutputs method is " 391 test(
392 "an error emitted in a lazy transformer's declareOutputs method is "
283 "caught and reported", () { 393 "caught and reported", () {
284 initGraph(["app|foo.txt"], {"app": [ 394 initGraph([
285 [new LazyBadTransformer("app|foo.out")] 395 "app|foo.txt"
286 ]}); 396 ], {
397 "app": [
398 [new LazyBadTransformer("app|foo.out")]
399 ]
400 });
287 401
288 updateSources(["app|foo.txt"]); 402 updateSources(["app|foo.txt"]);
289 buildShouldFail([isTransformerException(equals(LazyBadTransformer.ERROR))]); 403 buildShouldFail([isTransformerException(equals(LazyBadTransformer.ERROR))]);
290 }); 404 });
291 405
292 test("an error emitted in a lazy transformer's declareOuputs method prevents " 406 test(
407 "an error emitted in a lazy transformer's declareOuputs method prevents "
293 "it from being materialized", () { 408 "it from being materialized", () {
294 var transformer = new LazyBadTransformer("app|foo.out"); 409 var transformer = new LazyBadTransformer("app|foo.out");
295 initGraph(["app|foo.txt"], {"app": [[transformer]]}); 410 initGraph([
411 "app|foo.txt"
412 ], {
413 "app": [
414 [transformer]
415 ]
416 });
296 417
297 updateSources(["app|foo.txt"]); 418 updateSources(["app|foo.txt"]);
298 expectNoAsset("app|foo.out"); 419 expectNoAsset("app|foo.out");
299 buildShouldFail([isTransformerException(equals(LazyBadTransformer.ERROR))]); 420 buildShouldFail([isTransformerException(equals(LazyBadTransformer.ERROR))]);
300 expect(transformer.numRuns, completion(equals(0))); 421 expect(transformer.numRuns, completion(equals(0)));
301 }); 422 });
302 423
303 test("a lazy transformer passes through inputs it doesn't apply to", () { 424 test("a lazy transformer passes through inputs it doesn't apply to", () {
304 initGraph(["app|foo.txt"], {"app": [ 425 initGraph([
305 [new LazyRewriteTransformer("blub", "blab")] 426 "app|foo.txt"
306 ]}); 427 ], {
428 "app": [
429 [new LazyRewriteTransformer("blub", "blab")]
430 ]
431 });
307 432
308 updateSources(["app|foo.txt"]); 433 updateSources(["app|foo.txt"]);
309 expectAsset("app|foo.txt"); 434 expectAsset("app|foo.txt");
310 buildShouldSucceed(); 435 buildShouldSucceed();
311 }); 436 });
312 437
313 test("a lazy transformer passes through inputs it doesn't overwrite", () { 438 test("a lazy transformer passes through inputs it doesn't overwrite", () {
314 initGraph(["app|foo.txt"], {"app": [ 439 initGraph([
315 [new LazyRewriteTransformer("txt", "out")] 440 "app|foo.txt"
316 ]}); 441 ], {
442 "app": [
443 [new LazyRewriteTransformer("txt", "out")]
444 ]
445 });
317 446
318 updateSources(["app|foo.txt"]); 447 updateSources(["app|foo.txt"]);
319 expectAsset("app|foo.txt"); 448 expectAsset("app|foo.txt");
320 buildShouldSucceed(); 449 buildShouldSucceed();
321 }); 450 });
322 451
323 test("a lazy transformer doesn't pass through inputs it overwrites", () { 452 test("a lazy transformer doesn't pass through inputs it overwrites", () {
324 initGraph(["app|foo.txt"], {"app": [ 453 initGraph([
325 [new LazyRewriteTransformer("txt", "txt")] 454 "app|foo.txt"
326 ]}); 455 ], {
456 "app": [
457 [new LazyRewriteTransformer("txt", "txt")]
458 ]
459 });
327 460
328 updateSources(["app|foo.txt"]); 461 updateSources(["app|foo.txt"]);
329 expectAsset("app|foo.txt", "foo.txt"); 462 expectAsset("app|foo.txt", "foo.txt");
330 buildShouldSucceed(); 463 buildShouldSucceed();
331 }); 464 });
332 465
333 test("a lazy transformer doesn't pass through inputs it consumes", () { 466 test("a lazy transformer doesn't pass through inputs it consumes", () {
334 initGraph(["app|foo.txt"], {"app": [ 467 initGraph([
335 [new LazyRewriteTransformer("txt", "out")..consumePrimary = true] 468 "app|foo.txt"
336 ]}); 469 ], {
470 "app": [
471 [new LazyRewriteTransformer("txt", "out")..consumePrimary = true]
472 ]
473 });
337 474
338 updateSources(["app|foo.txt"]); 475 updateSources(["app|foo.txt"]);
339 expectNoAsset("app|foo.txt"); 476 expectNoAsset("app|foo.txt");
340 buildShouldSucceed(); 477 buildShouldSucceed();
341 }); 478 });
342 479
343 test("a lazy transformer that doesn't apply does nothing when forced", () { 480 test("a lazy transformer that doesn't apply does nothing when forced", () {
344 initGraph(["app|foo.txt"], {"app": [ 481 initGraph([
345 [new LazyRewriteTransformer("blub", "blab")] 482 "app|foo.txt"
346 ]}); 483 ], {
484 "app": [
485 [new LazyRewriteTransformer("blub", "blab")]
486 ]
487 });
347 488
348 updateSources(["app|foo.txt"]); 489 updateSources(["app|foo.txt"]);
349 expectNoAsset("app|foo.blab"); 490 expectNoAsset("app|foo.blab");
350 491
351 // Getting all assets will force every lazy transformer. This shouldn't 492 // Getting all assets will force every lazy transformer. This shouldn't
352 // cause the rewrite to apply, because foo.txt isn't primary. 493 // cause the rewrite to apply, because foo.txt isn't primary.
353 expectAllAssets(["app|foo.txt"]); 494 expectAllAssets(["app|foo.txt"]);
354 buildShouldSucceed(); 495 buildShouldSucceed();
355 }); 496 });
356 497
357 test("a lazy transformer that generates fewer outputs than it declares is " 498 test(
499 "a lazy transformer that generates fewer outputs than it declares is "
358 "forced when a declared but ungenerated output is requested", () { 500 "forced when a declared but ungenerated output is requested", () {
359 initGraph({"app|foo.txt": "no"}, {"app": [ 501 initGraph({
360 [new LazyCheckContentAndRenameTransformer( 502 "app|foo.txt": "no"
361 oldExtension: "txt", oldContent: "yes", 503 }, {
362 newExtension: "out", newContent: "done")] 504 "app": [
363 ]}); 505 [
506 new LazyCheckContentAndRenameTransformer(
507 oldExtension: "txt",
508 oldContent: "yes",
509 newExtension: "out",
510 newContent: "done")
511 ]
512 ]
513 });
364 514
365 updateSources(["app|foo.txt"]); 515 updateSources(["app|foo.txt"]);
366 expectNoAsset("app|foo.out"); 516 expectNoAsset("app|foo.out");
367 buildShouldSucceed(); 517 buildShouldSucceed();
368 518
369 modifyAsset("app|foo.txt", "yes"); 519 modifyAsset("app|foo.txt", "yes");
370 updateSources(["app|foo.txt"]); 520 updateSources(["app|foo.txt"]);
371 expectAsset("app|foo.out", "done"); 521 expectAsset("app|foo.out", "done");
372 buildShouldSucceed(); 522 buildShouldSucceed();
373 }); 523 });
374 524
375 // Regression tests. 525 // Regression tests.
376 526
377 test("a lazy transformer that doesn't apply updates its passed-through asset", 527 test("a lazy transformer that doesn't apply updates its passed-through asset",
378 () { 528 () {
379 initGraph(["app|foo.txt"], {"app": [ 529 initGraph([
380 [new LazyRewriteTransformer("blub", "blab")] 530 "app|foo.txt"
381 ]}); 531 ], {
532 "app": [
533 [new LazyRewriteTransformer("blub", "blab")]
534 ]
535 });
382 536
383 // Pause the provider so that the transformer will start forwarding the 537 // Pause the provider so that the transformer will start forwarding the
384 // asset while it's dirty. 538 // asset while it's dirty.
385 pauseProvider(); 539 pauseProvider();
386 updateSources(["app|foo.txt"]); 540 updateSources(["app|foo.txt"]);
387 expectAssetDoesNotComplete("app|foo.txt"); 541 expectAssetDoesNotComplete("app|foo.txt");
388 542
389 resumeProvider(); 543 resumeProvider();
390 expectAsset("app|foo.txt", "foo"); 544 expectAsset("app|foo.txt", "foo");
391 buildShouldSucceed(); 545 buildShouldSucceed();
392 546
393 modifyAsset("app|foo.txt", "bar"); 547 modifyAsset("app|foo.txt", "bar");
394 updateSources(["app|foo.txt"]); 548 updateSources(["app|foo.txt"]);
395 expectAsset("app|foo.txt", "bar"); 549 expectAsset("app|foo.txt", "bar");
396 buildShouldSucceed(); 550 buildShouldSucceed();
397 }); 551 });
398 552
399 test("a lazy transformer is forced while the previous lazy transformer is " 553 test(
554 "a lazy transformer is forced while the previous lazy transformer is "
400 "available, then the previous transformer becomes unavailable", () { 555 "available, then the previous transformer becomes unavailable", () {
401 var assets = new LazyAssetsTransformer(["app|out.one", "app|out.two"]); 556 var assets = new LazyAssetsTransformer(["app|out.one", "app|out.two"]);
402 var rewrite = new LazyRewriteTransformer("two", "three"); 557 var rewrite = new LazyRewriteTransformer("two", "three");
403 initGraph(["app|foo.in"], {"app": [[assets], [rewrite]]}); 558 initGraph([
559 "app|foo.in"
560 ], {
561 "app": [
562 [assets],
563 [rewrite]
564 ]
565 });
404 566
405 updateSources(["app|foo.in"]); 567 updateSources(["app|foo.in"]);
406 // Request out.one so that [assets] runs but the second does not. 568 // Request out.one so that [assets] runs but the second does not.
407 expectAsset("app|out.one", "app|out.one"); 569 expectAsset("app|out.one", "app|out.one");
408 buildShouldSucceed(); 570 buildShouldSucceed();
409 571
410 // Start the [rewrite] running. The output from [assets] should still be 572 // Start the [rewrite] running. The output from [assets] should still be
411 // available. 573 // available.
412 rewrite.pauseApply(); 574 rewrite.pauseApply();
413 expectAssetDoesNotComplete("app|out.three"); 575 expectAssetDoesNotComplete("app|out.three");
414 576
415 // Mark [assets] as dirty. It should re-run, since [rewrite] still needs its 577 // Mark [assets] as dirty. It should re-run, since [rewrite] still needs its
416 // input. 578 // input.
417 updateSources(["app|foo.in"]); 579 updateSources(["app|foo.in"]);
418 rewrite.resumeApply(); 580 rewrite.resumeApply();
419 581
420 expectAsset("app|out.three", "app|out.two.three"); 582 expectAsset("app|out.three", "app|out.two.three");
421 buildShouldSucceed(); 583 buildShouldSucceed();
422 584
423 // [assets] should run once for each time foo.in was updated. 585 // [assets] should run once for each time foo.in was updated.
424 expect(assets.numRuns, completion(equals(2))); 586 expect(assets.numRuns, completion(equals(2)));
425 587
426 // [rewrite] should run once against [assets]'s original output and once 588 // [rewrite] should run once against [assets]'s original output and once
427 // against its new output. 589 // against its new output.
428 expect(rewrite.numRuns, completion(equals(2))); 590 expect(rewrite.numRuns, completion(equals(2)));
429 }); 591 });
430 } 592 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698