# 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

[ $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

[ $fasta ]
compile_time_error_test/01: MissingCompileTimeError

[ $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 == 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
