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

[ $runtime == vm ]
browser/*: SkipByDesign  # Browser specific tests
isolate_stress_test: Fail # Issue 12588: This should be able to pass when we have wrapper-less tests.

[ $runtime == vm && $arch == mips && $mode == debug ]
mandel_isolate_test: Skip # Uses 600 MB Ram on our 1 GB test device.

[ $compiler == none || $compiler == dart2dart ]
compile_time_error_test/01: Skip # Issue 12587
start_paused_test: Fail   # Not implemented yet
ondone_test: Fail         # Not implemented yet
ping_test: Skip           # Resolve test issues
ping_pause_test: Skip     # Resolve test issues
kill_test: Fail           # Not implemented yet
kill2_test: Fail          # Not implemented yet
kill3_test: Fail          # Not implemented yet
kill_self_test: Fail      # Not implemented yet
handle_error_test: Fail   # Not implemented yet
handle_error2_test: Fail  # Not implemented yet
handle_error3_test: Fail  # Not implemented yet
function_send_test: Fail   # Not implemented yet

message3_test/constList_identical: RuntimeError # Issue 21816
message3_test/constMap: RuntimeError  # Issue 21816
message3_test/fun: RuntimeError  # Issue 21585
message3_test/constInstance: RuntimeError # Issue 21816
message3_test/byteBuffer: Crash # Issue 21818
message3_test/int32x4: Crash # Issue 21818

[ $compiler == none && $runtime == ContentShellOnAndroid ]
*: Skip # Isolate tests are timing out flakily on Android content_shell.  Issue 19795

[ $compiler == dart2js && $runtime == safarimobilesim ]
compile_time_error_test/none: Pass, Slow

[ $compiler == dart2js && $jscl ]
browser/*: SkipByDesign  # Browser specific tests

[ $compiler == dart2js && $runtime == jsshell ]
pause_test: Fail  # non-zero timer not supported.

[ $compiler == dart2js && $runtime == safari ]
cross_isolate_message_test: Skip # Issue 12627
message_test: Skip # Issue 12627

[ $compiler == dart2js ]
spawn_uri_vm_test: SkipByDesign # Test uses a ".dart" URI.
spawn_uri_nested_vm_test: SkipByDesign # Test uses a ".dart" URI.
message3_test/constList: RuntimeError # Issue 21817
message3_test/constList_identical: RuntimeError # Issue 21817
message3_test/constMap: RuntimeError  # Issue 21817
message3_test/constInstance: RuntimeError # Issue 21817

[ $compiler == dart2js && $jscl ]
spawn_uri_test: SkipByDesign # Loading another file is not supported in JS shell

[ $compiler == dart2js && $runtime == chromeOnAndroid ]
isolate_stress_test: Pass, Slow # TODO(kasperl): Please triage.

mandel_isolate_test: Pass, Timeout # TODO(kasperl): Please triage.

[ $compiler == dart2dart ]
illegal_msg_mirror_test: RuntimeError    # Issue 16548
spawn_uri_multi_test/none: RuntimeError  # Issue 16549
spawn_uri_nested_vm_test: RuntimeError   # Issue 16549
spawn_uri_test: RuntimeError             # Issue 16549
spawn_uri_vm_test: RuntimeError          # Issue 16549

[ $compiler == dart2js && ( $runtime == ff || $runtime == safari || $runtime == drt || $runtime == chrome || $runtime == chromeOnAndroid) ]
isolate_stress_test: Pass, Slow # Issue 10697

[ $compiler == dart2js && $runtime == chromeOnAndroid ]
unresolved_ports_test: Pass, Timeout # Issue 15610

[ $compiler == none && $runtime == drt ]
spawn_uri_nested_vm_test: Skip # Issue 14463

[ $jscl ]
spawn_uri_multi_test/none: RuntimeError # http://dartbug.com/13544

[ ($compiler == none || $compiler == dart2dart) && ($runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) ]
pause_test: Fail         # Not implemented yet

[ $compiler == none && $runtime == ContentShellOnAndroid ]
nested_spawn2_test: Skip # Issue 19127: This test is timing out.

[ $compiler == none && ($runtime == dartium || $runtime == ContentShellOnAndroid) ]
spawn_uri_nested_vm_test: Skip # Issue 14479: This test is timing out.

[ $compiler == none && ( $runtime == dartium || $runtime == drt || $runtime == ContentShellOnAndroid) ]
compile_time_error_test/none: Fail, OK # Issue 13921 Dom isolates don't support spawnFunction
isolate_import_test/none: Fail, OK # Issue 13921 Dom isolates don't support spawnFunction
isolate_stress_test: Skip # Issue 13921 Dom isolates don't support spawnFunction
message3_test: Fail, OK # Issue 13921 Dom isolates don't support spawnFunction
object_leak_test: Fail, OK # Issue 13921 Dom isolates don't support spawnFunction
simple_message_test/none: Fail, OK # Issue 13921 Dom isolates don't support spawnFunction
spawn_uri_missing_from_isolate_test: RuntimeError # http://dartbug.com/17649
spawn_uri_missing_test: Skip # Times out.

[ $compiler == dartanalyzer || $compiler == dart2analyzer ]
browser/typed_data_message_test: StaticWarning
mint_maker_test: StaticWarning

[ $compiler != none || $runtime != vm ]
package_root_test: SkipByDesign # Uses dart:io.
