Chromium Code Reviews| OLD | NEW |
|---|---|
| 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.package_graph.group_test; | 5 library barback.test.package_graph.group_test; |
| 6 | 6 |
| 7 import 'dart:async'; | |
| 8 | |
| 7 import 'package:barback/barback.dart'; | 9 import 'package:barback/barback.dart'; |
| 8 import 'package:scheduled_test/scheduled_test.dart'; | 10 import 'package:scheduled_test/scheduled_test.dart'; |
| 9 | 11 |
| 10 import '../utils.dart'; | 12 import '../utils.dart'; |
| 11 | 13 |
| 12 main() { | 14 main() { |
| 13 initConfig(); | 15 initConfig(); |
| 14 test("runs transforms in a group", () { | 16 test("runs transforms in a group", () { |
| 15 initGraph(["app|foo.a"], {"app": [ | 17 initGraph(["app|foo.a"], {"app": [ |
| 16 [new TransformerGroup([ | 18 [new TransformerGroup([ |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 306 test("doesn't detect a collision for an input that's modified in-place by " | 308 test("doesn't detect a collision for an input that's modified in-place by " |
| 307 "a group", () { | 309 "a group", () { |
| 308 initGraph(["app|foo.a"], {"app": [[ | 310 initGraph(["app|foo.a"], {"app": [[ |
| 309 new TransformerGroup([[new RewriteTransformer("a", "a")]]), | 311 new TransformerGroup([[new RewriteTransformer("a", "a")]]), |
| 310 new RewriteTransformer("x", "y") | 312 new RewriteTransformer("x", "y") |
| 311 ]]}); | 313 ]]}); |
| 312 updateSources(["app|foo.a"]); | 314 updateSources(["app|foo.a"]); |
| 313 expectAsset("app|foo.a", "foo.a"); | 315 expectAsset("app|foo.a", "foo.a"); |
| 314 buildShouldSucceed(); | 316 buildShouldSucceed(); |
| 315 }); | 317 }); |
| 318 | |
| 319 test("doesn't pass-through an asset that ceases to be forwarded due to a " | |
| 320 "resolved collision", () { | |
| 321 initGraph({ | |
| 322 "app|foo.a": "foo.a", | |
| 323 "app|foo.x": "foo.x" | |
| 324 }, {"app": [ | |
| 325 [new TransformerGroup([[ | |
| 326 new CheckContentAndRenameTransformer( | |
| 327 "a", "new foo.a", "z", "modified foo.a"), | |
| 328 new RewriteTransformer('x', 'a') | |
| 329 ]])] | |
| 330 ]}); | |
| 331 | |
| 332 updateSources(["app|foo.a", "app|foo.x"]); | |
| 333 expectAsset("app|foo.a", "foo.a"); | |
| 334 expectNoAsset("app|foo.z"); | |
| 335 buildShouldFail([isAssetCollisionException("app|foo.a")]); | |
| 336 | |
| 337 modifyAsset('app|foo.a', 'new foo.a'); | |
| 338 updateSources(["app|foo.a"]); | |
| 339 expectAsset("app|foo.a", "foo.x.a"); | |
| 340 expectAsset("app|foo.z", "modified foo.a"); | |
| 341 buildShouldSucceed(); | |
| 342 }); | |
| 316 }); | 343 }); |
| 317 | 344 |
| 318 test("runs transforms in an added group", () { | 345 test("runs transforms in an added group", () { |
| 319 var rewrite = new RewriteTransformer("a", "z"); | 346 var rewrite = new RewriteTransformer("a", "z"); |
| 320 initGraph(["app|foo.a"], {"app": [[rewrite]]}); | 347 initGraph(["app|foo.a"], {"app": [[rewrite]]}); |
| 321 | 348 |
| 322 updateSources(["app|foo.a"]); | 349 updateSources(["app|foo.a"]); |
| 323 expectAsset("app|foo.z", "foo.z"); | 350 expectAsset("app|foo.z", "foo.z"); |
| 324 buildShouldSucceed(); | 351 buildShouldSucceed(); |
| 325 | 352 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 392 new TransformerGroup([ | 419 new TransformerGroup([ |
| 393 [new RewriteTransformer("a", "b")], | 420 [new RewriteTransformer("a", "b")], |
| 394 [new RewriteTransformer("b", "c")] | 421 [new RewriteTransformer("b", "c")] |
| 395 ]), | 422 ]), |
| 396 new RewriteTransformer("x", "c") | 423 new RewriteTransformer("x", "c") |
| 397 ]]}); | 424 ]]}); |
| 398 updateSources(["app|foo.a", "app|foo.x"]); | 425 updateSources(["app|foo.a", "app|foo.x"]); |
| 399 buildShouldFail([isAssetCollisionException("app|foo.c")]); | 426 buildShouldFail([isAssetCollisionException("app|foo.c")]); |
| 400 }); | 427 }); |
| 401 } | 428 } |
| 429 | |
| 430 /// A transformer that checks the extension and content of an asset, then | |
| 431 /// produces a new asset with a new extension and new content. | |
| 432 class CheckContentAndRenameTransformer extends MockTransformer { | |
|
Bob Nystrom
2013/10/08 21:07:36
Move this to its own file in test/transformer.
nweiz
2013/10/08 22:20:12
Done. I didn't do that originally because it seeme
| |
| 433 final String oldExtension; | |
| 434 final String oldContent; | |
| 435 final String newExtension; | |
| 436 final String newContent; | |
| 437 | |
| 438 CheckContentAndRenameTransformer(this.oldExtension, this.oldContent, | |
| 439 this.newExtension, this.newContent); | |
| 440 | |
| 441 Future<bool> doIsPrimary(Asset asset) { | |
| 442 if (asset.id.extension != '.$oldExtension') return new Future.value(false); | |
| 443 return asset.readAsString().then((value) => value == oldContent); | |
| 444 } | |
| 445 | |
| 446 Future doApply(Transform transform) { | |
| 447 return getPrimary(transform).then((input) { | |
| 448 transform.addOutput(new Asset.fromString( | |
| 449 input.id.changeExtension('.$newExtension'), newContent)); | |
| 450 }); | |
| 451 } | |
| 452 } | |
| OLD | NEW |