545ee13cd4
Change-Id: I193e19581d29a9c4b343ae0a681d1ff530cfce1d Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/281309 Commit-Queue: Nate Biggs <natebiggs@google.com> Reviewed-by: Mayank Patke <fishythefish@google.com>
84 lines
2.4 KiB
Dart
84 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.
|
|
|
|
// 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_api.dart' as api;
|
|
import 'package:expect/expect.dart';
|
|
import 'package:compiler/src/util/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 = 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('', api.OutputType.js);
|
|
Expect.isNotNull(jsOutput);
|
|
if (mapping != null) {
|
|
find(jsOutput!, '//# sourceMappingURL=$mapping', true);
|
|
} else {
|
|
find(jsOutput!, '//# sourceMappingURL=', false);
|
|
}
|
|
String? jsSourceMapOutput = collector.getOutput('', api.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');
|
|
});
|
|
}
|