Chromium Code Reviews| 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 library barback.test.package_graph.declaring_transformer_test; | 5 library barback.test.package_graph.declaring_transformer_test; |
| 6 | 6 |
| 7 import 'package:barback/barback.dart'; | 7 import 'package:barback/barback.dart'; |
| 8 import 'package:barback/src/utils.dart'; | 8 import 'package:barback/src/utils.dart'; |
| 9 import 'package:scheduled_test/scheduled_test.dart'; | 9 import 'package:scheduled_test/scheduled_test.dart'; |
| 10 | 10 |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 184 }); | 184 }); |
| 185 | 185 |
| 186 test("a declaring transformer following a lazy transformer doesn't re-run if " | 186 test("a declaring transformer following a lazy transformer doesn't re-run if " |
| 187 "its input becomes available and then unavailable", () { | 187 "its input becomes available and then unavailable", () { |
| 188 var declaring = new DeclaringRewriteTransformer("two", "three"); | 188 var declaring = new DeclaringRewriteTransformer("two", "three"); |
| 189 initGraph(["app|foo.in"], {"app": [ | 189 initGraph(["app|foo.in"], {"app": [ |
| 190 [new LazyAssetsTransformer(["app|out.one", "app|out.two"])], | 190 [new LazyAssetsTransformer(["app|out.one", "app|out.two"])], |
| 191 [declaring] | 191 [declaring] |
| 192 ]}); | 192 ]}); |
| 193 | 193 |
| 194 // Start [declaring] running, because its input became available. | |
| 195 declaring.pauseApply(); | 194 declaring.pauseApply(); |
| 196 updateSources(["app|foo.in"]); | 195 updateSources(["app|foo.in"]); |
| 197 // Give the transformers time to declare their assets. | 196 // Give the transformers time to declare their assets. |
| 198 schedule(pumpEventQueue); | 197 schedule(pumpEventQueue); |
| 199 | 198 |
| 199 // Start [declaring] running, because its input became available. | |
| 200 expectAsset("app|out.one", "app|out.one"); | 200 expectAsset("app|out.one", "app|out.one"); |
| 201 expectAssetDoesNotComplete("app|out.three"); | 201 |
| 202 // Make sure we're blocking on [declaring.apply] | |
|
Bob Nystrom
2014/05/08 20:30:48
"."
nweiz
2014/05/08 21:12:36
Done.
| |
| 203 schedule(pumpEventQueue); | |
| 202 | 204 |
| 203 // Now [declaring]'s input is dirty, so it shouldn't re-run without an | 205 // Now [declaring]'s input is dirty, so it shouldn't re-run without an |
| 204 // explicit request. | 206 // explicit request. |
| 205 updateSources(["app|foo.in"]); | 207 updateSources(["app|foo.in"]); |
| 206 declaring.resumeApply(); | 208 declaring.resumeApply(); |
| 207 buildShouldSucceed(); | 209 buildShouldSucceed(); |
| 208 | 210 |
| 209 // [declaring] should only have run once, despite its input changing. After | 211 // [declaring] should only have run once, despite its input changing. After |
| 210 // the first run, it should be awaiting a force() call. | 212 // the first run, it should be awaiting a force() call. |
| 211 expect(declaring.numRuns, completion(equals(1))); | 213 expect(declaring.numRuns, completion(equals(1))); |
| 212 | 214 |
| 213 // Once we make a request, [declaring] should force the lazy transformer and | 215 // Once we make a request, [declaring] should force the lazy transformer and |
| 214 // then run itself. | 216 // then run itself. |
| 215 expectAsset("app|out.three", "app|out.two.three"); | 217 expectAsset("app|out.three", "app|out.two.three"); |
| 216 buildShouldSucceed(); | 218 buildShouldSucceed(); |
| 217 | 219 |
| 218 // Now [declaring] should have run twice. This ensures that it didn't use | 220 // Now [declaring] should have run twice. This ensures that it didn't use |
| 219 // its original output for some reason. | 221 // its original output for some reason. |
| 220 expect(declaring.numRuns, completion(equals(2))); | 222 expect(declaring.numRuns, completion(equals(2))); |
| 221 }); | 223 }); |
| 222 | 224 |
| 225 test("a declaring transformer following a lazy transformer does re-run if " | |
| 226 "its input becomes available, it's forced, and then its input becomes " | |
| 227 "unavailable", () { | |
| 228 var declaring = new DeclaringRewriteTransformer("two", "three"); | |
| 229 initGraph(["app|foo.in"], {"app": [ | |
| 230 [new LazyAssetsTransformer(["app|out.one", "app|out.two"])], | |
| 231 [declaring] | |
| 232 ]}); | |
| 233 | |
| 234 declaring.pauseApply(); | |
| 235 updateSources(["app|foo.in"]); | |
| 236 | |
| 237 // Give the transformers time to declare their assets. | |
| 238 schedule(pumpEventQueue); | |
| 239 | |
| 240 // Start [declaring] running, because its input became available. | |
| 241 expectAsset("app|out.one", "app|out.one"); | |
| 242 | |
| 243 // This shouldn't complete because [declaring.apply] is paused, but it | |
| 244 // should force the transformer. | |
| 245 expectAssetDoesNotComplete("app|out.three"); | |
| 246 | |
| 247 // Make sure we're blocking on [declaring.apply] | |
| 248 schedule(pumpEventQueue); | |
| 249 | |
| 250 // Now [declaring]'s input is dirty, so it shouldn't re-run without an | |
| 251 // explicit request. | |
| 252 updateSources(["app|foo.in"]); | |
| 253 declaring.resumeApply(); | |
| 254 buildShouldSucceed(); | |
| 255 | |
| 256 // [declaring] should have run twice, once for its original input and once | |
| 257 // after the input changed because it was forced. | |
| 258 expect(declaring.numRuns, completion(equals(2))); | |
| 259 }); | |
| 260 | |
| 223 group("with an error in declareOutputs", () { | 261 group("with an error in declareOutputs", () { |
| 224 test("still runs apply", () { | 262 test("still runs apply", () { |
| 225 initGraph(["app|foo.txt"], {"app": [[ | 263 initGraph(["app|foo.txt"], {"app": [[ |
| 226 new DeclaringBadTransformer("app|out.txt", | 264 new DeclaringBadTransformer("app|out.txt", |
| 227 declareError: true, applyError: false) | 265 declareError: true, applyError: false) |
| 228 ]]}); | 266 ]]}); |
| 229 | 267 |
| 230 updateSources(["app|foo.txt"]); | 268 updateSources(["app|foo.txt"]); |
| 231 expectAsset("app|out.txt", "bad out"); | 269 expectAsset("app|out.txt", "bad out"); |
| 232 expectAsset("app|foo.txt", "foo"); | 270 expectAsset("app|foo.txt", "foo"); |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 294 test("can declare outputs it doesn't emit", () { | 332 test("can declare outputs it doesn't emit", () { |
| 295 initGraph(["app|foo.txt"], {"app": [ | 333 initGraph(["app|foo.txt"], {"app": [ |
| 296 [new DeclareAssetsTransformer(["app|out.txt"], [])] | 334 [new DeclareAssetsTransformer(["app|out.txt"], [])] |
| 297 ]}); | 335 ]}); |
| 298 | 336 |
| 299 updateSources(["app|foo.txt"]); | 337 updateSources(["app|foo.txt"]); |
| 300 expectNoAsset("app|out.txt"); | 338 expectNoAsset("app|out.txt"); |
| 301 buildShouldSucceed(); | 339 buildShouldSucceed(); |
| 302 }); | 340 }); |
| 303 } | 341 } |
| OLD | NEW |