# 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

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