# 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.
# Sections in this file should contain "$compiler == dartk" or
# "$compiler == dartkp".

io/process_sync_test: Pass, Slow # Spawns synchronously subprocesses in sequence.

[ $arch == ia32 && $builder_tag == optimization_counter_threshold ]
io/file_lock_test: SkipSlow # Timeout

[ $builder_tag == optimization_counter_threshold && $compiler == dartk ]
map_insert_remove_oom_test: Skip # Heap limit too low.

[ $compiler == dartk && $mode == debug && $runtime == vm ]
io/file_lock_test: Slow, Pass

[ $compiler == dartk && $runtime == vm ]
no_support_debugger_test: Skip # kernel-service snapshot not compatible with flag disabled

[ $compiler == dartk && $system == windows ]
io/dart_std_io_pipe_test: Slow, Pass
io/secure_builtin_roots_test: Skip # Issues 32137 and 32138.
map_insert_remove_oom_test: Skip # Heap limit too low.

# Enabling of dartk for sim{arm,arm64} revealed these test failures, which
# are to be triaged.  Isolate tests are skipped on purpose due to the usage of
# batch mode.
[ $compiler == dartk && $simulator ]
io/file_blocking_lock_test: Crash # Please triage.
io/file_lock_test: Slow, Pass
io/http_bind_test: Slow, Pass
map_insert_remove_oom_test: Skip # Heap limit too low.

[ $compiler == dartkp && $mode == debug && $runtime == dart_precompiled ]
io/raw_socket_test: Crash
io/socket_finalizer_test: Crash
io/socket_info_ipv4_test: Crash
io/socket_info_ipv6_test: Crash
io/socket_port_test: Crash

[ $compiler == dartkp && $runtime == dart_precompiled ]
io/compile_all_test: Skip # We do not support --compile-all for precompilation
io/http_client_connect_test: Skip # Flaky.
io/http_content_length_test: Skip # Flaky.
io/http_proxy_advanced_test: Skip # Flaky
io/http_proxy_test: Skip # Flaky.
io/http_response_deadline_test: Skip # Flaky.
io/http_reuse_server_port_test: Skip # Flaky.
io/http_server_close_response_after_error_test: Skip # Flaky.
io/http_shutdown_test: Skip # Flaky.
io/platform_executable_test: Skip # The test assumes a JIT invocation.
io/process_child_test: Skip # The test does not exercise the exec path on AOT
io/raw_datagram_socket_test: Skip # Flaky.
io/raw_secure_server_closing_test: Skip # Flaky
io/raw_socket_test: Crash
io/secure_multiple_client_server_test: Skip # Flaky.
io/secure_server_closing_test: Skip # Flaky.
io/secure_server_socket_test: Skip # Flaky.
io/socket_many_connections_test: Skip # Flaky
io/web_socket_error_test: Skip # Flaky
io/web_socket_ping_test: Skip # Flaky.
io/web_socket_test: Skip # Flaky.
map_insert_remove_oom_test: Skip # Heap limit too low.
no_support_debugger_test: Skip # kernel-service snapshot not compatible with flag disabled

[ $compiler != dartk || $runtime != vm ]
check_for_aot_snapshot_jit_test: SkipByDesign # Test relies on paths, requires JIT test environment.

[ $sanitizer == asan || $sanitizer == lsan || $sanitizer == msan || $sanitizer == tsan ]
regress_52715_test/measure: Skip # Shadow memory and scudo quarantine interfere with measuring RSS

[ $hot_reload || $hot_reload_rollback ]
regress_52715_test/measure: Skip # kernel-service interferes with measuring RSS
