# 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
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

[ $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, Crash # dartbug.com/33175 for the crash
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
