# Copyright (c) 2014, 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.
# Flaky failures
dds_log_history_size_gigantic_test: Pass, Slow # Involves processing lots of logs
field_script_test: Pass, RuntimeError
get_allocation_samples_test: Pass, RuntimeError # Inconsistent stack trace
get_isolate_rpc_test: Pass, RuntimeError # Issue 29324
isolate_lifecycle_test: Pass, RuntimeError # Issue 24174
pause_on_exceptions_test: Pass, RuntimeError # Issue 33049
pause_on_start_and_exit_with_child_test: Pass, RuntimeError # Issue 33049
reload_sources_test: Pass, Slow # Reload is slow on the bots
valid_source_locations_test: Pass, Slow # Generally slow, even in release-x64.

[ $arch == arm ]
process_service_test: Pass, Fail # Issue 24344

# Test uses service API and relies on correct class names
[ $builder_tag == obfuscated ]
dominator_tree_vm_test: SkipByDesign
dominator_tree_vm_with_double_field_test: SkipByDesign

# Tests with known analyzer issues
[ $compiler == dart2analyzer ]
developer_extension_test: SkipByDesign
get_isolate_after_language_error_test: SkipByDesign

# Service protocol is not supported in product mode.
[ $mode == product ]
*: SkipByDesign

[ $system == android ]
string_escaping_test: Skip # Issue http://dartbug.com/42094

[ $system == windows ]
*: Slow
async_generator_breakpoint_test: Skip # Issue 29145
dev_fs_http_put_weird_char_test: Skip # Windows disallows carriage returns in paths
dev_fs_weird_char_test: Skip # Windows disallows question mark in paths

[ $compiler == none && $runtime == vm ]
evaluate_activation_test/instance: RuntimeError # http://dartbug.com/20047
evaluate_activation_test/scope: RuntimeError # http://dartbug.com/20047

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

[ $mode == debug && $system == windows ]
dds_log_history_size_gigantic_test: Skip # Too slow: dartbug.com/41825

[ $mode == debug && $system == windows && $checked ]
async_scope_test: Pass, Slow

[ $mode == debug && ($arch == simarm || $arch == simarm64) ]
*: SkipSlow

# These tests are slow on simulators.
[ $arch == simarm || $arch == simarm64 ]
*: Pass, Slow

# All tests use dart:io
[ $compiler == dart2js || $browser ]
*: SkipByDesign

[ $compiler == dartk || $compiler == dartkp ]
rewind_test: Pass, Slow

[ $system != linux || $arch != ia32 && $arch != x64 ]
get_native_allocation_samples_test: Skip # Unsupported.

# Skip all service tests because random reloads interfere.
[ $hot_reload || $hot_reload_rollback ]
*: SkipByDesign # The service tests should run without being reloaded.
