# 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_args_leaf_test: Pass, Slow # https://dartbug.com/47303 https://dartbug.com/45007
function_structs_by_value_generated_args_test: Pass, Slow # https://dartbug.com/47303 https://dartbug.com/45007
function_structs_by_value_generated_ret_arg_leaf_test: Pass, Slow # https://dartbug.com/47303 https://dartbug.com/45007
function_structs_by_value_generated_ret_arg_test: Pass, Slow # https://dartbug.com/47303 https://dartbug.com/45007
function_structs_by_value_generated_ret_leaf_test: Pass, Slow # https://dartbug.com/47303 https://dartbug.com/45007
function_structs_by_value_generated_ret_test: Pass, Slow # https://dartbug.com/47303 https://dartbug.com/45007

[ $builder_tag == optimization_counter_threshold ]
aliasing_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
function_callbacks_structs_by_value_generated_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
function_callbacks_structs_by_value_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
function_callbacks_very_many_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
function_structs_by_value_generated_args_leaf_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
function_structs_by_value_generated_args_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
function_structs_by_value_generated_ret_arg_leaf_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
function_structs_by_value_generated_ret_arg_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
function_structs_by_value_generated_ret_leaf_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
function_structs_by_value_generated_ret_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
function_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
function_very_many_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
hardfp_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
regress_43016_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
structs_nnbd_workaround_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
structs_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
variance_function_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
vmspecific_function_gc_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold
vmspecific_function_test: SkipByDesign # Already has VMOptions=--optimization-counter-threshold

[ $compiler == app_jitk ]
native_assets/asset_*: SkipByDesign # Only intended to run from source. https://dartbug.com/51266
native_assets/infer_native_assets_yaml_*: SkipByDesign # Only intended to run from source. https://dartbug.com/51265
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.

[ $nnbd == weak ]
vmspecific_pointer_load_il_test: SkipByDesign # Unsound NNBD boxes things because of nulls.

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

[ $system == fuchsia ]
static_checks/*: SkipByDesign # Expecting compile time failures in multi tests doesn't work on the Fuchsia test runner.
vmspecific_pointer_load_il_test: SkipByDesign # Not bloating the Fuchsia test package with package:vm/testing/il_matchers.dart

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

[ $qemu ]
native_assets/*: SkipByDesign # Only intended to run on host oses with AOT binaries available, not available on QEMU.

[ $simulator ]
*: Skip # FFI not yet supported on the arm simulator.

[ $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_ffi_native_handles_test: SkipByDesign # Symbols are not exposed on purpose and are not linked in Windows Precompiled. dartbug.com/40579
vmspecific_ffi_native_test: SkipByDesign # Symbols are not exposed on purpose and are not linked in Windows Precompiled. dartbug.com/40579
vmspecific_function_gc_test: SkipByDesign # Symbols are not exposed on purpose and are not linked in Windows Precompiled. dartbug.com/40579
vmspecific_handle_test: SkipByDesign # Symbols are not exposed on purpose and are not linked in Windows Precompiled. dartbug.com/40579
vmspecific_object_gc_test: SkipByDesign # Symbols are not exposed on purpose and are not linked in Windows Precompiled. dartbug.com/40579
vmspecific_regress_37100_test: SkipByDesign # Symbols are not exposed on purpose and are not linked in Windows Precompiled. dartbug.com/40579
vmspecific_regress_37511_callbacks_test: SkipByDesign # Symbols are not exposed on purpose and are not linked in Windows Precompiled. dartbug.com/40579
vmspecific_regress_37511_test: SkipByDesign # Symbols are not exposed on purpose and are not linked in Windows Precompiled. dartbug.com/40579
vmspecific_regress_37780_test: SkipByDesign # Symbols are not exposed on purpose and are not linked in Windows Precompiled. dartbug.com/40579
vmspecific_regress_51794_test: SkipByDesign # Symbols are not exposed on purpose and are not linked in Windows Precompiled. dartbug.com/40579

# 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.
[ $compiler == app_jitk || $sanitizer == asan ]
vmspecific_function_callbacks_exit_test: SkipByDesign

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

[ $compiler == dartk || $system == android ]
native_assets/asset_*: SkipByDesign # Only intended to run on host oses with AOT binaries available.

[ $compiler == dartkp || $system == android ]
native_assets/infer_native_assets_yaml_*: SkipByDesign # Only intended to run from source.

[ $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.

[ $runtime == dart_precompiled || $runtime == vm ]
callback_unwind_error_test: Crash # https://github.com/dart-lang/sdk/issues/39487

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