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

[ $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/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 == x64 && $mode == release && $runtime == vm && $system == linux ]
io/http_bind_test: Pass, Timeout # Issue 35192

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

[ $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 == vm && ($arch == arm || $arch == arm64) ]
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/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

[ $hot_reload || $hot_reload_rollback ]
io/file_system_watcher_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
io/platform_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
io/raw_synchronous_socket_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
io/shared_socket_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
io/socket_finalizer_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
io/socket_many_connections_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
io/stdio_socket_finalizer_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
io/wait_for_event_isolate_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
regress_26031_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
regress_28854_1_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
regress_28854_2_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
typed_array_int64_uint64_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
typed_array_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
typed_data_isolate_test: Skip # https://dartbug.com/36097: Ongoing concurrency work.
