# 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, OK
global_error_handler_test: fail, OK

[ $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, OK
global_error_handler_test: fail, OK

[ $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 ]
*: Skip

[ $arch == simarm ]
*: Skip

[ $arch == mips ]
*: Skip

[ $arch == simmips ]
*: Skip
