|  | import 'dart:io'; | 
|  |  | 
|  | import 'package:expect/expect.dart'; | 
|  |  | 
|  | 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); | 
|  |  | 
|  | checkSample('$out/run_main_kernel', ['$out/gen/hello_kernel.dart.snapshot']); | 
|  | checkSample('$out/run_two_programs_kernel', [ | 
|  | '$out/gen/program1_kernel.dart.snapshot', | 
|  | '$out/gen/program2_kernel.dart.snapshot', | 
|  | ]); | 
|  | checkSample('$out/run_timer_kernel', ['$out/gen/timer_kernel.dart.snapshot']); | 
|  | checkSample('$out/run_timer_async_kernel', [ | 
|  | '$out/gen/timer_kernel.dart.snapshot', | 
|  | ]); | 
|  | // FFI samples aren't built on some platforms. | 
|  | checkSample('$out/run_futures_kernel', [ | 
|  | '$out/gen/futures_kernel.dart.snapshot', | 
|  | ], skipIfNotBuilt: true); | 
|  |  | 
|  | // AOT Samples aren't built on some platforms. | 
|  | checkSample('$out/run_main_aot', [ | 
|  | '$out/hello_aot.snapshot', | 
|  | ], skipIfNotBuilt: true); | 
|  | checkSample('$out/run_two_programs_aot', [ | 
|  | '$out/program1_aot.snapshot', | 
|  | '$out/program2_aot.snapshot', | 
|  | ], skipIfNotBuilt: true); | 
|  | checkSample('$out/run_timer_aot', [ | 
|  | '$out/timer_aot.snapshot', | 
|  | ], skipIfNotBuilt: true); | 
|  | checkSample('$out/run_timer_async_aot', [ | 
|  | '$out/timer_aot.snapshot', | 
|  | ], skipIfNotBuilt: true); | 
|  | checkSample('$out/run_futures_aot', [ | 
|  | '$out/futures_aot.snapshot', | 
|  | ], skipIfNotBuilt: true); | 
|  | } |