blob: cc3968c46828bbd73d565c4bfb93f0b6c85530e8 [file] [log] [blame]
// Copyright (c) 2021, 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.
// This test is ensuring that the flag for --code-comments given at
// AOT compile-time will be used at runtime (irrespective if other values were
// passed to the runtime).
import "dart:async";
import "dart:io";
import 'package:expect/expect.dart';
import 'package:path/path.dart' as path;
import 'use_flag_test_helper.dart';
main(List<String> args) async {
if (!isAOTRuntime) {
return; // Running in JIT: AOT binaries not available.
}
if (Platform.isAndroid) {
return; // SDK tree and dart_bootstrap not available on the test device.
}
await withTempDir('code-comments-test', (String tempDir) async {
final script = path.join(sdkDir, 'pkg/kernel/bin/dump.dart');
final scriptDill = path.join(tempDir, 'kernel_dump.dill');
// Compile script to Kernel IR.
await run(genKernel, <String>[
'--aot',
'--platform=$platformDill',
'-o',
scriptDill,
script,
]);
// Run the AOT compiler with/without code comments.
final scriptCommentedSnapshot = path.join(tempDir, 'comments.snapshot');
final scriptUncommentedSnapshot =
path.join(tempDir, 'no_comments.snapshot');
await Future.wait(<Future>[
run(genSnapshot, <String>[
'--code-comments',
'--snapshot-kind=app-aot-elf',
'--elf=$scriptCommentedSnapshot',
scriptDill,
]),
run(genSnapshot, <String>[
'--no-code-comments',
'--snapshot-kind=app-aot-elf',
'--elf=$scriptUncommentedSnapshot',
scriptDill,
]),
]);
// Run the AOT compiled script with code comments enabled.
final commentsOut1 = path.join(tempDir, 'comments-out1.txt');
final commentsOut2 = path.join(tempDir, 'comments-out2.txt');
await Future.wait(<Future>[
run(aotRuntime, <String>[
'--code-comments',
scriptCommentedSnapshot,
scriptDill,
commentsOut1,
]),
run(aotRuntime, <String>[
'--no-code-comments',
scriptCommentedSnapshot,
scriptDill,
commentsOut2,
]),
]);
// Run the AOT compiled script with code comments disabled.
final uncommentedOut1 = path.join(tempDir, 'uncommented-out1.txt');
final uncommentedOut2 = path.join(tempDir, 'uncommented-out2.txt');
await Future.wait(<Future>[
run(aotRuntime, <String>[
'--code-comments',
scriptUncommentedSnapshot,
scriptDill,
uncommentedOut1,
]),
run(aotRuntime, <String>[
'--no-code-comments',
scriptUncommentedSnapshot,
scriptDill,
uncommentedOut2,
]),
]);
// Ensure we got the same result each time.
final output = await File(commentsOut1).readAsString();
Expect.equals(output, await File(commentsOut2).readAsString());
Expect.equals(output, await File(uncommentedOut1).readAsString());
Expect.equals(output, await File(uncommentedOut2).readAsString());
});
}