c878108cc8
All non-pubspec changes generated by `dart format pkg/compiler`. Change-Id: Iadaa70974816d96ccb47813fe72d5a2bb83d6bda Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/400181 Reviewed-by: Nate Biggs <natebiggs@google.com> Commit-Queue: Mayank Patke <fishythefish@google.com>
88 lines
2.4 KiB
Dart
88 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:compiler/compiler_api.dart' as api;
|
|
import 'package:expect/async_helper.dart';
|
|
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',
|
|
);
|
|
});
|
|
}
|