| Index: pkg/barback/test/package_graph/transform/concurrency_test.dart | 
| diff --git a/pkg/barback/test/package_graph/transform/concurrency_test.dart b/pkg/barback/test/package_graph/transform/concurrency_test.dart | 
| index 3dd2da2f39011f33235cac6a301671db8da519cc..5b0d2e9709beabf82686353bc5f67a0698568187 100644 | 
| --- a/pkg/barback/test/package_graph/transform/concurrency_test.dart | 
| +++ b/pkg/barback/test/package_graph/transform/concurrency_test.dart | 
| @@ -505,4 +505,38 @@ main() { | 
| expectAsset("app|foo.in", "foo"); | 
| buildShouldSucceed(); | 
| }); | 
| + | 
| +  test("re-runs if the primary input is invalidated before accessing", () { | 
| +    var transformer1 = new RewriteTransformer("txt", "mid"); | 
| +    var transformer2 = new RewriteTransformer("mid", "out"); | 
| + | 
| +    initGraph([ | 
| +      "app|foo.txt" | 
| +    ], {"app": [ | 
| +      [transformer1], | 
| +      [transformer2] | 
| +    ]}); | 
| + | 
| +    transformer2.pausePrimaryInput(); | 
| +    updateSources(["app|foo.txt"]); | 
| + | 
| +    // Wait long enough to ensure that transformer1 has completed and | 
| +    // transformer2 has started. | 
| +    schedule(pumpEventQueue); | 
| + | 
| +    // Update the source again so that transformer1 invalidates the primary | 
| +    // input of transformer2. | 
| +    transformer1.pauseApply(); | 
| +    modifyAsset("app|foo.txt", "new foo"); | 
| +    updateSources(["app|foo.txt"]); | 
| + | 
| +    transformer2.resumePrimaryInput(); | 
| +    transformer1.resumeApply(); | 
| + | 
| +    expectAsset("app|foo.out", "new foo.mid.out"); | 
| +    buildShouldSucceed(); | 
| + | 
| +    expect(transformer1.numRuns, completion(equals(2))); | 
| +    expect(transformer2.numRuns, completion(equals(2))); | 
| +  }); | 
| } | 
|  |