Chromium Code Reviews| Index: dart/sdk/lib/_internal/pub/test/transformer/exclusion/works_on_aggregate_transformer_test.dart |
| diff --git a/dart/sdk/lib/_internal/pub/test/transformer/exclusion/works_on_aggregate_transformer_test.dart b/dart/sdk/lib/_internal/pub/test/transformer/exclusion/works_on_aggregate_transformer_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..6966866facbf4d66f30159046651b61b4e2a378b |
| --- /dev/null |
| +++ b/dart/sdk/lib/_internal/pub/test/transformer/exclusion/works_on_aggregate_transformer_test.dart |
| @@ -0,0 +1,71 @@ |
| +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS d.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 pub_tests; |
| + |
| +import '../../descriptor.dart' as d; |
| +import '../../test_pub.dart'; |
| +import '../../serve/utils.dart'; |
| + |
| +const AGGREGATE_TRANSFORMER = """ |
| +import 'dart:async'; |
| + |
| +import 'package:barback/barback.dart'; |
| +import 'package:path/path.dart' as p; |
| + |
| +class ManyToOneTransformer extends AggregateTransformer { |
| + ManyToOneTransformer.asPlugin(); |
| + |
| + String classifyPrimary(AssetId id) { |
| + if (id.extension != '.txt') return null; |
| + return p.url.dirname(id.path); |
| + } |
| + |
| + Future apply(AggregateTransform transform) { |
| + return transform.primaryInputs.toList().then((assets) { |
| + assets.sort((asset1, asset2) => asset1.id.path.compareTo(asset2.id.path)); |
|
Bob Nystrom
2014/06/09 22:05:48
I wonder if it's worth having a sort() utility met
nweiz
2014/06/10 19:19:36
Ruby has it in the standard library! I think this
|
| + return Future.wait(assets.map((asset) => asset.readAsString())); |
| + }).then((contents) { |
| + var id = new AssetId(transform.package, |
| + p.url.join(transform.key, 'out.txt')); |
| + transform.addOutput(new Asset.fromString(id, contents.join('\\n'))); |
| + }); |
| + } |
| +} |
| +"""; |
| + |
| +main() { |
| + initConfig(); |
| + withBarbackVersions(">=0.14.1-dev", () { |
| + integration("works on an aggregate transformer", () { |
| + d.dir(appPath, [ |
| + d.pubspec({ |
| + "name": "myapp", |
| + "transformers": [ |
| + { |
| + "myapp": { |
| + "\$include": ["web/a.txt", "web/b.txt"], |
| + "\$exclude": "web/a.txt" |
|
Bob Nystrom
2014/06/09 22:05:48
Would be good to add one more included asset so th
nweiz
2014/06/10 19:19:36
Done.
|
| + } |
| + } |
| + ] |
| + }), |
| + d.dir("lib", [ |
| + d.file("transformer.dart", AGGREGATE_TRANSFORMER), |
| + ]), |
| + d.dir("web", [ |
| + d.file("a.txt", "a"), |
| + d.file("b.txt", "b"), |
| + d.file("c.txt", "c") |
| + ]) |
| + ]).create(); |
| + |
| + createLockFile('myapp', pkg: ['barback']); |
| + |
| + pubServe(); |
| + requestShouldSucceed("out.txt", "b"); |
| + endPubServe(); |
| + }); |
| + }); |
| +} |