# 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.

function_callbacks_structs_by_value_test: Pass, Slow # https://dartbug.com/47304 https://dartbug.com/45007
function_structs_by_value_generated_test: Pass, Slow # https://dartbug.com/47303 https://dartbug.com/45007

[ $builder_tag == msan ]
vmspecific_handle_test: Skip # https://dartbug.com/42314

[ $compiler == app_jitk ]
vmspecific_leaf_call_test: Skip # https://dartbug.com/46125: Snapshot fails to generate.

[ $mode == debug ]
function_callbacks_structs_by_value_generated_test: Pass, Slow

[ $mode == product ]
regress_47594_test: Skip # Profiler is not available in Product.

[ $system == android ]
*: Pass, Slow # https://github.com/dart-lang/sdk/issues/38489
regress_47594_test: Skip # DartDev is not available on Android.

[ $system == windows ]
regress_47594_test: Skip # DynamicLibrary.process() is not available on Windows.

[ $compiler != dart2analyzer && $compiler != fasta && $runtime != dart_precompiled && $runtime != vm ]
*: SkipByDesign # FFI is a VM-only feature. (This test suite is part of the default set.)

[ $compiler == dartkp && $system == windows ]
vmspecific_handle_test: SkipByDesign # Symbols are not exposed on purpose and are not linked in Windows Precompiled. dartbug.com/40579

[ $system != android && $system != linux && $system != macos && $system != windows ]
*: Skip # FFI not yet supported on other OSes.

[ $arch == simarm || $arch == simarm64 || $arch == simarm64c ]
*: Skip # FFI not yet supported on the arm simulator.

[ $builder_tag == asan || $builder_tag == msan || $builder_tag == tsan ]
data_not_asan_test: SkipByDesign # This test tries to allocate too much memory on purpose.

# These tests trigger and catch an abort (intentionally) and terminate the VM.
# They're incompatible with ASAN because not all memory is freed when aborting and
# with AppJit because the abort the VM before it can generate a snapshot.
[ $builder_tag == asan || $compiler == app_jitk ]
vmspecific_function_callbacks_exit_test: SkipByDesign

[ $compiler == dart2analyzer || $compiler == fasta ]
vmspecific_enable_ffi_test: SkipByDesign # This is a check for VM only.

[ $compiler == dartkp || $arch == arm64 && $system == fuchsia ]
abi_specific_int_incomplete_jit_test: SkipByDesign # Only intended to run in JIT mode.

[ $compiler != dartkp || $arch == arm64 && $system == fuchsia ]
abi_specific_int_incomplete_aot_test: SkipByDesign # Only intended to run in AOT mode.
