# Copyright (c) 2013, 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.
# WARNING:
# Tests using the multitest feature where failure is expected should *also* be
# listed in tests/lib/analyzer/analyze_tests.status without the "standalone"
# prefix.

# Obsolete behavior. We want to test that it fails.
# TODO(mfairhurst) delete this test.
isolate/scenarios/package_relative_root/package_relative_root_test: Fail

[ $builder_tag == no_ipv6 ]
io/raw_datagram_socket_test: SkipByDesign

[ $compiler == dart2analyzer ]
*: Skip

# Overriding these flags are not supported in product mode.
[ $mode == product ]
verbose_gc_to_bmu_test: SkipByDesign # No verbose_gc in product mode

[ $runtime == dart_precompiled ]
verbose_gc_to_bmu_test: Skip # These tests attempt to spawn another script using the precompiled runtime.

[ $system == windows ]
io/sleep_test: Pass, Fail # Issue 25757
verbose_gc_to_bmu_test: Skip

[ $builder_tag == swarming && $system == macos ]
io/*: Skip # Issue 30618

[ $compiler == fasta && $strong ]
io/directory_invalid_arguments_test: CompileTimeError
io/io_override_test: CompileTimeError
io/process_invalid_arguments_test: CompileTimeError
io/raw_secure_server_socket_argument_test: CompileTimeError
io/raw_secure_server_socket_test: CompileTimeError
io/secure_socket_bad_data_test: CompileTimeError
io/security_context_argument_test: CompileTimeError
io/stdout_bad_argument_test: CompileTimeError
no_assert_test: CompileTimeError
priority_queue_stress_test: CompileTimeError
verbose_gc_to_bmu_test: CompileTimeError

[ $compiler != fasta && $compiler != none && $runtime != dart_precompiled && $runtime != vm ]
no_assert_test: Fail, OK # This is testing a vm flag.

[ $compiler == none && $runtime == vm && $system == fuchsia ]
*: Skip # Not yet triaged.

[ $mode == product && $runtime == dart_precompiled ]
dwarf_stack_trace_test: Pass, RuntimeError # Results will flake due to identical code folding

[ $runtime == dart_precompiled && $system == android ]
io/https_bad_certificate_test: RuntimeError # Issue 31310
io/raw_datagram_socket_test: RuntimeError # Issue 31310
io/raw_secure_server_socket_test: RuntimeError # Issue 31310

[ $system == macos && ($runtime == dart_precompiled || $runtime == vm) ]
io/raw_secure_server_socket_test: Pass, Crash # Issue 29524

[ $checked && ($runtime == dart_precompiled || $runtime == flutter || $runtime == vm) ]
io/directory_fuzz_test: Skip # These test have type errors on purpose and take very long to run in checked mode with no benefit. Skip.
io/directory_invalid_arguments_test: Fail, OK # These tests have type errors on purpose.
io/file_fuzz_test: Skip # These test have type errors on purpose and take very long to run in checked mode with no benefit. Skip.
io/internet_address_invalid_arguments_test: Fail, OK # These tests have type errors on purpose.
io/process_invalid_arguments_test: Fail, OK # These tests have type errors on purpose.
io/socket_invalid_arguments_test: Fail, OK # These tests have type errors on purpose.
io/stdout_bad_argument_test: Fail, OK # These tests have type errors on purpose.

[ $compiler == app_jit || $compiler == precompiler ]
io/compile_all_test: Skip # Incompatible flag --compile_all

# We skip all the Dart 1.0 tests in dartk and dartkp mode as these
# modes are intended only for Dart 2.0 with strong mode enabled.
[ $compiler == app_jitk || $compiler == dartk || $compiler == dartkp ]
*: SkipByDesign

[ $compiler == dart2js || $compiler == dartdevc ]
*: SkipByDesign

[ $compiler != none || $runtime != vm ]
script_snapshot_depfile_test: SkipByDesign # Only makes sense running from source.
script_snapshot_not_executed_test: SkipByDesign # Only makes sense running from source.

[ $mode == product || $runtime == dart_precompiled ]
no_assert_test: SkipByDesign # Requires checked mode.

[ $runtime == dart_precompiled || $runtime == flutter || $runtime == vm ]
io/secure_socket_bad_data_test: RuntimeError # An error in a secure connection just puts a READ_CLOSED on the stream, rather than signaling an error on the stream.

[ $hot_reload || $hot_reload_rollback ]
script_snapshot_depfile_test: RuntimeError, OK # Child VM doesn't execute Dart.
script_snapshot_not_executed_test: RuntimeError, OK # Child VM doesn't execute Dart.
