# 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 ]
serialization_test: SkipByDesign # Tests dart2js-specific serialization code
compile_time_error_test/01: Skip # Issue 12587
capability_test: Fail     # Not implemented yet
start_paused_test: Fail   # Not implemented yet
ondone_test: Fail         # Not implemented yet
ping_test: Fail           # Not implemented yet
ping_pause_test: Fail     # Not implemented yet
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

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

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

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

[ $compiler == dart2js ]
serialization_test: RuntimeError # Issue 1882, tries to access class TestingOnly declared in isolate_patch.dart

[ $compiler == dart2js && $runtime == ie9 ]
browser/typed_data_message_test: Fail # Issue 12624

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

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

[ $compiler == dart2js && $runtime == ie9 ]
spawn_uri_test: Fail # Issue 12630

[ $compiler == dart2js && $runtime == none ]
serialization_test: Pass # Issue 12628

[ $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 || $runtime == ie9 ]
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
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
serialization_test: StaticWarning
