| import 'dart:io'; | |
| import 'package:expect/expect.dart'; | |
| void checkSamples( | |
| String binaryBasename, | |
| List<String> args, { | |
| bool skipIfNotBuilt = false, | |
| }) { | |
| // Shared library variant. | |
| checkSample(binaryBasename, args, skipIfNotBuilt: skipIfNotBuilt); | |
| // Static variant. | |
| checkSample('${binaryBasename}_static', args, skipIfNotBuilt: skipIfNotBuilt); | |
| } | |
| void checkSample( | |
| String binary, | |
| List<String> args, { | |
| bool skipIfNotBuilt = false, | |
| }) { | |
| if (Platform.isWindows) { | |
| binary = '$binary.exe'; | |
| } | |
| if (!File(binary).existsSync()) { | |
| if (skipIfNotBuilt) { | |
| return; | |
| } else { | |
| Expect.fail('Binary $binary does not exist!'); | |
| } | |
| } | |
| final result = Process.runSync(binary, args); | |
| Expect.equals( | |
| 0, | |
| result.exitCode, | |
| 'process $binary failed:\n' | |
| ' exit code: ${result.exitCode}\n' | |
| ' -- stdout --\n' | |
| '${result.stdout}' | |
| ' -- stderr --\n' | |
| '${result.stderr}\n' | |
| ' ------------', | |
| ); | |
| } | |
| void main() { | |
| final executable = File(Platform.executable).absolute.path; | |
| final out = executable.substring(0, executable.lastIndexOf('dart') - 1); | |
| checkSamples('$out/run_main_kernel', ['$out/gen/hello_kernel.dart.snapshot']); | |
| checkSamples('$out/run_two_programs_kernel', [ | |
| '$out/gen/program1_kernel.dart.snapshot', | |
| '$out/gen/program2_kernel.dart.snapshot', | |
| ]); | |
| checkSamples('$out/run_timer_kernel', [ | |
| '$out/gen/timer_kernel.dart.snapshot', | |
| ]); | |
| checkSamples('$out/run_timer_async_kernel', [ | |
| '$out/gen/timer_kernel.dart.snapshot', | |
| ]); | |
| // FFI samples aren't built on some platforms. | |
| checkSamples('$out/run_futures_kernel', [ | |
| '$out/gen/futures_kernel.dart.snapshot', | |
| ], skipIfNotBuilt: true); | |
| // AOT Samples aren't built on some platforms. | |
| checkSamples('$out/run_main_aot', [ | |
| '$out/hello_aot.snapshot', | |
| ], skipIfNotBuilt: true); | |
| checkSamples('$out/run_two_programs_aot', [ | |
| '$out/program1_aot.snapshot', | |
| '$out/program2_aot.snapshot', | |
| ], skipIfNotBuilt: true); | |
| checkSamples('$out/run_timer_aot', [ | |
| '$out/timer_aot.snapshot', | |
| ], skipIfNotBuilt: true); | |
| checkSamples('$out/run_timer_async_aot', [ | |
| '$out/timer_aot.snapshot', | |
| ], skipIfNotBuilt: true); | |
| checkSamples('$out/run_futures_aot', [ | |
| '$out/futures_aot.snapshot', | |
| ], skipIfNotBuilt: true); | |
| } |