# 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 ]
isolate2_negative_test: Skip  # Need to resolve correct behaviour.
isolate3_negative_test: Skip  # test depends on isolate error exiting process.
serialization_test: Skip  # tests dart2js-specific serialization code
spawn_uri_test: Fail, OK # test uses a ".js" suffix that is bogus on vm.
compute_this_script_browser_test: Skip # browser specific test
compute_this_script_browser_stream_test: Skip # browser specific test
ports_compilation_browser_test: Skip # browser specific test
unresolved_ports_negative_test: Skip # See Issue 6839
isolate_stress_test: Fail # TODO(ahe): This should be able to pass when we have wrapper-less tests.

[ $compiler == none && $runtime == drt ]
isolate2_negative_test: Skip  # Inherited from VM.
isolate3_negative_test: Skip  # Inherited from VM.
serialization_test: Skip  # tests dart2js-specific serialization code
spawn_uri_test: Skip # uses a .js extension (not for dartium)
spawn_uri_negative_test: Skip # ditto

[ $compiler == dartc ]
isolate_negative_test: Fail    # status change with --check-only
isolate2_negative_test: Fail   # status change with --check-only
spawn_function_negative_test: Fail, OK # Fails at runtime.
spawn_uri_negative_test: Fail, OK # Fails at runtime.
spawn_uri_vm_negative_test: Fail, OK # Fails at runtime.
unresolved_ports_negative_test: Fail, OK # Fails at runtime.

# test issue 6512
isolate2_negative_test: Pass
compute_this_script_browser_test: Pass

[ $compiler == dartanalyzer ]
isolate2_negative_test: fail
isolate_import_negative_test: fail
isolate_negative_test: fail
spawn_function_negative_test: fail
spawn_uri_negative_test: fail
spawn_uri_vm_negative_test: fail
unresolved_ports_negative_test: fail

# test issue 10888
global_error_handler_stream_test: fail
global_error_handler_test: fail

[ $compiler == dart2analyzer ]
isolate2_negative_test: fail
isolate_import_negative_test: fail
isolate_negative_test: fail
spawn_function_negative_test: fail
spawn_uri_negative_test: fail
spawn_uri_vm_negative_test: fail
unresolved_ports_negative_test: fail

# test issue 10888
global_error_handler_stream_test: fail
global_error_handler_test: fail

[ $compiler == dart2js && ($runtime == d8 || $jscl) ]
illegal_msg_stream_test: Fail # Issue 6750
typed_data_message_test: Fail, OK # DataView only supported in browsers.

[ $compiler == dart2js && $browser ]
illegal_msg_stream_test: Fail, Pass # Issue 6750

[ $compiler == dart2js && $runtime == drt ]
unresolved_ports_negative_test: Pass, Crash # Issue 10613

[ $compiler == dart2js ]
serialization_test: Fail # Tries to access class TestingOnly declared in isolate_patch.dart
illegal_msg_test: Fail # Issue 6750
stream_mangling_test: Fail # Issue 9245

global_error_handler_test: Pass, Fail # http://dartbug.com/9012 and http://dartbug.com/9024
global_error_handler_stream_test: Pass, Fail # http://dartbug.com/9012 and http://dartbug.com/9024
global_error_handler2_test: Pass, Fail # http://dartbug.com/9012 and http://dartbug.com/9024
global_error_handler_stream2_test: Pass, Fail # http://dartbug.com/9012 and http://dartbug.com/9024

[ $compiler == dart2js && ($runtime == drt || $runtime == ff || $runtime == chrome || $runtime == chromeOnAndroid || $runtime == ie9 || $runtime == ie10 || $runtime == safari) ]
typed_data_message_test: Fail

[ $runtime == safari ]
cross_isolate_message_test: Skip      # Depends on 32/64 bit Safari. See Issue 1120
mixed_test: Pass,Fail               # Depends on 32/64 bit Safari. See Issue 1120
mixed2_test: Pass,Fail              # Depends on 32/64 bit Safari. See Issue 1120
message_test: Skip

# TODO(ager): Update these.
[ $runtime == ie9 && $system == windows ]
v2*: Skip

[ $runtime == safari && $system == macos ]
v2*: Skip

[ $runtime == ie9 && ($system == linux || $system == macos) ]
*: Skip

[ $runtime == safari && ($system == linux || $system == windows) ]
*: Skip

[ $runtime == opera ]
isolate2_negative_test: Skip # Timeout.
unresolved_ports_negative_test: Skip # See Issue 6839

[ $compiler == dart2js && $browser ]
spawn_uri_vm_test: Skip # test uses a ".dart" suffix that only works in vm.
spawn_uri_nested_vm_test: Skip # test uses a ".dart" suffix that only works in vm.
spawn_uri_vm_negative_test: Skip # ditto above.
isolate2_negative_test: Fail, Pass # Issue 7769

[ $compiler == dart2js && $jscl ]
spawn_uri_negative_test: Pass # for the wrong reasons (not supported in d8)
spawn_uri_test: Fail, OK # loading another file is not supported in d8
spawn_uri_vm_negative_test: Skip # ditto above.
spawn_uri_vm_test: Skip # test uses a ".dart" suffix that only works in vm.
spawn_uri_nested_vm_test: Skip # test uses a ".dart" suffix that only works in vm.

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

[ $compiler == dart2js && $runtime == none ]
*: Fail, Pass # TODO(ahe): Triage these tests.

[ $compiler == dart2dart ]
# Skip until we stabilize language tests.
*: Skip

# TODO(ajohnsen): Fix this as part of library changes.
[ $compiler == none ]
isolate_negative_test: Skip # Bug 6890

[ $compiler == dart2js && $runtime == ff && ($system == windows || $system == linux) ]
mandel_isolate_test: Pass, Fail, Timeout # Issue 7952
mandel_isolate_stream_test: Pass, Fail, Timeout # Issue 7952

[ $compiler == dart2js && ( $runtime == ff || $runtime == safari ) ]
isolate_stress_test: Pass, Timeout # http://dartbug.com/10697

[ $arch == arm || $arch == simarm ]
*: Skip

[ $arch == mips ]
*: Skip

[ $arch == simmips ]
*: Skip
