diff --git a/.gitignore b/.gitignore index 3c7338f1ac8..5868805e7be 100644 --- a/.gitignore +++ b/.gitignore @@ -104,8 +104,3 @@ tools/xcodebuild /pkg/front_end/testcases/old_dills/ logs/logs.json logs/results.json -/async_lazy_debug.so -/dwarf.so -/dwarf_obfuscate.so -/il_tmp.txt - diff --git a/pkg/test_runner/lib/src/test_suite.dart b/pkg/test_runner/lib/src/test_suite.dart index e15ad6f792b..69c8f6d8873 100644 --- a/pkg/test_runner/lib/src/test_suite.dart +++ b/pkg/test_runner/lib/src/test_suite.dart @@ -812,12 +812,11 @@ class StandardTestSuite extends TestSuite { var commands = []; var compilerConfiguration = configuration.compilerConfiguration; + var environment = {...environmentOverrides, ...testFile.environment}; var compileTimeArguments = []; String tempDir; CommandArtifact? compilationArtifact; if (compilerConfiguration.hasCompiler) { - compileTimeArguments = compilerConfiguration.computeCompilerArguments( - testFile, vmOptions, args); // Avoid doing this for analyzer. var path = testFile.path; if (vmOptionsVariant != 0) { @@ -826,6 +825,15 @@ class StandardTestSuite extends TestSuite { } tempDir = createCompilationOutputDirectory(path); + vmOptions = [ + for (var opt in vmOptions) + opt.replaceAll(r'$TEST_COMPILATION_DIR', tempDir) + ]; + environment['TEST_COMPILATION_DIR'] = tempDir; + + compileTimeArguments = compilerConfiguration.computeCompilerArguments( + testFile, vmOptions, args); + for (var name in testFile.otherResources) { var namePath = Path(name); var fromPath = testFile.path.directoryPath.join(namePath); @@ -845,10 +853,10 @@ class StandardTestSuite extends TestSuite { return commands; } - vmOptions = vmOptions - .map((s) => - s.replaceAll("__RANDOM__", "${Random().nextInt(0x7fffffff)}")) - .toList(); + vmOptions = [ + for (var opt in vmOptions) + opt.replaceAll("__RANDOM__", "${Random().nextInt(0x7fffffff)}") + ]; var runtimeArguments = compilerConfiguration.computeRuntimeArguments( configuration.runtimeConfiguration, @@ -857,8 +865,6 @@ class StandardTestSuite extends TestSuite { args, compilationArtifact); - var environment = {...environmentOverrides, ...testFile.environment}; - return commands ..addAll(configuration.runtimeConfiguration.computeRuntimeCommands( compilationArtifact, diff --git a/tests/standalone/dwarf_stack_trace_invisible_functions_test.dart b/tests/standalone/dwarf_stack_trace_invisible_functions_test.dart index a9fe0f3bb8c..4c0f58902b4 100644 --- a/tests/standalone/dwarf_stack_trace_invisible_functions_test.dart +++ b/tests/standalone/dwarf_stack_trace_invisible_functions_test.dart @@ -2,7 +2,7 @@ // 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. -/// VMOptions=--dwarf-stack-traces --save-debugging-info=dwarf_invisible_functions.so +/// VMOptions=--dwarf-stack-traces --save-debugging-info=$TEST_COMPILATION_DIR/dwarf_invisible_functions.so import 'dart:io'; @@ -67,7 +67,9 @@ Future main() async { return; // Generated dwarf.so not available on the test device. } - final dwarf = Dwarf.fromFile("dwarf_invisible_functions.so")!; + final dwarf = Dwarf.fromFile(path.join( + Platform.environment["TEST_COMPILATION_DIR"]!, + "dwarf_invisible_functions.so"))!; await dwarf_stack_trace_test.checkStackTrace( rawStack, dwarf, expectedCallsInfo); diff --git a/tests/standalone/dwarf_stack_trace_obfuscate_test.dart b/tests/standalone/dwarf_stack_trace_obfuscate_test.dart index 23eb3f99a80..d109984ad94 100644 --- a/tests/standalone/dwarf_stack_trace_obfuscate_test.dart +++ b/tests/standalone/dwarf_stack_trace_obfuscate_test.dart @@ -2,7 +2,7 @@ // 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. -/// VMOptions=--dwarf-stack-traces --save-debugging-info=dwarf_obfuscate.so --obfuscate +/// VMOptions=--dwarf-stack-traces --save-debugging-info=$TEST_COMPILATION_DIR/dwarf_obfuscate.so --obfuscate import 'dart:io'; @@ -40,7 +40,8 @@ Future main() async { return; // Generated dwarf.so not available on the test device. } - final dwarf = Dwarf.fromFile("dwarf_obfuscate.so")!; + final dwarf = Dwarf.fromFile(path.join( + Platform.environment['TEST_COMPILATION_DIR']!, "dwarf_obfuscate.so"))!; await base.checkStackTrace(rawStack, dwarf, expectedCallsInfo); } diff --git a/tests/standalone/dwarf_stack_trace_test.dart b/tests/standalone/dwarf_stack_trace_test.dart index 257218c968f..34964fde434 100644 --- a/tests/standalone/dwarf_stack_trace_test.dart +++ b/tests/standalone/dwarf_stack_trace_test.dart @@ -2,7 +2,7 @@ // 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. -/// VMOptions=--dwarf-stack-traces --save-debugging-info=dwarf.so +/// VMOptions=--dwarf-stack-traces --save-debugging-info=$TEST_COMPILATION_DIR/dwarf.so import 'dart:convert'; import 'dart:io'; @@ -40,7 +40,8 @@ Future main() async { return; // Generated dwarf.so not available on the test device. } - final dwarf = Dwarf.fromFile("dwarf.so")!; + final dwarf = Dwarf.fromFile( + path.join(Platform.environment["TEST_COMPILATION_DIR"]!, "dwarf.so"))!; await checkStackTrace(rawStack, dwarf, expectedCallsInfo); } diff --git a/tests/standalone/io/socket_connect_dwarf_stacktrace_test.dart b/tests/standalone/io/socket_connect_dwarf_stacktrace_test.dart index 09da91dae3c..b61b3b9397c 100644 --- a/tests/standalone/io/socket_connect_dwarf_stacktrace_test.dart +++ b/tests/standalone/io/socket_connect_dwarf_stacktrace_test.dart @@ -2,7 +2,7 @@ // 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. // -// VMOptions=--dwarf-stack-traces --save-debugging-info=socket_connect_debug.so +// VMOptions=--dwarf-stack-traces --save-debugging-info=$TEST_COMPILATION_DIR/socket_connect_debug.so // // Tests stack trace on socket exceptions. // @@ -14,6 +14,7 @@ import "dart:io"; import "package:async_helper/async_helper.dart"; import "package:expect/expect.dart"; import "package:native_stack_traces/native_stack_traces.dart"; +import "package:path/path.dart" as path; Future> findFrames( Dwarf dwarf, RegExp re, StackTrace stackTrace) async { @@ -28,7 +29,9 @@ Future> findFrames( Future main() async { asyncStart(); - final dwarf = Dwarf.fromFile('socket_connect_debug.so')!; + final dwarf = Dwarf.fromFile(path.join( + Platform.environment['TEST_COMPILATION_DIR']!, + 'socket_connect_debug.so'))!; // Test stacktrace when lookup fails try { await WebSocket.connect('ws://localhost.tld:0/ws'); diff --git a/tests/standalone_2/dwarf_stack_trace_invisible_functions_test.dart b/tests/standalone_2/dwarf_stack_trace_invisible_functions_test.dart index 411ebd94364..509f5f91f30 100644 --- a/tests/standalone_2/dwarf_stack_trace_invisible_functions_test.dart +++ b/tests/standalone_2/dwarf_stack_trace_invisible_functions_test.dart @@ -4,7 +4,7 @@ // @dart = 2.9 -// VMOptions=--dwarf-stack-traces --save-debugging-info=dwarf_invisible_functions.so +// VMOptions=--dwarf-stack-traces --save-debugging-info=$TEST_COMPILATION_DIR/dwarf_invisible_functions.so import 'dart:io'; diff --git a/tests/standalone_2/dwarf_stack_trace_obfuscate_test.dart b/tests/standalone_2/dwarf_stack_trace_obfuscate_test.dart index f21fff13b62..c901b8a4fe6 100644 --- a/tests/standalone_2/dwarf_stack_trace_obfuscate_test.dart +++ b/tests/standalone_2/dwarf_stack_trace_obfuscate_test.dart @@ -4,7 +4,7 @@ // @dart = 2.9 -/// VMOptions=--dwarf-stack-traces --save-debugging-info=dwarf_obfuscate.so --obfuscate +/// VMOptions=--dwarf-stack-traces --save-debugging-info=$TEST_COMPILATION_DIR/dwarf_obfuscate.so --obfuscate import 'dart:io'; @@ -42,7 +42,8 @@ Future main() async { return; // Generated dwarf.so not available on the test device. } - final dwarf = Dwarf.fromFile("dwarf_obfuscate.so"); + final dwarf = Dwarf.fromFile(path.join( + Platform.environment['TEST_COMPILATION_DIR'], "dwarf_obfuscate.so")); await base.checkStackTrace(rawStack, dwarf, expectedCallsInfo); } diff --git a/tests/standalone_2/dwarf_stack_trace_test.dart b/tests/standalone_2/dwarf_stack_trace_test.dart index 5a96765294c..da4c9c22c2f 100644 --- a/tests/standalone_2/dwarf_stack_trace_test.dart +++ b/tests/standalone_2/dwarf_stack_trace_test.dart @@ -4,7 +4,7 @@ // @dart = 2.9 -/// VMOptions=--dwarf-stack-traces --save-debugging-info=dwarf.so +/// VMOptions=--dwarf-stack-traces --save-debugging-info=$TEST_COMPILATION_DIR/dwarf.so import 'dart:convert'; import 'dart:io'; @@ -42,7 +42,8 @@ Future main() async { return; // Generated dwarf.so not available on the test device. } - final dwarf = Dwarf.fromFile("dwarf.so"); + final dwarf = Dwarf.fromFile( + path.join(Platform.environment['TEST_COMPILATION_DIR'], "dwarf.so")); await checkStackTrace(rawStack, dwarf, expectedCallsInfo); } diff --git a/tests/standalone_2/io/socket_connect_dwarf_stacktrace_test.dart b/tests/standalone_2/io/socket_connect_dwarf_stacktrace_test.dart index d2f56b74dcc..7ff3a331247 100644 --- a/tests/standalone_2/io/socket_connect_dwarf_stacktrace_test.dart +++ b/tests/standalone_2/io/socket_connect_dwarf_stacktrace_test.dart @@ -2,7 +2,7 @@ // 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. // -// VMOptions=--dwarf-stack-traces --save-debugging-info=socket_connect_debug.so +// VMOptions=--dwarf-stack-traces --save-debugging-info=$TEST_COMPILATION_DIR/socket_connect_debug.so // // Tests stack trace on socket exceptions. // @@ -14,6 +14,7 @@ import "dart:io"; import "package:async_helper/async_helper.dart"; import "package:expect/expect.dart"; import "package:native_stack_traces/native_stack_traces.dart"; +import "package:path/path.dart"; Future> findFrames( Dwarf dwarf, RegExp re, StackTrace stackTrace) async { @@ -28,7 +29,8 @@ Future> findFrames( Future main() async { asyncStart(); - final dwarfFromFile = Dwarf.fromFile('socket_connect_debug.so'); + final dwarfFromFile = Dwarf.fromFile(path.join( + Platform.environment['TEST_COMPILATION_DIR'], 'socket_connect_debug.so')); if (dwarfFromFile == null) { Expect.fail('Debug binary is missing'); return;