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

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

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

[ $system == windows ]
async_generator_breakpoint_test: Skip # Issue 29145

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

[ $compiler == dartk ]
next_through_simple_async_test: Pass, Fail # Issue 29145

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

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

# These tests are slow on simulators.
[ $arch == simarm || $arch == simarm64 ]
*: Pass, Slow
[ $mode == debug && ($arch == simarm || $arch == simarm64) ]
*: SkipSlow

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

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

[ $compiler == dart2analyzer && $builder_tag == strong ]
*: Skip # Issue 28649

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

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

[ $compiler == app_jit ]
address_mapper_test: CompileTimeError # Issue 27806
capture_stdio_test: CompileTimeError # Issue 27806
complex_reload_test: RuntimeError # Issue 27806
bad_reload_test: RuntimeError # Issue 27806
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
set_name_rpc_test: RuntimeError # Issue 27806
pause_on_unhandled_async_exceptions2_test: Pass, RuntimeError, Timeout, Crash # Issue 29178

debugger_location_second_test: Skip # Issue 28180

# 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
next_through_create_list_and_map_test: RuntimeError
next_through_closure_test: RuntimeError
step_through_switch_test: RuntimeError
step_through_constructor_calls_test: RuntimeError
step_through_function_test: RuntimeError

[ $compiler == dart2analyzer ]
evaluate_activation_in_method_class_test: CompileTimeError # Issue 24478

[ $arch == simdbc || $arch == simdbc64 ]
get_allocation_samples_test: RuntimeError # Profiling unimplemented.
get_cpu_profile_timeline_rpc_test: RuntimeError # Profiling unimplemented.
implicit_getter_setter_test: RuntimeError # Field guards unimplemented.
async_single_step_exception_test: RuntimeError # Issue 29218

# Debugging StringConcatenation doesn't work the same on simdbc as on other platforms (bug #28975).
next_through_catch_test: RuntimeError
next_through_simple_async_test: RuntimeError
next_through_simple_linear_2_test: RuntimeError
step_through_function_test: RuntimeError
step_through_getter_test: RuntimeError

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

[ $system == windows ]
dev_fs_weird_char_test: Skip # Windows disallows question mark in paths
dev_fs_http_put_weird_char_test: Skip # Windows disallows carriage returns in paths

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

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