Chromium Code Reviews| Index: dart/sdk/lib/_internal/pub/test/transformer/loads_an_aggregate_transformer_test.dart |
| diff --git a/dart/sdk/lib/_internal/pub/test/transformer/loads_an_aggregate_transformer_test.dart b/dart/sdk/lib/_internal/pub/test/transformer/loads_an_aggregate_transformer_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b093f9b2cdd9ca9e1dba535d97abb0776b36bd1d |
| --- /dev/null |
| +++ b/dart/sdk/lib/_internal/pub/test/transformer/loads_an_aggregate_transformer_test.dart |
| @@ -0,0 +1,63 @@ |
| +// 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)); |
| + 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("loads an aggregate transformer", () { |
| + d.dir(appPath, [ |
| + d.pubspec({ |
| + "name": "myapp", |
| + "transformers": ["myapp"] |
| + }), |
| + d.dir("lib", [ |
| + d.file("transformer.dart", AGGREGATE_TRANSFORMER), |
| + ]), |
| + d.dir("web", [ |
| + d.file("foo.txt", "foo"), |
| + d.file("bar.txt", "bar") |
| + ]) |
| + ]).create(); |
| + |
| + createLockFile('myapp', pkg: ['barback']); |
| + |
| + pubServe(); |
| + requestShouldSucceed("out.txt", "bar\nfoo"); |
|
Bob Nystrom
2014/06/09 22:05:48
Shouldn't this be "\\n" too?
nweiz
2014/06/10 19:19:36
No; the previous one is double-escaped because it'
Bob Nystrom
2014/06/10 19:44:40
Oh, right.
|
| + endPubServe(); |
| + }); |
| + }); |
| +} |