| // 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()); |
| }); |
| } |