e3fc4903d5
BUG= http://dartbug.com/11914 R=johnniwinther@google.com Review URL: https://codereview.chromium.org//360283002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37877 260f80e4-7a28-3924-810f-c04153c831b5
73 lines
2.3 KiB
Dart
73 lines
2.3 KiB
Dart
// 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(
|
|
(_) {
|
|
String jsOutput = collector.getOutput('', 'js');
|
|
Expect.isNotNull(jsOutput);
|
|
if (mapping != null) {
|
|
find(jsOutput, '//# sourceMappingURL=$mapping', true);
|
|
} else {
|
|
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');
|
|
} |