Files
sdk/pkg/compiler/test/sourcemaps/source_map_test.dart
T
Stephen Adams 618db8a41d [dart2js] Rename lib/compiler.dart to lib/compiler_api.dart
Always import 'lib/compiler_api.dart' with prefix 'api'.
Remove import of 'lib/src/compiler.dart' with prefix 'api'.

Some of the test helper files under 'compiler/test' are a little tedious
with lots of 'api.' prefixes and I could be convinced to change them
back but I think we should stick with always using a prefix under
'compiler/lib/'.

Change-Id: I3f82d7d31f1c90a860c9811fce031a64cea04ddb
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/241867
Reviewed-by: Joshua Litt <joshualitt@google.com>
Commit-Queue: Stephen Adams <sra@google.com>
2022-04-21 03:42:39 +00:00

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_api.dart' as api;
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('', 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');
});
}