| OLD | NEW |
| 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 /// This library contains tests for transformer behavior that relates to actions | 5 /// This library contains tests for transformer behavior that relates to actions |
| 6 /// happening concurrently or other complex asynchronous timing behavior. | 6 /// happening concurrently or other complex asynchronous timing behavior. |
| 7 library barback.test.package_graph.transform.concurrency_test; | 7 library barback.test.package_graph.transform.concurrency_test; |
| 8 | 8 |
| 9 import 'package:barback/src/utils.dart'; | 9 import 'package:barback/src/utils.dart'; |
| 10 import 'package:scheduled_test/scheduled_test.dart'; | 10 import 'package:scheduled_test/scheduled_test.dart'; |
| (...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 ]}); | 498 ]}); |
| 499 | 499 |
| 500 pauseProvider(); | 500 pauseProvider(); |
| 501 updateSources(["app|foo.in"]); | 501 updateSources(["app|foo.in"]); |
| 502 expectAssetDoesNotComplete("app|foo.in"); | 502 expectAssetDoesNotComplete("app|foo.in"); |
| 503 | 503 |
| 504 resumeProvider(); | 504 resumeProvider(); |
| 505 expectAsset("app|foo.in", "foo"); | 505 expectAsset("app|foo.in", "foo"); |
| 506 buildShouldSucceed(); | 506 buildShouldSucceed(); |
| 507 }); | 507 }); |
| 508 |
| 509 test("re-runs if the primary input is invalidated before accessing", () { |
| 510 var transformer1 = new RewriteTransformer("txt", "mid"); |
| 511 var transformer2 = new RewriteTransformer("mid", "out"); |
| 512 |
| 513 initGraph([ |
| 514 "app|foo.txt" |
| 515 ], {"app": [ |
| 516 [transformer1], |
| 517 [transformer2] |
| 518 ]}); |
| 519 |
| 520 transformer2.pausePrimaryInput(); |
| 521 updateSources(["app|foo.txt"]); |
| 522 |
| 523 // Wait long enough to ensure that transformer1 has completed and |
| 524 // transformer2 has started. |
| 525 schedule(pumpEventQueue); |
| 526 |
| 527 // Update the source again so that transformer1 invalidates the primary |
| 528 // input of transformer2. |
| 529 transformer1.pauseApply(); |
| 530 modifyAsset("app|foo.txt", "new foo"); |
| 531 updateSources(["app|foo.txt"]); |
| 532 |
| 533 transformer2.resumePrimaryInput(); |
| 534 transformer1.resumeApply(); |
| 535 |
| 536 expectAsset("app|foo.out", "new foo.mid.out"); |
| 537 buildShouldSucceed(); |
| 538 |
| 539 expect(transformer1.numRuns, completion(equals(2))); |
| 540 expect(transformer2.numRuns, completion(equals(2))); |
| 541 }); |
| 508 } | 542 } |
| OLD | NEW |