OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS d.file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS d.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 pub_tests; | 5 library pub_tests; |
6 | 6 |
7 import 'package:pub/src/exit_codes.dart' as exit_codes; | 7 import 'package:pub/src/exit_codes.dart' as exit_codes; |
8 import 'package:scheduled_test/scheduled_test.dart'; | 8 import 'package:scheduled_test/scheduled_test.dart'; |
9 import 'package:scheduled_test/scheduled_stream.dart'; | 9 import 'package:scheduled_test/scheduled_stream.dart'; |
10 | 10 |
11 import '../descriptor.dart' as d; | 11 import '../descriptor.dart' as d; |
12 import '../test_pub.dart'; | 12 import '../test_pub.dart'; |
13 | 13 |
14 const SOURCE_MAPS_TRANSFORMER = """ | 14 const TRANSFORMER = """ |
15 import 'dart:async'; | 15 import 'dart:async'; |
16 | 16 |
17 import 'package:barback/barback.dart'; | 17 import 'package:barback/barback.dart'; |
18 import 'package:source_maps/source_maps.dart'; | |
19 | |
20 class RewriteTransformer extends Transformer { | |
21 RewriteTransformer.asPlugin(); | |
22 | |
23 String get allowedExtensions => '.txt'; | |
24 | |
25 Future apply(Transform transform) { | |
26 transform.logger.info('info!'); | |
27 transform.logger.warning('Warning!', | |
28 asset: transform.primaryInput.id.changeExtension('.foo')); | |
29 var sourceFile = new SourceFile.text( | |
30 'http://fake.com/not_real.dart', | |
31 'not a real\\ndart file'); | |
32 transform.logger.error('ERROR!', span: new FileSpan(sourceFile, 11)); | |
33 return transform.primaryInput.readAsString().then((contents) { | |
34 var id = transform.primaryInput.id.changeExtension(".out"); | |
35 transform.addOutput(new Asset.fromString(id, "\$contents.out")); | |
36 }); | |
37 } | |
38 } | |
39 """; | |
40 | |
41 const SOURCE_SPAN_TRANSFORMER = """ | |
42 import 'dart:async'; | |
43 | |
44 import 'package:barback/barback.dart'; | |
45 import 'package:source_span/source_span.dart'; | 18 import 'package:source_span/source_span.dart'; |
46 | 19 |
47 class RewriteTransformer extends Transformer { | 20 class RewriteTransformer extends Transformer { |
48 RewriteTransformer.asPlugin(); | 21 RewriteTransformer.asPlugin(); |
49 | 22 |
50 String get allowedExtensions => '.txt'; | 23 String get allowedExtensions => '.txt'; |
51 | 24 |
52 Future apply(Transform transform) { | 25 Future apply(Transform transform) { |
53 transform.logger.info('info!'); | 26 transform.logger.info('info!'); |
54 transform.logger.warning('Warning!', | 27 transform.logger.warning('Warning!', |
55 asset: transform.primaryInput.id.changeExtension('.foo')); | 28 asset: transform.primaryInput.id.changeExtension('.foo')); |
56 var sourceFile = new SourceFile('not a real\\ndart file', | 29 var sourceFile = new SourceFile('not a real\\ndart file', |
57 url: 'http://fake.com/not_real.dart'); | 30 url: 'http://fake.com/not_real.dart'); |
58 transform.logger.error('ERROR!', span: sourceFile.span(11, 12)); | 31 transform.logger.error('ERROR!', span: sourceFile.span(11, 12)); |
59 return transform.primaryInput.readAsString().then((contents) { | 32 return transform.primaryInput.readAsString().then((contents) { |
60 var id = transform.primaryInput.id.changeExtension(".out"); | 33 var id = transform.primaryInput.id.changeExtension(".out"); |
61 transform.addOutput(new Asset.fromString(id, "\$contents.out")); | 34 transform.addOutput(new Asset.fromString(id, "\$contents.out")); |
62 }); | 35 }); |
63 } | 36 } |
64 } | 37 } |
65 """; | 38 """; |
66 | 39 |
67 main() { | 40 main() { |
68 // This intentionally tests barback 0.14.2 with both transformers, since it | |
69 // supports both types of span. | |
70 withBarbackVersions("<0.15.0", () => runTest(SOURCE_MAPS_TRANSFORMER)); | |
71 withBarbackVersions(">=0.14.2", () => runTest(SOURCE_SPAN_TRANSFORMER)); | |
72 } | |
73 | |
74 void runTest(String transformerText) { | |
75 integration("can log messages", () { | 41 integration("can log messages", () { |
76 d.dir(appPath, [ | 42 d.dir(appPath, [ |
77 d.pubspec({ | 43 d.pubspec({ |
78 "name": "myapp", | 44 "name": "myapp", |
79 "transformers": ["myapp/src/transformer"] | 45 "transformers": ["myapp/src/transformer"] |
80 }), | 46 }), |
81 d.dir("lib", [d.dir("src", [ | 47 d.dir("lib", [d.dir("src", [ |
82 d.file("transformer.dart", transformerText) | 48 d.file("transformer.dart", TRANSFORMER) |
83 ])]), | 49 ])]), |
84 d.dir("web", [ | 50 d.dir("web", [ |
85 d.file("foo.txt", "foo") | 51 d.file("foo.txt", "foo") |
86 ]) | 52 ]) |
87 ]).create(); | 53 ]).create(); |
88 | 54 |
89 createLockFile('myapp', pkg: ['barback']); | 55 createLockFile('myapp', pkg: ['barback']); |
90 | 56 |
91 var pub = startPub(args: ["build"]); | 57 var pub = startPub(args: ["build"]); |
92 pub.stdout.expect(startsWith("Loading source assets...")); | 58 pub.stdout.expect(startsWith("Loading source assets...")); |
(...skipping 21 matching lines...) Loading... |
114 | 80 |
115 // In barback >=0.15.0, the span will point to the location where the error | 81 // In barback >=0.15.0, the span will point to the location where the error |
116 // occurred. | 82 // occurred. |
117 pub.stderr.expect(allow(inOrder(["d", "^"]))); | 83 pub.stderr.expect(allow(inOrder(["d", "^"]))); |
118 | 84 |
119 pub.stderr.expect("Build failed."); | 85 pub.stderr.expect("Build failed."); |
120 | 86 |
121 pub.shouldExit(exit_codes.DATA); | 87 pub.shouldExit(exit_codes.DATA); |
122 }); | 88 }); |
123 } | 89 } |
OLD | NEW |