# Copyright (c) 2017, 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.

[ $arch == ia32 ]
link_natives_lazily_test: SkipByDesign # Not supported.
no_allow_absolute_addresses_test: SkipByDesign # Not supported.

[ $builder_tag == asan ]
ffi/data_not_asan_test: Skip # this test tries to allocate too much memory on purpose

[ $compiler == app_jit ]
full_coverage_test: Skip # Platform.executable
io/code_collection_test: Skip # Platform.executable
io/namespace_test: RuntimeError # Issue 33168
io/platform_resolved_executable_test/00: RuntimeError # Issue 33168
io/platform_resolved_executable_test/01: RuntimeError # Issue 33168
io/platform_resolved_executable_test/02: RuntimeError # Issue 33168
io/platform_resolved_executable_test/03: RuntimeError # Issue 33168
io/platform_resolved_executable_test/04: RuntimeError # Issue 33168
io/platform_resolved_executable_test/05: RuntimeError # Issue 33168
io/platform_test: Skip # Platform.executable
io/test_extension_fail_test: Skip # Platform.executable
io/test_extension_test: Skip # Platform.executable
io/test_runner_test: RuntimeError # Issue 33168
regress_26031_test: Skip # Platform.resolvedExecutable

[ $compiler == app_jitk ]
ffi/dynamic_library_test: Skip # https://github.com/dart-lang/sdk/issues/35934
ffi/function_callbacks_test: Skip # https://github.com/dart-lang/sdk/issues/35934
ffi/function_structs_test: Skip # https://github.com/dart-lang/sdk/issues/35934
ffi/function_test: Skip # https://github.com/dart-lang/sdk/issues/35934

[ $runtime == dart_precompiled ]
ffi: RuntimeError # https://github.com/dart-lang/sdk/issues/35765
ffi/static_checks_test: Skip # https://github.com/dart-lang/sdk/issues/35765

[ $runtime == vm ]
ffi/enable_ffi_test: Fail # test designed to fail: --enable-ffi=false with import dart:ffi
io/test_runner_test: Skip # Spawns a process which runs in Dart2 mode.

[ $system == android ]
io/file_stat_test: Skip # Issue 26376
io/file_system_watcher_test: Skip # Issue 26376
io/file_test: Skip # Issue 26376
io/http_proxy_advanced_test: Skip # Issue 27638
io/http_proxy_test: Skip # Issue 27638
io/https_bad_certificate_test: Skip # Issue 27638
io/https_server_test: Skip # Issue 27638
io/non_utf8_output_test: Skip # The Android command runner doesn't correctly handle non-UTF8 formatted output. https://github.com/dart-lang/sdk/issues/28872
io/process_exit_test: Skip # Issue 29578
io/process_path_environment_test: Skip # Issue 26376
io/process_path_test: Skip # Issue 26376
io/process_segfault_test: Skip # Issue 26376
io/raw_datagram_socket_test: Skip # Issue 27638
io/raw_secure_server_closing_test: Skip # Issue 27638
io/raw_secure_server_socket_test: Skip # Issue 27638
io/raw_secure_socket_pause_test: Skip # Issue 27638
io/raw_secure_socket_test: Skip # Issue 27638
io/regress_21160_test: Skip # Issue 27638
io/resolve_symbolic_links_test: Skip # Issue 26376
io/secure_bad_certificate_test: Skip # Issue 27638
io/secure_client_raw_server_test: Skip # Issue 27638
io/secure_client_server_test: Skip # Issue 27638
io/secure_multiple_client_server_test: Skip # Issue 27638
io/secure_server_client_certificate_test: Skip # Issue 27638
io/secure_server_closing_test: Skip # Issue 27638
io/secure_server_socket_test: Skip # Issue 27638
io/secure_session_resume_test: Skip # Issue 27638
io/secure_socket_alpn_test: Skip # Issue 27638
io/secure_socket_test: Skip # Issue 27638
io/socket_upgrade_to_secure_test: Skip # Issue 27638

[ $system == windows ]
io/process_sync_test: Pass, Timeout # Issue 24596
io/skipping_dart2js_compilations_test: Skip # Issue 19551.
io/sleep_test: Pass, Fail # Issue 25757
io/socket_info_ipv6_test: Skip
verbose_gc_to_bmu_test: Skip

[ $arch == arm && $mode == release && $runtime == dart_precompiled && $system == android ]
io/stdout_stderr_non_blocking_test: Pass, Timeout # Issue 28426

[ $arch == simdbc64 && $mode == debug && $checked ]
io/web_socket_test: Pass, RuntimeError # Issue 26814.

[ $arch == x64 && $compiler == dartkb && $runtime == vm && $system == linux ]
io/stdout_stderr_non_blocking_test: Pass, Timeout # Issue 35192

[ $arch == x64 && $mode == debug && $system == linux && $hot_reload ]
ffi/subtype_test: Skip # https://github.com/dart-lang/sdk/issues/35933

[ $compiler != dart2analyzer && $system == windows ]
io/platform_resolved_executable_test/06: RuntimeError # Issue 23641

[ $compiler == dartkb && $mode == debug ]
ffi/subtype_test: Skip # https://github.com/dart-lang/sdk/issues/35935

[ $mode == release && $runtime == vm && $system == linux && ($arch == simdbc64 || $arch == x64) ]
io/http_bind_test: Pass, Timeout # Issue 35192

[ $mode == release && $runtime == vm && $system == macos ]
io/http_server_close_response_after_error_test: Pass, Timeout # Issue 28370: timeout.
io/named_pipe_script_test: Pass, RuntimeError # Issue 28737

[ $mode == release && $runtime == vm && $system == windows ]
io/http_server_close_response_after_error_test: Pass, Timeout # Issue 28370: timeout.

[ $runtime == dart_precompiled && $system == linux && ($arch == simarm || $arch == simarm64 || $arch == x64) ]
io/stdout_stderr_non_blocking_test: Pass, Timeout # Issue 35192

[ $runtime != dart_precompiled && $runtime != vm ]
ffi: SkipByDesign # ffi is only supported on vm

[ $runtime == vm && !$checked && !$strong ]
io/file_constructor_test: RuntimeError

[ $runtime == vm && ($arch == arm || $arch == arm64) ]
io/code_collection_test: Timeout, Pass
io/dart_std_io_pipe_test: Timeout, Pass
io/file_input_stream_test: Skip # Issue 26109
io/file_stream_test: Skip # Issue 26109
io/file_typed_data_test: Skip # Issue 26109
io/process_sync_test: Timeout, Pass

[ $runtime == vm && ($arch == simarm || $arch == simarm64) ]
io/code_collection_test: Timeout, Pass
io/dart_std_io_pipe_test: Timeout, Pass
io/http_client_stays_alive_test: Skip # Spawns process in Dart2 mode.
io/process_sync_test: Timeout, Pass
io/skipping_dart2js_compilations_test: Skip # Spawns process in Dart2 mode.

[ $arch == simdbc || $arch == simdbc64 ]
full_coverage_test: Skip # TODO(vegorov) SIMDBC interpreter doesn't support coverage yet.
link_natives_lazily_test: SkipByDesign # SIMDBC interpreter doesn't support lazy linking of natives.
no_lazy_dispatchers_test: SkipByDesign # SIMDBC interpreter doesn't support --no_lazy_dispatchers

[ $arch != x64 || $system != linux && $system != macos ]
ffi: Skip # ffi not yet supported on other systems than linux/macos 64
