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

# No longer supported in dart 2
scenarios/package_relative_root: Fail

[ $compiler == dart2analyzer ]
browser/typed_data_message_test: StaticWarning

[ $compiler == dart2js ]
*: SkipByDesign

[ $compiler == fasta ]
browser/compute_this_script_browser_test: CompileTimeError # TODO(ahe): Support dart:html in Fasta.
browser/package_resolve_browser_hook2_test: CompileTimeError # TODO(ahe): Support dart:html in Fasta.
browser/package_resolve_browser_hook_test: CompileTimeError # TODO(ahe): Support dart:html in Fasta.
browser/package_resolve_browser_test: CompileTimeError # TODO(ahe): Support dart:html in Fasta.
isolate_stress_test: CompileTimeError # TODO(ahe): Support dart:html in Fasta.

[ $mode == product ]
issue_24243_parent_isolate_test: Skip # Requires checked mode

[ $runtime == flutter ]
isolate_import_test/01: Skip # Flutter Issue 9114
issue_21398_parent_isolate2_test/01: Skip # Flutter Issue 9114
simple_message_test/01: Skip # Flutter Issue 9114

[ $runtime != none ]
kill2_test: RuntimeError # Uppercase constants removed
kill_self_synchronously_test: RuntimeError # Uppercase constants removed
kill_test: RuntimeError # Uppercase constants removed

[ $csp ]
browser/package_resolve_browser_hook_test: SkipByDesign # Test written in a way that violates CSP.
deferred_in_isolate2_test: Skip # Issue 16898. Deferred loading does not work from an isolate in CSP-mode

[ $jscl ]
spawn_uri_multi_test/none: RuntimeError # Issue 13544

# The isolate tests were moved to lib_2/isolate, and there they should be
# made strong mode compliant. There's no sense in running the old versions
# here.
[ $strong ]
*: SkipByDesign

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

[ $compiler == none && ($runtime == flutter || $runtime == vm) ]
scenarios/short_package/short_package_test: Fail, OK # We do not plan to support the tested behavior anyway.

[ $compiler == app_jit || $compiler == none || $compiler == precompiler ]
compile_time_error_test/01: Skip # Issue 12587
kill3_test: Pass, Fail # Bad test: expects total message order
ping_pause_test: Skip # Resolve test issues
ping_test: Skip # Resolve test issues

[ $compiler == app_jit || $mode == product || $runtime != vm ]
checked_test: Skip # Unsupported.

[ $compiler == dartk || $compiler == dartkb || $compiler == dartkp ]
*: Skip # This directory has only Dart1 tests (Dart2 tests are in lib_2/isolate).

[ $compiler != none || $runtime != vm ]
package_config_test: SkipByDesign # Uses Isolate.packageConfig
package_resolve_test: SkipByDesign # Uses Isolate.resolvePackageUri
package_root_test: SkipByDesign # Uses Isolate.packageRoot
scenarios/*: SkipByDesign # Use automatic package resolution, spawnFunction and .dart URIs.
spawn_uri_fail_test: SkipByDesign # Uses dart:io.

[ $compiler == precompiler || $runtime == flutter ]
count_test: SkipByDesign # Imports dart:mirrors
cross_isolate_message_test: SkipByDesign
illegal_msg_function_test: SkipByDesign
illegal_msg_mirror_test: SkipByDesign
isolate_complex_messages_test: SkipByDesign
mandel_isolate_test: SkipByDesign
message2_test: SkipByDesign
message_test: SkipByDesign
mint_maker_test: SkipByDesign
nested_spawn2_test: SkipByDesign
nested_spawn_test: SkipByDesign
raw_port_test: SkipByDesign
request_reply_test: SkipByDesign
spawn_function_custom_class_test: SkipByDesign
spawn_function_test: SkipByDesign
stacktrace_message_test: SkipByDesign
static_function_test: SkipByDesign
unresolved_ports_test: SkipByDesign

[ $runtime == dart_precompiled || $runtime == flutter ]
count_test: Skip # Isolate.spawnUri
cross_isolate_message_test: Skip # Isolate.spawnUri
deferred_in_isolate2_test: Skip # Isolate.spawnUri
deferred_in_isolate_test: Skip # Isolate.spawnUri
error_at_spawnuri_test: Skip # Isolate.spawnUri
error_exit_at_spawnuri_test: Skip # Isolate.spawnUri
exit_at_spawnuri_test: Skip # Isolate.spawnUri
illegal_msg_function_test: Skip # Isolate.spawnUri
illegal_msg_mirror_test: Skip # Isolate.spawnUri
isolate_complex_messages_test: Skip # Isolate.spawnUri
issue_21398_parent_isolate1_test: Skip # Isolate.spawnUri
issue_21398_parent_isolate_test: Skip # Isolate.spawnUri
issue_24243_parent_isolate_test: Skip # Isolate.spawnUri
mandel_isolate_test: Skip # Isolate.spawnUri
message2_test: Skip # Isolate.spawnUri
message_test: Skip # Isolate.spawnUri
mint_maker_test: Skip # Isolate.spawnUri
nested_spawn2_test: Skip # Isolate.spawnUri
nested_spawn_test: Skip # Isolate.spawnUri
raw_port_test: Skip # Isolate.spawnUri
request_reply_test: Skip # Isolate.spawnUri
spawn_function_custom_class_test: Skip # Isolate.spawnUri
spawn_function_test: Skip # Isolate.spawnUri
spawn_uri_exported_main_test: Skip # Isolate.spawnUri
spawn_uri_missing_from_isolate_test: Skip # Isolate.spawnUri
spawn_uri_missing_test: Skip # Isolate.spawnUri
spawn_uri_multi_test: Skip # Isolate.spawnUri
spawn_uri_nested_vm_test: Skip # Isolate.spawnUri
spawn_uri_test: Skip # Isolate.spawnUri
spawn_uri_vm_test: Skip # Isolate.spawnUri
stacktrace_message_test: Skip # Isolate.spawnUri
static_function_test: Skip # Isolate.spawnUri
unresolved_ports_test: Skip # Isolate.spawnUri

[ $runtime == dart_precompiled || $runtime == flutter || $runtime == vm ]
browser/*: SkipByDesign # Browser specific tests
isolate_stress_test: Skip # Issue 12588: Uses dart:html. This should be able to pass when we have wrapper-less tests.
stacktrace_message_test: RuntimeError # Fails to send stacktrace object.

[ $hot_reload || $hot_reload_rollback ]
deferred_in_isolate2_test: Crash # Requires deferred libraries
deferred_in_isolate_test: Crash # Requires deferred libraries
function_send_test: Pass, Fail # Closure identity
issue_21398_parent_isolate2_test: Crash # Requires deferred libraries
message3_test/fun: Pass, Fail # Closure identity
spawn_uri_nested_vm_test: Pass, Crash # Issue 28192
