Files
sdk/tests/ffi/vmspecific_enable_ffi_test.dart
Ankit Ranjan 6de2588d56 [vm/ffi] Migrate legacy multi-test files to Process.run
Migrates vmspecific_enable_ffi_test.dart and
abi_specific_int_incomplete_aot_test.dart away from legacy multi-test
markers. Since these tests verify VM/gen_snapshot compile-time errors
(not CFE errors), they cannot use // [cfe] expectations. Instead, they
now spawn a subprocess and verify the expected error is produced.

- vmspecific_enable_ffi_test: Runs helper with --enable-ffi=false, checks for error
- abi_specific_int_incomplete_aot_test: Compiles helper with `dart compile aot-snapshot`, checks for error

Both tests self-spawn AOT tooling (gen_snapshot) or the JIT `dart` CLI,
so they only run on the dartkp host bots and are skipped elsewhere
(ia32, android, fuchsia, qemu) via tests/ffi/ffi.status.

Fixes https://github.com/dart-lang/sdk/issues/60212

Change-Id: Ib2482c3172b20a4366f984da33544fc515b540c4
Cq-Include-Trybots: dart/try:vm-aot-android-debug-arm64c-try,vm-aot-android-debug-arm_x64-try,vm-aot-linux-debug-arm64-try,vm-aot-linux-debug-x64-try,vm-aot-linux-debug-x64c-try,vm-aot-mac-debug-arm64-try,vm-aot-mac-debug-x64-try,vm-aot-obfuscate-linux-release-x64-try,vm-aot-optimization-level-linux-release-x64-try,vm-aot-win-debug-arm64-try,vm-aot-win-debug-x64-try,vm-aot-win-debug-x64c-try,vm-asan-linux-release-arm64-try,vm-asan-linux-release-x64-try,vm-asan-mac-release-arm64-try,vm-asan-win-release-x64-try,vm-ffi-qemu-linux-release-arm-try,vm-ffi-qemu-linux-release-riscv64-try,vm-fuchsia-release-x64-try,vm-msan-linux-release-arm64-try,vm-msan-linux-release-x64-try,vm-tsan-linux-release-arm64-try,vm-tsan-linux-release-x64-try,vm-tsan-mac-release-arm64-try,vm-ubsan-linux-release-arm64-try,vm-ubsan-linux-release-x64-try,vm-ubsan-mac-release-arm64-try,vm-ubsan-win-release-x64-try
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/508020
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Auto-Submit: Ankit Ranjan <ankitranjandev@gmail.com>
Reviewed-by: Daco Harkes <dacoharkes@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
2026-06-11 07:25:59 -07:00

39 lines
1.1 KiB
Dart

// Copyright (c) 2019, 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.
//
// Dart test program for testing the --enable-ffi=false flag.
import 'dart:io';
import 'package:expect/expect.dart';
import 'package:path/path.dart' as path;
final _execSuffix = Platform.isWindows ? '.exe' : '';
void main() {
final buildDir = path.dirname(Platform.executable);
final sdkDir = path.dirname(path.dirname(buildDir));
// Use the JIT `dart` executable from the build directory rather than
// `Platform.executable`, which is the AOT runtime under dartkp and cannot run
// the source helper.
final dartExecutable = path.join(buildDir, 'dart$_execSuffix');
final helperPath = path.join(
sdkDir,
'tests',
'ffi',
'vmspecific_enable_ffi_test_helper.dart',
);
final result = Process.runSync(dartExecutable, [
'--enable-ffi=false',
helperPath,
]);
Expect.equals(254, result.exitCode);
Expect.contains(
'import of dart:ffi is not supported in the current Dart runtime',
result.stderr,
);
}