# 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
step_through_switch_with_continue_test: RuntimeError

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

[ $arch == simdbc || $arch == simdbc64 ]
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
