# Copyright (c) 2017, 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.

# Kernel works slightly different. There are kernel specific versions.
# These are the non-kernel specific versions so skip tests and allow errors.
[ $compiler == dartk ]
add_breakpoint_rpc_test: SkipByDesign # non-kernel specific version of add_breakpoint_rpc_kernel_test.
async_single_step_out_test: RuntimeError # Issue 29158, Async debugging
async_star_single_step_into_test: RuntimeError # Issue 29158, Async debugging
async_star_step_out_test: RuntimeError # Issue 29158, Async debugging
async_step_out_test: RuntimeError # Issue 29158, Async debugging
awaiter_async_stack_contents_test: RuntimeError # Issue 29158, Async debugging
eval_internal_class_test: RuntimeError
evaluate_activation_in_method_class_test: RuntimeError
evaluate_activation_test/instance: RuntimeError
evaluate_activation_test/scope: RuntimeError
evaluate_in_sync_star_activation_test: RuntimeError
pause_on_unhandled_async_exceptions2_test: RuntimeError # --pause-isolates-on-unhandled-exceptions doesn't currently work. Issue #29056
pause_on_unhandled_async_exceptions_test: RuntimeError #  --pause-isolates-on-unhandled-exceptions doesn't currently work. Issue #29056
step_through_arithmetic_test: RuntimeError # probably constant evaluator pre-evaluating e.g. 1+2
unused_changes_in_last_reload_test: RuntimeError

[ $compiler == dartkp ]
*: Skip # Non-kernel also skips precompiled mode.

[ $fasta ]
developer_extension_test: CompileTimeError
get_isolate_after_language_error_test: CompileTimeError

[ $arch != simarm && $arch != simarm64 && $arch != simdbc && $compiler == dartk ]
complex_reload_test: RuntimeError

[ $arch == simdbc64 && $compiler == dartk ]
coverage_optimized_function_test: Crash # Please triage
get_cpu_profile_timeline_rpc_test: Pass, RuntimeError # http://dartbug.com/31794
pause_on_unhandled_async_exceptions2_test: RuntimeError, Timeout # Issue 31765
pause_on_unhandled_async_exceptions_test: RuntimeError, Timeout # Issue 31765

[ $arch == simdbc64 && $compiler == dartk && $mode == debug ]
eval_test: Pass, Slow

[ $compiler == dartk && $mode == debug ]
isolate_lifecycle_test: Skip # Flaky.
pause_idle_isolate_test: Skip # Flaky

[ $compiler == dartk && $system == windows ]
break_on_default_constructor_test: Skip # Issues 32137 and 32138.
coverage_leaf_function_test: RuntimeError
coverage_optimized_function_test: Skip # Timeout
get_source_report_test: RuntimeError
get_vm_timeline_rpc_test: Skip # Issue 32137.
issue_25465_test: Skip # Issues 32137 and 32138.
issue_30555_test: Skip # Issues 32137 and 32138.
next_through_assign_call_test: Skip # Issues 32137 and 32138.
next_through_assign_int_test: Skip # Issues 32137 and 32138.
next_through_call_on_field_in_class_test: Skip # Issues 32137 and 32138.
next_through_call_on_field_test: Skip # Issues 32137 and 32138.
next_through_catch_test: Skip # Issues 32137 and 32138.
next_through_create_list_and_map_test: Skip # Issues 32137 and 32138.
next_through_function_expression_test: Skip # Issues 32137 and 32138.
next_through_is_and_as_test: Skip # Issues 32137 and 32138.
next_through_multi_catch_test: Skip # Issues 32137 and 32138.
next_through_simple_async_with_returns_test: Skip # Issues 32137 and 32138.
next_through_simple_linear_2_test: Skip # Issues 32137 and 32138.
next_through_simple_linear_test: Skip # Issues 32137 and 32138.
pause_idle_isolate_test: Skip # Issues 32137 and 32138.
pause_on_start_and_exit_test: Skip # Issues 32225, 32138.
pause_on_start_then_step_test: Skip # Issue 32225, 32138.
regress_28443_test: Skip # Times out.
regress_28980_test: Skip # Issues 32137 and 32138.
reload_sources_test: RuntimeError
set_vm_name_rpc_test: Skip # Times out. Issue 32137.
step_test: Skip # Issues 32137 and 32138.
step_through_constructor_test: Pass, Slow
step_through_function_2_test: Skip # Issues 32137 and 32138.
step_through_function_test: Skip # Issues 32137 and 32138.
step_through_property_get_test: Skip # Times out. Issue 32137.
step_through_setter_test: Skip # Issues 32137 and 32138.
step_through_switch_test: Skip # Times out. Issue 32137.
step_through_switch_with_continue_test: Skip # Times out. Issue 32137.

[ $compiler == dartk && $system == windows && $strong ]
add_breakpoint_rpc_kernel_test: Skip # Timeout
code_test: RuntimeError
get_object_rpc_test: RuntimeError
get_stack_rpc_test: RuntimeError
next_through_implicit_call_test: Skip # Timeout
next_through_operator_bracket_on_super_test: Skip # Timeout
next_through_operator_bracket_on_this_test: Skip # Timeout
next_through_operator_bracket_test: Skip # Timeout
next_through_simple_async_test: Skip # Timeout
step_through_constructor_calls_test: Skip # Timeout
step_through_property_set_test: Skip # Timeout

[ $compiler == dartk && $system == windows && !$strong ]
code_test: RuntimeError
field_script_test: Skip # Timeout
get_object_rpc_test: RuntimeError
get_stack_rpc_test: RuntimeError
next_through_for_loop_with_break_and_continue_test: Skip # Timeout
next_through_simple_async_test: Skip # Timeout
step_test: Skip # Timeout
step_through_constructor_test: Skip # Timeout

[ $compiler == dartk && $strong ]
awaiter_async_stack_contents_test: RuntimeError
step_through_arithmetic_test: RuntimeError

[ $compiler == dartk && $strong && ($arch == simarm || $arch == simarm64) ]
async_single_step_exception_test: RuntimeError

[ $compiler == dartk && ($arch == simarm || $arch == simarm64 || $arch == simdbc64) ]
async_generator_breakpoint_test: Pass, RuntimeError
bad_reload_test: Skip # Times out on sim architectures, also RuntimeError.
complex_reload_test: Skip # Times out on sim architectures, also RuntimeError.
coverage_leaf_function_test: RuntimeError # Please triage.
coverage_optimized_function_test: RuntimeError # Please triage.
get_object_rpc_test: RuntimeError # Please triage.
get_source_report_test: RuntimeError # Please triage.
positive_token_pos_test: Pass, RuntimeError
reload_sources_test: Skip # Times out.
rewind_test: Pass, RuntimeError
set_name_rpc_test: RuntimeError # Please triage.
unused_changes_in_last_reload_test: Skip # Times out on sim architectures.
