diff --git a/pkg/test_runner/lib/src/configuration.dart b/pkg/test_runner/lib/src/configuration.dart index 6c413d7981d..ba2f2da7ec1 100644 --- a/pkg/test_runner/lib/src/configuration.dart +++ b/pkg/test_runner/lib/src/configuration.dart @@ -68,7 +68,8 @@ class TestConfiguration { this.outputDirectory, this.reproducingArguments, this.fastTestsOnly, - this.printPassingStdout}) + this.printPassingStdout, + this.useQemu}) : _packages = packages; final Map selectors; @@ -97,6 +98,7 @@ class TestConfiguration { final bool writeResults; final bool writeLogs; final bool printPassingStdout; + final bool useQemu; Architecture get architecture => configuration.architecture; Compiler get compiler => configuration.compiler; diff --git a/pkg/test_runner/lib/src/options.dart b/pkg/test_runner/lib/src/options.dart index a9707d5d030..cedfc85ac9d 100644 --- a/pkg/test_runner/lib/src/options.dart +++ b/pkg/test_runner/lib/src/options.dart @@ -188,6 +188,8 @@ test options, specifying how tests should be run.''', _Option.bool('use_elf', 'Directly generate an ELF shared libraries for precompilation.', hide: true), + _Option.bool('use_qemu', 'Use qemu to test arm32 on x64 host machines.', + hide: true), _Option.bool('keep_generated_files', 'Keep any generated files.', abbr: 'k'), _Option.int('timeout', 'Timeout in seconds.', abbr: 't'), @@ -749,7 +751,8 @@ compiler.''', reproducingArguments: _reproducingCommand(data, namedConfiguration != null), fastTestsOnly: data["fast_tests"] as bool, - printPassingStdout: data["print_passing_stdout"] as bool); + printPassingStdout: data["print_passing_stdout"] as bool, + useQemu: data["use_qemu"] as bool); if (configuration.validate()) { result.add(configuration); diff --git a/pkg/test_runner/lib/src/runtime_configuration.dart b/pkg/test_runner/lib/src/runtime_configuration.dart index 78bfe6b08a3..b377f637bb6 100644 --- a/pkg/test_runner/lib/src/runtime_configuration.dart +++ b/pkg/test_runner/lib/src/runtime_configuration.dart @@ -273,6 +273,10 @@ class StandaloneDartRuntimeConfiguration extends DartVmRuntimeConfiguration { if (type == 'application/kernel-ir-fully-linked') { executable = dartVmExecutableFileName; } + if (_configuration.useQemu) { + arguments.insertAll(0, ['-L', '/usr/arm-linux-gnueabihf/', executable]); + executable = 'qemu-arm'; + } return [VMCommand(executable, arguments, environmentOverrides)]; } }