// Copyright (c) 2020, 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. import "dart:io"; import "package:async_helper/async_minitest.dart"; void generateIsolateSource(String filePath, String version) { File mainIsolate = new File(filePath); mainIsolate.writeAsStringSync(''' // @dart=$version void main() { try { int x = null as int; print("Weak Mode"); } catch (ex) { print("Strong Mode"); } } '''); } void generateOutput(String sourcePath, String outPath, String type) { var exec = Platform.resolvedExecutable; var args = []; args.add("--snapshot-kind=$type"); args.add("--snapshot=$outPath"); args.add(sourcePath); var result = Process.runSync(exec, args); print('snapshot $type stdout: ${result.stdout}'); print('snapshot $type stderr: ${result.stderr}'); } void generateKernel(String sourcePath, String outPath) { generateOutput(sourcePath, outPath, "kernel"); } void generateAppJIT(String sourcePath, String outPath) { generateOutput(sourcePath, outPath, "app-jit"); } void testNullSafetyMode(String filePath, String expected) { var exec = Platform.resolvedExecutable; var args = []; args.add(filePath); var result = Process.runSync(exec, args); print('test stdout: ${result.stdout}'); print('test stderr: ${result.stderr}'); expect(result.stdout.contains('$expected'), true); } void testNullSafetyMode1(String filePath, String expected) { var exec = Platform.resolvedExecutable; var args = []; args.add(filePath); var result = Process.runSync(exec, args); expect(result.stdout.contains('$expected'), true); }