# 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
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_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 ]
get_cpu_profile_timeline_rpc_test: Pass, RuntimeError # http://dartbug.com/31794
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) ]
add_breakpoint_rpc_kernel_test: RuntimeError # Issue #33087
async_generator_breakpoint_test: Pass, RuntimeError
bad_reload_test: Skip # Times out on sim architectures, also RuntimeError.
break_on_activation_test: RuntimeError # Issue #33087
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.
debugger_inspect_test: RuntimeError, Timeout # Issue #33087
developer_service_get_isolate_id_test: RuntimeError # Issue #33087
eval_internal_class_test: RuntimeError # Issue #33087
eval_test: RuntimeError # Issue #33087
evaluate_activation_test/none: RuntimeError # Issue #33087
evaluate_async_closure_test: RuntimeError # Issue #33087
evaluate_class_type_parameters_test: RuntimeError # Issue 33087
evaluate_function_type_parameters_test: RuntimeError # Issue 33087
evaluate_in_async_activation_test: RuntimeError # Issue #33087
evaluate_in_async_star_activation_test: RuntimeError # Issue #33087
evaluate_in_frame_rpc_test: RuntimeError # Issue #33087
evaluate_in_frame_with_scope_test: RuntimeError # Issue #33087
evaluate_with_scope_test: RuntimeError # Issue #33087
get_instances_rpc_test: RuntimeError # Issue #33087
get_object_rpc_test: RuntimeError # Please triage.
get_retaining_path_rpc_test: RuntimeError # Issue #33087
get_source_report_test: RuntimeError # Please triage.
get_user_level_retaining_path_rpc_test: RuntimeError # Issue #33087
instance_field_order_rpc_test: RuntimeError # Issue #33087
pause_on_exceptions_test: RuntimeError, Timeout # Issue #33087
positive_token_pos_test: Pass, RuntimeError
reload_sources_test: Skip # Times out.
rewind_optimized_out_test: RuntimeError # Issue #33087
rewind_test: Pass, RuntimeError
set_name_rpc_test: RuntimeError # Please triage.
unused_changes_in_last_reload_test: Skip # Times out on sim architectures.
valid_source_locations_test: Pass, Slow, Timeout # Issue 33087

[ $compiler == fasta && $strong ]
add_breakpoint_rpc_test: CompileTimeError
