Chromium Code Reviews| Index: tests/compiler/dart2js/source_map_test.dart |
| diff --git a/tests/compiler/dart2js/source_map_test.dart b/tests/compiler/dart2js/source_map_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..81ce5f508dc19c5d04ce15db338eb727741363ef |
| --- /dev/null |
| +++ b/tests/compiler/dart2js/source_map_test.dart |
| @@ -0,0 +1,74 @@ |
| +// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS 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. |
| + |
| +// Test that options '--source-map' and '--out' correctly adds |
| +// `sourceMappingURL` and "file" attributes to source file and source map file. |
| + |
| +library test.source_map; |
| + |
| +import 'package:async_helper/async_helper.dart'; |
| +import 'package:expect/expect.dart'; |
| +import 'memory_compiler.dart'; |
| + |
| +const SOURCE = const { |
| + '/main.dart': """ |
| +main() {} |
| +""", |
| +}; |
| + |
| +void find(String text, String substring, bool expected) { |
| + bool found = text.contains(substring); |
| + |
| + if (expected && !found) { |
| + Expect.isTrue(found, 'Expected "$substring" in:\n$text'); |
| + } |
| + if (!expected && found) { |
| + Expect.isFalse(found, |
| + 'Unexpected "$substring" in:\n' |
| + '${text.substring(text.indexOf(substring))}'); |
| + } |
| +} |
| + |
| +void test({String out, String sourceMap, String mapping, String file}) { |
| + OutputCollector collector = new OutputCollector(); |
| + List<String> options = <String>[]; |
| + if (out != null) { |
| + options.add("--out=$out"); |
| + } |
| + if (sourceMap != null) { |
| + options.add("--source-map=$sourceMap"); |
| + } |
| + var compiler = compilerFor(SOURCE, |
| + showDiagnostics: true, |
| + outputProvider: collector, |
| + options: options); |
| + asyncTest(() => compiler.runCompiler(Uri.parse('memory:/main.dart')).then((_) { |
|
floitsch
2014/03/07 10:27:24
long line.
Johnni Winther
2014/03/07 12:38:48
Done.
|
| + String jsOutput = collector.getOutput('', 'js'); |
| + Expect.isNotNull(jsOutput); |
| + if (mapping != null) { |
| + find(jsOutput, '//# sourceMappingURL=$mapping', true); |
| + find(jsOutput, '//@ sourceMappingURL=$mapping', true); |
| + } else { |
| + find(jsOutput, '//# sourceMappingURL=', false); |
| + find(jsOutput, '//@ sourceMappingURL=', false); |
| + } |
| + String jsSourceMapOutput = collector.getOutput('', 'js.map'); |
| + Expect.isNotNull(jsSourceMapOutput); |
| + if (file != null) { |
| + find(jsSourceMapOutput, '"file": "$file"', true); |
| + } else { |
| + find(jsSourceMapOutput, '"file": ', false); |
| + } |
| + })); |
| +} |
| + |
| +void main() { |
| + test(); |
| + test(sourceMap: 'file:/out.js.map'); |
| + test(out: 'file:/out.js'); |
| + test(out: 'file:/out.js', sourceMap: 'file:/out.js.map', |
| + file: 'out.js', mapping: 'out.js.map'); |
| + test(out: 'file:/dir/out.js', sourceMap: 'file:/dir/out.js.map', |
| + file: 'out.js', mapping: 'out.js.map'); |
| +} |