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

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

[ $compiler == dart2analyzer ]
io/directory_invalid_arguments_test: StaticWarning
io/file_constructor_test: Fail # Issue 11518
io/process_invalid_arguments_test: StaticWarning
io/raw_secure_server_socket_argument_test: StaticWarning
io/stdout_bad_argument_test: StaticWarning

# 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 == dart2analyzer && ($builder_tag == strong || $strong) ]
*: Skip # Issue 28649

[ $compiler == dartk && $strong ]
*: SkipByDesign

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

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

[ $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/file_invalid_arguments_test: Fail, OK # These tests have type errors on purpose.
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

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

# 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 == dartk || $compiler == dartkp ]
*: Skip

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

