20faaa5d94
Change-Id: Ib18f554c1076f27a3f7c0df5a36410da41a1f467 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/148784 Reviewed-by: Paul Berry <paulberry@google.com> Reviewed-by: Sigmund Cherem <sigmund@google.com>
86 lines
2.4 KiB
Dart
86 lines
2.4 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.
|
|
|
|
// @dart = 2.7
|
|
|
|
// 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:compiler/compiler_new.dart';
|
|
import 'package:expect/expect.dart';
|
|
import '../helpers/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))}');
|
|
}
|
|
}
|
|
|
|
test({String out, String sourceMap, String mapping, String file}) async {
|
|
OutputCollector collector = new OutputCollector();
|
|
List<String> options = <String>[];
|
|
if (out != null) {
|
|
options.add("--out=$out");
|
|
}
|
|
if (sourceMap != null) {
|
|
options.add("--source-map=$sourceMap");
|
|
}
|
|
|
|
await runCompiler(
|
|
entryPoint: Uri.parse('memory:/main.dart'),
|
|
memorySourceFiles: SOURCE,
|
|
showDiagnostics: true,
|
|
outputProvider: collector,
|
|
options: options);
|
|
String jsOutput = collector.getOutput('', OutputType.js);
|
|
Expect.isNotNull(jsOutput);
|
|
if (mapping != null) {
|
|
find(jsOutput, '//# sourceMappingURL=$mapping', true);
|
|
} else {
|
|
find(jsOutput, '//# sourceMappingURL=', false);
|
|
}
|
|
String jsSourceMapOutput = collector.getOutput('', OutputType.sourceMap);
|
|
Expect.isNotNull(jsSourceMapOutput);
|
|
if (file != null) {
|
|
find(jsSourceMapOutput, '"file": "$file"', true);
|
|
} else {
|
|
find(jsSourceMapOutput, '"file": ', false);
|
|
}
|
|
}
|
|
|
|
void main() {
|
|
asyncTest(() async {
|
|
await test();
|
|
await test(sourceMap: 'file:/out.js.map');
|
|
await test(out: 'file:/out.js');
|
|
await test(
|
|
out: 'file:/out.js',
|
|
sourceMap: 'file:/out.js.map',
|
|
file: 'out.js',
|
|
mapping: 'out.js.map');
|
|
await test(
|
|
out: 'file:/dir/out.js',
|
|
sourceMap: 'file:/dir/out.js.map',
|
|
file: 'out.js',
|
|
mapping: 'out.js.map');
|
|
});
|
|
}
|