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

Side by Side Diff: pkg/barback/test/asset_graph/transform_test.dart

Issue 17507003: Clean up barback tests. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 6 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 | Annotate | Revision Log
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.asset_graph.transform_test; 5 library barback.test.asset_graph.transform_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:barback/barback.dart'; 9 import 'package:barback/barback.dart';
10 import 'package:barback/src/asset_graph.dart'; 10 import 'package:barback/src/asset_graph.dart';
11 import 'package:scheduled_test/scheduled_test.dart'; 11 import 'package:scheduled_test/scheduled_test.dart';
12 12
13 import '../utils.dart'; 13 import '../utils.dart';
14 14
15 main() { 15 main() {
16 initConfig(); 16 initConfig();
17 test("gets a transformed asset with a different path", () { 17 test("gets a transformed asset with a different path", () {
18 var provider = new MockProvider(["app|foo.blub"]); 18 initGraph(["app|foo.blub"], [
19 var graph = new AssetGraph(provider, [
20 [new RewriteTransformer("blub", "blab")] 19 [new RewriteTransformer("blub", "blab")]
21 ]); 20 ]);
22 graph.updateSources([new AssetId.parse("app|foo.blub")]); 21 updateSources(["app|foo.blub"]);
23 22 expectAsset("app|foo.blab", "foo.blab");
24 expectAsset(graph, "app|foo.blab", "foo.blab");
25 }); 23 });
26 24
27 test("gets a transformed asset with the same path", () { 25 test("gets a transformed asset with the same path", () {
28 var provider = new MockProvider(["app|foo.blub"]); 26 initGraph(["app|foo.blub"], [
29 var graph = new AssetGraph(provider, [
30 [new RewriteTransformer("blub", "blub")] 27 [new RewriteTransformer("blub", "blub")]
31 ]); 28 ]);
32 graph.updateSources([new AssetId.parse("app|foo.blub")]); 29 updateSources(["app|foo.blub"]);
33 30 expectAsset("app|foo.blub", "foo.blub");
34 expectAsset(graph, "app|foo.blub", "foo.blub");
35 }); 31 });
36 32
37 test("doesn't find an output from a later phase", () { 33 test("doesn't find an output from a later phase", () {
38 var provider = new MockProvider(["app|foo.a"]); 34 initGraph(["app|foo.a"], [
39 var graph = new AssetGraph(provider, [
40 [new RewriteTransformer("b", "c")], 35 [new RewriteTransformer("b", "c")],
41 [new RewriteTransformer("a", "b")] 36 [new RewriteTransformer("a", "b")]
42 ]); 37 ]);
43 graph.updateSources([new AssetId.parse("app|foo.a")]); 38 updateSources(["app|foo.a"]);
44 39 expectNoAsset("app|foo.c");
45 expectNoAsset(graph, "app|foo.c");
46 }); 40 });
47 41
48 test("doesn't find an output from the same phase", () { 42 test("doesn't find an output from the same phase", () {
49 var provider = new MockProvider(["app|foo.a"]); 43 initGraph(["app|foo.a"], [
50 var graph = new AssetGraph(provider, [
51 [ 44 [
52 new RewriteTransformer("a", "b"), 45 new RewriteTransformer("a", "b"),
53 new RewriteTransformer("b", "c") 46 new RewriteTransformer("b", "c")
54 ] 47 ]
55 ]); 48 ]);
56 graph.updateSources([new AssetId.parse("app|foo.a")]); 49 updateSources(["app|foo.a"]);
57 50 expectAsset("app|foo.b", "foo.b");
58 expectAsset(graph, "app|foo.b", "foo.b"); 51 expectNoAsset("app|foo.c");
59 expectNoAsset(graph, "app|foo.c");
60 }); 52 });
61 53
62 test("finds the latest output before the transformer's phase", () { 54 test("finds the latest output before the transformer's phase", () {
63 var provider = new MockProvider(["app|foo.blub"]); 55 initGraph(["app|foo.blub"], [
64 var graph = new AssetGraph(provider, [
65 [new RewriteTransformer("blub", "blub")], 56 [new RewriteTransformer("blub", "blub")],
66 [ 57 [
67 new RewriteTransformer("blub", "blub"), 58 new RewriteTransformer("blub", "blub"),
68 new RewriteTransformer("blub", "done") 59 new RewriteTransformer("blub", "done")
69 ], 60 ],
70 [new RewriteTransformer("blub", "blub")] 61 [new RewriteTransformer("blub", "blub")]
71 ]); 62 ]);
72 graph.updateSources([new AssetId.parse("app|foo.blub")]); 63 updateSources(["app|foo.blub"]);
73 64 expectAsset("app|foo.done", "foo.blub.done");
74 expectAsset(graph, "app|foo.done", "foo.blub.done");
75 }); 65 });
76 66
77 test("applies multiple transformations to an asset", () { 67 test("applies multiple transformations to an asset", () {
78 var provider = new MockProvider(["app|foo.a"]); 68 initGraph(["app|foo.a"], [
79 var graph = new AssetGraph(provider, [
80 [new RewriteTransformer("a", "b")], 69 [new RewriteTransformer("a", "b")],
81 [new RewriteTransformer("b", "c")], 70 [new RewriteTransformer("b", "c")],
82 [new RewriteTransformer("c", "d")], 71 [new RewriteTransformer("c", "d")],
83 [new RewriteTransformer("d", "e")], 72 [new RewriteTransformer("d", "e")],
84 [new RewriteTransformer("e", "f")], 73 [new RewriteTransformer("e", "f")],
85 [new RewriteTransformer("f", "g")], 74 [new RewriteTransformer("f", "g")],
86 [new RewriteTransformer("g", "h")], 75 [new RewriteTransformer("g", "h")],
87 [new RewriteTransformer("h", "i")], 76 [new RewriteTransformer("h", "i")],
88 [new RewriteTransformer("i", "j")], 77 [new RewriteTransformer("i", "j")],
89 [new RewriteTransformer("j", "k")], 78 [new RewriteTransformer("j", "k")],
90 ]); 79 ]);
91 graph.updateSources([new AssetId.parse("app|foo.a")]); 80 updateSources(["app|foo.a"]);
92 81 expectAsset("app|foo.k", "foo.b.c.d.e.f.g.h.i.j.k");
93 expectAsset(graph, "app|foo.k", "foo.b.c.d.e.f.g.h.i.j.k");
94 }); 82 });
95 83
96 test("only runs a transform once for all of its outputs", () { 84 test("only runs a transform once for all of its outputs", () {
97 var provider = new MockProvider(["app|foo.blub"]);
98 var transformer = new RewriteTransformer("blub", "a b c"); 85 var transformer = new RewriteTransformer("blub", "a b c");
99 var graph = new AssetGraph(provider, [[transformer]]); 86 initGraph(["app|foo.blub"], [[transformer]]);
100 graph.updateSources([new AssetId.parse("app|foo.blub")]); 87 updateSources(["app|foo.blub"]);
101 88 expectAsset("app|foo.a", "foo.a");
102 expectAsset(graph, "app|foo.a", "foo.a"); 89 expectAsset("app|foo.b", "foo.b");
103 expectAsset(graph, "app|foo.b", "foo.b"); 90 expectAsset("app|foo.c", "foo.c");
104 expectAsset(graph, "app|foo.c", "foo.c");
105 schedule(() { 91 schedule(() {
106 expect(transformer.numRuns, equals(1)); 92 expect(transformer.numRuns, equals(1));
107 }); 93 });
108 }); 94 });
109 95
110 test("runs transforms in the same phase in parallel", () { 96 test("runs transforms in the same phase in parallel", () {
111 var provider = new MockProvider(["app|foo.txt"]);
112 var transformerA = new RewriteTransformer("txt", "a"); 97 var transformerA = new RewriteTransformer("txt", "a");
113 var transformerB = new RewriteTransformer("txt", "b"); 98 var transformerB = new RewriteTransformer("txt", "b");
114 var graph = new AssetGraph(provider, [[transformerA, transformerB]]); 99 initGraph(["app|foo.txt"], [[transformerA, transformerB]]);
115 100
116 transformerA.wait(); 101 transformerA.wait();
117 transformerB.wait(); 102 transformerB.wait();
118 103
119 schedule(() { 104 schedule(() {
120 graph.updateSources([new AssetId.parse("app|foo.txt")]); 105 updateSources(["app|foo.txt"]);
121 106
122 // Wait for them both to start. 107 // Wait for them both to start.
123 return Future.wait([transformerA.started, transformerB.started]); 108 return Future.wait([transformerA.started, transformerB.started]);
124 }); 109 });
125 110
126 schedule(() { 111 schedule(() {
127 // They should both still be running. 112 // They should both still be running.
128 expect(transformerA.isRunning, isTrue); 113 expect(transformerA.isRunning, isTrue);
129 expect(transformerB.isRunning, isTrue); 114 expect(transformerB.isRunning, isTrue);
130 115
131 transformerA.complete(); 116 transformerA.complete();
132 transformerB.complete(); 117 transformerB.complete();
133 }); 118 });
134 119
135 expectAsset(graph, "app|foo.a", "foo.a"); 120 expectAsset("app|foo.a", "foo.a");
136 expectAsset(graph, "app|foo.b", "foo.b"); 121 expectAsset("app|foo.b", "foo.b");
137 }); 122 });
138 123
139 test("does not reapply transform when inputs are not modified", () { 124 test("does not reapply transform when inputs are not modified", () {
140 var provider = new MockProvider(["app|foo.blub"]);
141 var transformer = new RewriteTransformer("blub", "blab"); 125 var transformer = new RewriteTransformer("blub", "blab");
142 var graph = new AssetGraph(provider, [[transformer]]); 126 initGraph(["app|foo.blub"], [[transformer]]);
143 graph.updateSources([new AssetId.parse("app|foo.blub")]); 127 updateSources(["app|foo.blub"]);
144 expectAsset(graph, "app|foo.blab", "foo.blab"); 128 expectAsset("app|foo.blab", "foo.blab");
145 expectAsset(graph, "app|foo.blab", "foo.blab"); 129 expectAsset("app|foo.blab", "foo.blab");
146 expectAsset(graph, "app|foo.blab", "foo.blab"); 130 expectAsset("app|foo.blab", "foo.blab");
147 131
148 schedule(() { 132 schedule(() {
149 expect(transformer.numRuns, equals(1)); 133 expect(transformer.numRuns, equals(1));
150 }); 134 });
151 }); 135 });
152 136
153 test("reapplies a transform when its input is modified", () { 137 test("reapplies a transform when its input is modified", () {
154 var provider = new MockProvider(["app|foo.blub"]);
155 var transformer = new RewriteTransformer("blub", "blab"); 138 var transformer = new RewriteTransformer("blub", "blab");
156 var graph = new AssetGraph(provider, [[transformer]]); 139 initGraph(["app|foo.blub"], [[transformer]]);
157 140
158 schedule(() { 141 schedule(() {
159 graph.updateSources([new AssetId.parse("app|foo.blub")]); 142 updateSources(["app|foo.blub"]);
160 }); 143 });
161 144
162 expectAsset(graph, "app|foo.blab", "foo.blab"); 145 expectAsset("app|foo.blab", "foo.blab");
163 146
164 schedule(() { 147 schedule(() {
165 graph.updateSources([new AssetId.parse("app|foo.blub")]); 148 updateSources(["app|foo.blub"]);
166 }); 149 });
167 150
168 expectAsset(graph, "app|foo.blab", "foo.blab"); 151 expectAsset("app|foo.blab", "foo.blab");
169 152
170 schedule(() { 153 schedule(() {
171 graph.updateSources([new AssetId.parse("app|foo.blub")]); 154 updateSources(["app|foo.blub"]);
172 }); 155 });
173 156
174 expectAsset(graph, "app|foo.blab", "foo.blab"); 157 expectAsset("app|foo.blab", "foo.blab");
175 158
176 schedule(() { 159 schedule(() {
177 expect(transformer.numRuns, equals(3)); 160 expect(transformer.numRuns, equals(3));
178 }); 161 });
179 }); 162 });
180 163
181 test("does not reapply transform when a removed input is modified", () { 164 test("does not reapply transform when a removed input is modified", () {
182 var provider = new MockProvider({ 165 var transformer = new ManyToOneTransformer("txt");
166 initGraph({
183 "app|a.txt": "a.inc,b.inc", 167 "app|a.txt": "a.inc,b.inc",
184 "app|a.inc": "a", 168 "app|a.inc": "a",
185 "app|b.inc": "b" 169 "app|b.inc": "b"
186 }); 170 }, [[transformer]]);
187 171
188 var transformer = new ManyToOneTransformer("txt"); 172 updateSources(["app|a.txt", "app|a.inc", "app|b.inc"]);
189 var graph = new AssetGraph(provider, [[transformer]]);
190 173
191 graph.updateSources([ 174 expectAsset("app|a.out", "ab");
192 new AssetId.parse("app|a.txt"),
193 new AssetId.parse("app|a.inc"),
194 new AssetId.parse("app|b.inc")
195 ]);
196
197 expectAsset(graph, "app|a.out", "ab");
198 175
199 // Remove the dependency on the non-primary input. 176 // Remove the dependency on the non-primary input.
200 schedule(() { 177 schedule(() {
201 provider.modifyAsset("app|a.txt", "a.inc"); 178 modifyAsset("app|a.txt", "a.inc");
202 graph.updateSources([new AssetId.parse("app|a.txt")]); 179 updateSources(["app|a.txt"]);
203 }); 180 });
204 181
205 // Process it again. 182 // Process it again.
206 expectAsset(graph, "app|a.out", "a"); 183 expectAsset("app|a.out", "a");
207 184
208 // Now touch the removed input. It should not trigger another build. 185 // Now touch the removed input. It should not trigger another build.
209 schedule(() { 186 schedule(() {
210 graph.updateSources([new AssetId.parse("app|b.inc")]); 187 updateSources(["app|b.inc"]);
211 }); 188 });
212 189
213 expectAsset(graph, "app|a.out", "a"); 190 expectAsset("app|a.out", "a");
214 191
215 schedule(() { 192 schedule(() {
216 expect(transformer.numRuns, equals(2)); 193 expect(transformer.numRuns, equals(2));
217 }); 194 });
218 }); 195 });
219 196
220 test("allows a transform to generate multiple outputs", () { 197 test("allows a transform to generate multiple outputs", () {
221 var provider = new MockProvider({"app|foo.txt": "a.out,b.out"}); 198 initGraph({"app|foo.txt": "a.out,b.out"}, [
222 var graph = new AssetGraph(provider, [
223 [new OneToManyTransformer("txt")] 199 [new OneToManyTransformer("txt")]
224 ]); 200 ]);
225 201
226 graph.updateSources([new AssetId.parse("app|foo.txt")]); 202 updateSources(["app|foo.txt"]);
227 203
228 expectAsset(graph, "app|a.out", "spread txt"); 204 expectAsset("app|a.out", "spread txt");
229 expectAsset(graph, "app|b.out", "spread txt"); 205 expectAsset("app|b.out", "spread txt");
230 }); 206 });
231 207
232 test("does not rebuild transforms that don't use modified source", () { 208 test("does not rebuild transforms that don't use modified source", () {
233 var provider = new MockProvider(["app|foo.a", "app|foo.b"]);
234 var a = new RewriteTransformer("a", "aa"); 209 var a = new RewriteTransformer("a", "aa");
235 var aa = new RewriteTransformer("aa", "aaa"); 210 var aa = new RewriteTransformer("aa", "aaa");
236 var b = new RewriteTransformer("b", "bb"); 211 var b = new RewriteTransformer("b", "bb");
237 var bb = new RewriteTransformer("bb", "bbb"); 212 var bb = new RewriteTransformer("bb", "bbb");
238 213 initGraph(["app|foo.a", "app|foo.b"], [
239 var graph = new AssetGraph(provider, [
240 [a, b], 214 [a, b],
241 [aa, bb], 215 [aa, bb],
242 ]); 216 ]);
243 217
244 graph.updateSources([new AssetId.parse("app|foo.a")]); 218 updateSources(["app|foo.a"]);
245 graph.updateSources([new AssetId.parse("app|foo.b")]); 219 updateSources(["app|foo.b"]);
246 220
247 expectAsset(graph, "app|foo.aaa", "foo.aa.aaa"); 221 expectAsset("app|foo.aaa", "foo.aa.aaa");
248 expectAsset(graph, "app|foo.bbb", "foo.bb.bbb"); 222 expectAsset("app|foo.bbb", "foo.bb.bbb");
249 223
250 schedule(() { 224 schedule(() {
251 graph.updateSources([new AssetId.parse("app|foo.a")]); 225 updateSources(["app|foo.a"]);
252 }); 226 });
253 227
254 expectAsset(graph, "app|foo.aaa", "foo.aa.aaa"); 228 expectAsset("app|foo.aaa", "foo.aa.aaa");
255 expectAsset(graph, "app|foo.bbb", "foo.bb.bbb"); 229 expectAsset("app|foo.bbb", "foo.bb.bbb");
256 230
257 schedule(() { 231 schedule(() {
258 expect(aa.numRuns, equals(2)); 232 expect(aa.numRuns, equals(2));
259 expect(bb.numRuns, equals(1)); 233 expect(bb.numRuns, equals(1));
260 }); 234 });
261 }); 235 });
262 236
263 test("doesn't get an output from a transform whose primary input is removed", 237 test("doesn't get an output from a transform whose primary input is removed",
264 () { 238 () {
265 var provider = new MockProvider(["app|foo.txt"]); 239 initGraph(["app|foo.txt"], [
266 var graph = new AssetGraph(provider, [
267 [new RewriteTransformer("txt", "out")] 240 [new RewriteTransformer("txt", "out")]
268 ]); 241 ]);
269 242
270 graph.updateSources([new AssetId.parse("app|foo.txt")]); 243 updateSources(["app|foo.txt"]);
271 244 expectAsset("app|foo.out", "foo.out");
272 expectAsset(graph, "app|foo.out", "foo.out");
273 245
274 schedule(() { 246 schedule(() {
275 graph.removeSources([new AssetId.parse("app|foo.txt")]); 247 removeSources(["app|foo.txt"]);
276 }); 248 });
277 249
278 expectNoAsset(graph, "app|foo.out"); 250 expectNoAsset("app|foo.out");
279 }); 251 });
280 252
281 test("reapplies a transform when a non-primary input changes", () { 253 test("reapplies a transform when a non-primary input changes", () {
282 var provider = new MockProvider({ 254 initGraph({
283 "app|a.txt": "a.inc", 255 "app|a.txt": "a.inc",
284 "app|a.inc": "a" 256 "app|a.inc": "a"
257 }, [[new ManyToOneTransformer("txt")]]);
258
259 updateSources(["app|a.txt", "app|a.inc"]);
260 expectAsset("app|a.out", "a");
261
262 schedule(() {
263 modifyAsset("app|a.inc", "after");
264 updateSources(["app|a.inc"]);
285 }); 265 });
286 266
287 var graph = new AssetGraph(provider, [ 267 expectAsset("app|a.out", "after");
288 [new ManyToOneTransformer("txt")]
289 ]);
290
291 graph.updateSources([
292 new AssetId.parse("app|a.txt"),
293 new AssetId.parse("app|a.inc")
294 ]);
295
296 expectAsset(graph, "app|a.out", "a");
297
298 schedule(() {
299 provider.modifyAsset("app|a.inc", "after");
300 graph.updateSources([new AssetId.parse("app|a.inc")]);
301 });
302
303 expectAsset(graph, "app|a.out", "after");
304 }); 268 });
305 269
306 test("restarts processing if a change occurs during processing", () { 270 test("restarts processing if a change occurs during processing", () {
307 var provider = new MockProvider(["app|foo.txt"]);
308 var transformer = new RewriteTransformer("txt", "out"); 271 var transformer = new RewriteTransformer("txt", "out");
309 var graph = new AssetGraph(provider, [[transformer]]); 272 initGraph(["app|foo.txt"], [[transformer]]);
310 273
311 transformer.wait(); 274 transformer.wait();
312 275
313 schedule(() { 276 schedule(() {
314 graph.updateSources([new AssetId.parse("app|foo.txt")]); 277 updateSources(["app|foo.txt"]);
315 278
316 // Wait for the transform to start. 279 // Wait for the transform to start.
317 return transformer.started; 280 return transformer.started;
318 }); 281 });
319 282
320 schedule(() { 283 schedule(() {
321 // Now update the graph during it. 284 // Now update the graph during it.
322 graph.updateSources([new AssetId.parse("app|foo.txt")]); 285 updateSources(["app|foo.txt"]);
323 }); 286 });
324 287
325 schedule(() { 288 schedule(() {
326 transformer.complete(); 289 transformer.complete();
327 }); 290 });
328 291
329 expectAsset(graph, "app|foo.out", "foo.out"); 292 expectAsset("app|foo.out", "foo.out");
330 293
331 schedule(() { 294 schedule(() {
332 expect(transformer.numRuns, equals(2)); 295 expect(transformer.numRuns, equals(2));
333 }); 296 });
334 }); 297 });
335 298
336 test("handles an output moving from one transformer to another", () { 299 test("handles an output moving from one transformer to another", () {
337 // In the first run, "shared.out" is created by the "a.a" transformer. 300 // In the first run, "shared.out" is created by the "a.a" transformer.
338 var provider = new MockProvider({ 301 initGraph({
339 "app|a.a": "a.out,shared.out", 302 "app|a.a": "a.out,shared.out",
340 "app|b.b": "b.out" 303 "app|b.b": "b.out"
341 }); 304 }, [
342
343 var graph = new AssetGraph(provider, [
344 [new OneToManyTransformer("a"), new OneToManyTransformer("b")] 305 [new OneToManyTransformer("a"), new OneToManyTransformer("b")]
345 ]); 306 ]);
346 307
347 graph.updateSources([ 308 updateSources(["app|a.a", "app|b.b"]);
348 new AssetId.parse("app|a.a"),
349 new AssetId.parse("app|b.b")
350 ]);
351 309
352 expectAsset(graph, "app|a.out", "spread a"); 310 expectAsset("app|a.out", "spread a");
353 expectAsset(graph, "app|b.out", "spread b"); 311 expectAsset("app|b.out", "spread b");
354 expectAsset(graph, "app|shared.out", "spread a"); 312 expectAsset("app|shared.out", "spread a");
355 313
356 // Now switch their contents so that "shared.out" will be output by "b.b"'s 314 // Now switch their contents so that "shared.out" will be output by "b.b"'s
357 // transformer. 315 // transformer.
358 schedule(() { 316 schedule(() {
359 provider.modifyAsset("app|a.a", "a.out"); 317 modifyAsset("app|a.a", "a.out");
360 provider.modifyAsset("app|b.b", "b.out,shared.out"); 318 modifyAsset("app|b.b", "b.out,shared.out");
361 graph.updateSources([ 319 updateSources(["app|a.a", "app|b.b"]);
362 new AssetId.parse("app|a.a"),
363 new AssetId.parse("app|b.b")
364 ]);
365 }); 320 });
366 321
367 expectAsset(graph, "app|a.out", "spread a"); 322 expectAsset("app|a.out", "spread a");
368 expectAsset(graph, "app|b.out", "spread b"); 323 expectAsset("app|b.out", "spread b");
369 expectAsset(graph, "app|shared.out", "spread b"); 324 expectAsset("app|shared.out", "spread b");
370 }); 325 });
371 326
372 test("restarts before finishing later phases when a change occurs", () { 327 test("restarts before finishing later phases when a change occurs", () {
373 var provider = new MockProvider(["app|foo.txt", "app|bar.txt"]);
374
375 var txtToInt = new RewriteTransformer("txt", "int"); 328 var txtToInt = new RewriteTransformer("txt", "int");
376 var intToOut = new RewriteTransformer("int", "out"); 329 var intToOut = new RewriteTransformer("int", "out");
377 var graph = new AssetGraph(provider, [[txtToInt], [intToOut]]); 330 initGraph(["app|foo.txt", "app|bar.txt"], [[txtToInt], [intToOut]]);
378 331
379 txtToInt.wait(); 332 txtToInt.wait();
380 333
381 schedule(() { 334 schedule(() {
382 graph.updateSources([new AssetId.parse("app|foo.txt")]); 335 updateSources(["app|foo.txt"]);
383 336
384 // Wait for the first transform to start. 337 // Wait for the first transform to start.
385 return txtToInt.started; 338 return txtToInt.started;
386 }); 339 });
387 340
388 schedule(() { 341 schedule(() {
389 // Now update the graph during it. 342 // Now update the graph during it.
390 graph.updateSources([new AssetId.parse("app|bar.txt")]); 343 updateSources(["app|bar.txt"]);
391 }); 344 });
392 345
393 schedule(() { 346 schedule(() {
394 txtToInt.complete(); 347 txtToInt.complete();
395 }); 348 });
396 349
397 expectAsset(graph, "app|foo.out", "foo.int.out"); 350 expectAsset("app|foo.out", "foo.int.out");
398 expectAsset(graph, "app|bar.out", "bar.int.out"); 351 expectAsset("app|bar.out", "bar.int.out");
399 352
400 schedule(() { 353 schedule(() {
401 // Should only have run each transform once for each primary. 354 // Should only have run each transform once for each primary.
402 expect(txtToInt.numRuns, equals(2)); 355 expect(txtToInt.numRuns, equals(2));
403 expect(intToOut.numRuns, equals(2)); 356 expect(intToOut.numRuns, equals(2));
404 }); 357 });
405 }); 358 });
406 } 359 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698