Index: pkg/barback/test/package_graph/transform/declaring_aggregate_test.dart |
diff --git a/pkg/barback/test/package_graph/transform/declaring_aggregate_test.dart b/pkg/barback/test/package_graph/transform/declaring_aggregate_test.dart |
deleted file mode 100644 |
index 3465f269ee38dc55a9a580f265fe7deffa25bdb2..0000000000000000000000000000000000000000 |
--- a/pkg/barback/test/package_graph/transform/declaring_aggregate_test.dart |
+++ /dev/null |
@@ -1,251 +0,0 @@ |
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-library barback.test.package_graph.transform.declaring_aggregate_test; |
- |
-import 'package:barback/src/utils.dart'; |
-import 'package:scheduled_test/scheduled_test.dart'; |
- |
-import '../../utils.dart'; |
- |
-main() { |
- initConfig(); |
- group("a declaring aggregate transformer", () { |
- test("is eager by default", () { |
- var transformer = new DeclaringAggregateManyToOneTransformer( |
- "txt", "out.txt"); |
- initGraph(["app|foo.txt"], {"app": [[transformer]]}); |
- |
- updateSources(["app|foo.txt"]); |
- buildShouldSucceed(); |
- |
- expect(transformer.numRuns, completion(equals(1))); |
- }); |
- |
- test("is deferred if any primary input is deferred", () { |
- var rewrite = new LazyRewriteTransformer("in", "txt"); |
- var aggregate = new DeclaringAggregateManyToOneTransformer( |
- "txt", "out.txt"); |
- initGraph(["app|foo.in", "app|bar.txt", "app|baz.txt"], {"app": [ |
- [rewrite] |
- ]}); |
- |
- updateSources(["app|foo.in", "app|bar.txt", "app|baz.txt"]); |
- buildShouldSucceed(); |
- |
- // Add [aggregate] to the graph after a build has been completed so that |
- // all its inputs are available immediately. Otherwise it could start |
- // applying eagerly before receiving its lazy input. |
- updateTransformers("app", [[rewrite], [aggregate]]); |
- buildShouldSucceed(); |
- expect(aggregate.numRuns, completion(equals(0))); |
- |
- expectAsset("app|out.txt", "bar\nbaz\nfoo.txt"); |
- buildShouldSucceed(); |
- expect(aggregate.numRuns, completion(equals(1))); |
- }); |
- |
- test("switches from eager to deferred if a deferred primary input is added", |
- () { |
- var transformer = new DeclaringAggregateManyToOneTransformer( |
- "txt", "out.txt"); |
- initGraph(["app|foo.in", "app|bar.txt", "app|baz.txt"], {"app": [ |
- [new LazyRewriteTransformer("in", "txt")], |
- [transformer] |
- ]}); |
- |
- updateSources(["app|bar.txt", "app|baz.txt"]); |
- buildShouldSucceed(); |
- expect(transformer.numRuns, completion(equals(1))); |
- |
- updateSources(["app|foo.in"]); |
- buildShouldSucceed(); |
- expect(transformer.numRuns, completion(equals(1))); |
- |
- expectAsset("app|out.txt", "bar\nbaz\nfoo.txt"); |
- buildShouldSucceed(); |
- expect(transformer.numRuns, completion(equals(2))); |
- }); |
- |
- test("switches from deferred to eager if its last deferred primary input " |
- "is removed", () { |
- var rewrite = new LazyRewriteTransformer("in", "txt"); |
- var aggregate = new DeclaringAggregateManyToOneTransformer( |
- "txt", "out.txt"); |
- initGraph(["app|foo.in", "app|bar.txt", "app|baz.txt"], {"app": [ |
- [rewrite] |
- ]}); |
- |
- updateSources(["app|foo.in", "app|bar.txt", "app|baz.txt"]); |
- buildShouldSucceed(); |
- |
- // Add [aggregate] to the graph after a build has been completed so that |
- // all its inputs are available immediately. Otherwise it could start |
- // applying eagerly before receiving its lazy input. |
- updateTransformers("app", [[rewrite], [aggregate]]); |
- buildShouldSucceed(); |
- expect(aggregate.numRuns, completion(equals(0))); |
- |
- removeSources(["app|foo.in"]); |
- buildShouldSucceed(); |
- expect(aggregate.numRuns, completion(equals(1))); |
- }); |
- |
- test("begins running eagerly when all its deferred primary inputs become " |
- "available", () { |
- var lazyPhase = [ |
- new LazyAssetsTransformer(["app|foo.txt", "app|foo.x"], |
- input: "app|foo.in"), |
- new LazyAssetsTransformer(["app|bar.txt", "app|bar.x"], |
- input: "app|bar.in") |
- ]; |
- var transformer = new DeclaringAggregateManyToOneTransformer( |
- "txt", "out.txt"); |
- initGraph(["app|foo.in", "app|bar.in", "app|baz.txt"], {"app": [ |
- lazyPhase, |
- ]}); |
- |
- updateSources(["app|foo.in", "app|bar.in", "app|baz.txt"]); |
- buildShouldSucceed(); |
- |
- // Add [transformer] to the graph after a build has been completed so that |
- // all its inputs are available immediately. Otherwise it could start |
- // applying eagerly before receiving its lazy inputs. |
- updateTransformers("app", [lazyPhase, [transformer]]); |
- buildShouldSucceed(); |
- expect(transformer.numRuns, completion(equals(0))); |
- |
- // Now "app|foo.txt" will be available, but "app|bar.txt" won't, so the |
- // [transformer] shouldn't run. |
- expectAsset("app|foo.x", "app|foo.x"); |
- buildShouldSucceed(); |
- expect(transformer.numRuns, completion(equals(0))); |
- |
- // Now "app|foo.txt" and "app|bar.txt" will both be available, so the |
- // [transformer] should run. |
- expectAsset("app|bar.x", "app|bar.x"); |
- buildShouldSucceed(); |
- expect(transformer.numRuns, completion(equals(1))); |
- }); |
- |
- test("stops running eagerly when any of its deferred primary inputs become " |
- "unavailable", () { |
- var lazyPhase = [ |
- new LazyAssetsTransformer(["app|foo.txt", "app|foo.x"], |
- input: "app|foo.in"), |
- new LazyAssetsTransformer(["app|bar.txt", "app|bar.x"], |
- input: "app|bar.in") |
- ]; |
- var transformer = new DeclaringAggregateManyToOneTransformer( |
- "txt", "out.txt"); |
- initGraph(["app|foo.in", "app|bar.in", "app|baz.txt"], {"app": [ |
- lazyPhase |
- ]}); |
- |
- updateSources(["app|foo.in", "app|bar.in", "app|baz.txt"]); |
- expectAsset("app|foo.x", "app|foo.x"); |
- expectAsset("app|bar.x", "app|bar.x"); |
- buildShouldSucceed(); |
- |
- // Add [transformer] to the graph after a build has been completed so that |
- // all its inputs are available immediately. Otherwise it could start |
- // applying eagerly before receiving its lazy inputs. |
- updateTransformers("app", [lazyPhase, [transformer]]); |
- buildShouldSucceed(); |
- expect(transformer.numRuns, completion(equals(1))); |
- |
- // Now "app|foo.txt" is unavailable, so the [transformer] shouldn't run. |
- updateSources(["app|foo.in"]); |
- buildShouldSucceed(); |
- expect(transformer.numRuns, completion(equals(1))); |
- }); |
- |
- test("re-declares its outputs for a new primary input", () { |
- initGraph(["app|foo.in", "app|bar.txt", "app|baz.txt"], {"app": [ |
- [new LazyRewriteTransformer("in", "txt")], |
- [new DeclaringAggregateManyToManyTransformer("txt")] |
- ]}); |
- |
- updateSources(["app|foo.in", "app|bar.txt"]); |
- buildShouldSucceed(); |
- |
- updateSources(["app|baz.txt"]); |
- buildShouldSucceed(); |
- |
- // If the aggregate transformer didn't re-declare its outputs upon getting |
- // a new primary input, getting "baz.txt" wouldn't trigger an apply and |
- // would just return the unmodified baz. |
- expectAsset("app|baz.txt", "modified baz"); |
- }); |
- |
- test("re-declares its outputs for a new primary input received while " |
- "applying", () { |
- var transformer = new DeclaringAggregateManyToManyTransformer("txt"); |
- initGraph(["app|foo.in", "app|bar.txt", "app|baz.txt"], {"app": [ |
- [new LazyRewriteTransformer("in", "txt")], |
- [transformer] |
- ]}); |
- |
- transformer.pauseApply(); |
- updateSources(["app|foo.in", "app|bar.txt"]); |
- |
- // Ensure we're waiting on `apply()`. |
- schedule(pumpEventQueue); |
- |
- updateSources(["app|baz.txt"]); |
- transformer.resumeApply(); |
- buildShouldSucceed(); |
- |
- expectAsset("app|baz.txt", "modified baz"); |
- }); |
- |
- test("re-declares its outputs for a new primary input received while " |
- "applying after a primary input was modified", () { |
- var transformer = new DeclaringAggregateManyToManyTransformer("txt"); |
- initGraph(["app|foo.in", "app|bar.txt", "app|baz.txt"], {"app": [ |
- [new LazyRewriteTransformer("in", "txt")], |
- [transformer] |
- ]}); |
- |
- transformer.pauseApply(); |
- updateSources(["app|foo.in", "app|bar.txt"]); |
- |
- // Ensure we're waiting on `apply()`. |
- schedule(pumpEventQueue); |
- |
- updateSources(["app|bar.txt"]); |
- |
- // Make sure the change to "bar.txt" is fully processed. |
- schedule(pumpEventQueue); |
- |
- updateSources(["app|baz.txt"]); |
- transformer.resumeApply(); |
- buildShouldSucceed(); |
- |
- expectAsset("app|baz.txt", "modified baz"); |
- }); |
- }); |
- |
- group("a lazy aggregate transformer", () { |
- test("doesn't run eagerly", () { |
- var transformer = new LazyAggregateManyToOneTransformer("txt", "out.txt"); |
- initGraph(["app|foo.txt"], {"app": [[transformer]]}); |
- |
- updateSources(["app|foo.txt"]); |
- buildShouldSucceed(); |
- |
- expect(transformer.numRuns, completion(equals(0))); |
- }); |
- |
- test("runs when an output is requested", () { |
- initGraph(["app|foo.txt"], {"app": [[ |
- new LazyAggregateManyToOneTransformer("txt", "out.txt") |
- ]]}); |
- |
- updateSources(["app|foo.txt"]); |
- buildShouldSucceed(); |
- expectAsset("app|out.txt", "foo"); |
- }); |
- }); |
-} |