# 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
field_script_test: Pass, RuntimeError
get_allocation_samples_test: Pass, RuntimeError # Inconsistent stack trace
get_isolate_rpc_test: Pass, RuntimeError # Issue 29324
get_retained_size_rpc_test: Pass, RuntimeError # Issue 28193
isolate_lifecycle_test: Pass, RuntimeError # Issue 24174
reload_sources_test: Pass, Slow # Reload is slow on the bots

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

[ $compiler == app_jit ]
bad_reload_test: RuntimeError # Issue 27806
complex_reload_test: RuntimeError # Issue 27806
debugger_location_second_test: Skip # Issue 28180
evaluate_activation_test/instance: RuntimeError # Issue 27806
evaluate_activation_test/scope: RuntimeError # Issue 27806
get_object_rpc_test: RuntimeError # Issue 27806
get_source_report_test: RuntimeError # Issue 27806
next_through_closure_test: RuntimeError # Snapshots don't include source and generated source is not 1-to-1. The column offsets are thus off.
next_through_create_list_and_map_test: RuntimeError # Snapshots don't include source and generated source is not 1-to-1. The column offsets are thus off.
next_through_for_each_loop_test: RuntimeError # Snapshots don't include source and generated source is not 1-to-1. The column offsets are thus off.
next_through_implicit_call_test: RuntimeError # Snapshots don't include source and generated source is not 1-to-1. The column offsets are thus off.
pause_on_unhandled_async_exceptions2_test: Pass, RuntimeError, Timeout, Crash # Issue 29178
set_name_rpc_test: RuntimeError # Issue 27806
step_through_constructor_calls_test: RuntimeError # Snapshots don't include source and generated source is not 1-to-1. The column offsets are thus off.
step_through_function_test: RuntimeError # Snapshots don't include source and generated source is not 1-to-1. The column offsets are thus off.
step_through_switch_test: RuntimeError # Snapshots don't include source and generated source is not 1-to-1. The column offsets are thus off.
step_through_switch_with_continue_test: RuntimeError # Snapshots don't include source and generated source is not 1-to-1. The column offsets are thus off.
unused_changes_in_last_reload_test: RuntimeError # Issue 27806

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

# Kernel version of tests
[ $compiler != dartk ]
add_breakpoint_rpc_kernel_test: SkipByDesign # kernel specific version of add_breakpoint_rpc_test

[ $compiler == precompiler ]
*: Skip # Issue 24651

# Debugger location tests are slow in debug mode.
[ $mode == debug ]
debugger_location_second_test: Pass, Slow
debugger_location_test: Pass, Slow

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

[ $system == windows ]
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 == dart2analyzer && $strong ]
*: Skip # Issue 28649

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

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

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

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

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

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

[ $arch == simdbc || $arch == simdbc64 ]
async_single_step_exception_test: RuntimeError # Issue 29218
implicit_getter_setter_test: RuntimeError # Field guards unimplemented.
next_through_catch_test: RuntimeError # Debugging StringConcatenation doesn't work the same on simdbc as on other platforms (bug #28975).
next_through_simple_async_test: RuntimeError # Debugging StringConcatenation doesn't work the same on simdbc as on other platforms (bug #28975).
next_through_simple_linear_2_test: RuntimeError # Debugging StringConcatenation doesn't work the same on simdbc as on other platforms (bug #28975).
step_through_function_test: RuntimeError # Debugging StringConcatenation doesn't work the same on simdbc as on other platforms (bug #28975).
step_through_getter_test: RuntimeError # Debugging StringConcatenation doesn't work the same on simdbc as on other platforms (bug #28975).

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

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