# Copyright (c) 2013, 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.

# WARNING:
# Tests using the multitest feature where failure is expected should *also* be
# listed in tests/lib/analyzer/analyze_tests.status without the "standalone"
# prefix.

# The testing infrastructure is using the dart:io Path and LineTransformer
# classes.
io/skipping_dart2js_compilations_test: Skip # http/dartbug.com/12449
io/dependency_graph_test: Skip # http/dartbug.com/12449
io/status_file_parser_test: Skip # http/dartbug.com/12449

package/invalid_uri_test: Fail, OK # CompileTimeErrors intentionally

[ $runtime == vm && $system == windows ]
io/file_system_watcher_test: Pass, Timeout # Issue 13228

[ $runtime == vm ]
package/package_isolate_test: Fail # http://dartbug.com/7520.


[ $runtime == vm && $checked ]
# These tests have type errors on purpose.
io/process_invalid_arguments_test: Fail, OK
io/directory_invalid_arguments_test: Fail, OK
io/file_invalid_arguments_test: Fail, OK
io/socket_invalid_arguments_test: Fail, OK
io/stdout_bad_argument_test: Fail, OK
# These test have type errors on purpose and take very long to run in
# checked mode with no benefit. Skip.
io/file_fuzz_test: Skip
io/directory_fuzz_test: Skip

[ $runtime == vm && $system == macos ]
# This test fails with "Too many open files" on the Mac OS buildbot.
# This is expected as MacOS by default runs with a very low number
# of allowed open files ('ulimit -n' says something like 256).
io/socket_many_connections_test: Skip

# These tests pass on MacOS 10.8.2 but fails on the buildbot machines
# that are running an earlier version of MacOS. The issue is that the
# old version of MacOS does not expand the precomposed utf-8 it gets
# from the VM before comparing it to the decomposed utf-8 used for the
# file system.
io/file_non_ascii_sync_test: Pass, Fail
io/file_non_ascii_test: Pass, Fail
io/directory_non_ascii_sync_test: Pass, Fail
io/directory_non_ascii_test: Pass, Fail
io/process_non_ascii_test: Pass, Fail

[ $compiler == none && ($runtime == drt || $runtime == dartium) ]
typed_data_isolate_test: Skip # This test uses dart:io
io/*: Skip # Don't run tests using dart:io in the browser
package/*: Skip # Do not run those in Dartium.
debugger/*: Skip # Do not run standalone debugger tests in browser.
coverage_test: Skip
http_launch_test: Skip
vmservice/*: Skip # Do not run standalone vm service tests in browser.


[ $compiler == dartanalyzer ]
javascript_int_overflow_literal_test/01: fail, ok

# test issue https://code.google.com/p/dart/issues/detail?id=11518
io/file_constructor_test: fail

# The dart:io library is created at build time from separate files, and
# there is no language-spec compatible way to run unit tests on the private
# members and methods of dart:io.
# Dart analyzer spots the misuse of 'part' directives in these unit tests.
io/http_headers_test: Skip
io/http_cookie_date_test: Skip
io/http_parser_test: Skip
io/web_socket_protocol_processor_test: Skip

# This is runtime test.
io/process_exit_negative_test: Skip

# https://code.google.com/p/dart/issues/detail?id=11647
package/package_isolate_test: fail

[ $compiler == dart2analyzer ]
javascript_int_overflow_literal_test/01: fail, ok
package/package_isolate_test: fail # issue 11647

# test issue https://code.google.com/p/dart/issues/detail?id=11518
io/file_constructor_test: fail

# The dart:io library is created at build time from separate files, and
# there is no language-spec compatible way to run unit tests on the private
# members and methods of dart:io.
# Dart analyzer spots the misuse of 'part' directives in these unit tests.
io/http_headers_test: Skip
io/http_cookie_date_test: Skip
io/http_parser_test: Skip
io/web_socket_protocol_processor_test: Skip

# This is runtime test.
io/process_exit_negative_test: Skip

# https://code.google.com/p/dart/issues/detail?id=11647
package/package_isolate_test: fail

[ $compiler == dart2js ]
number_identity_test: Skip # Bigints and int/double diff. not supported.
typed_data_test: Skip # dart:typed_data support needed.
bytedata_test: Skip # dart:typed_data support needed.
typed_data_view_test: Skip # dart:typed_data support needed.
typed_data_isolate_test: Skip # dart:typed_data support needed.
typed_array_int64_uint64_test: Skip # dart:typed_data on dart2js does not support 64-bit ints.
float_array_test: Skip # dart:typed_data support needed.
int_array_test: Skip  # dart:typed_data support needed.
io/web_socket_protocol_processor_test: Skip  # Importing code with external keyword
int_array_load_elimination_test: Skip  # This is a VM test
medium_integer_test: RuntimeError, OK # Test fails with JS number semantics: issue 1533.
io/process_exit_negative_test: Fail, OK # relies on a static error that is a warning now.
package/package_isolate_test: Skip # spawnUri does not work in dart2js. See issue 3051
debugger/*: Skip # Do not run standalone vm debugger tests with dart2js.
left_shift_bit_and_op_test: Skip # Integers exceed dart2js precision.
pow_test: Skip # Precision > 53 bits.
double_smi_comparison_test: Skip # Precision > 53 bits.
http_launch_test: Skip
javascript_int_overflow_test: Skip
javascript_int_overflow_literal_test: Skip
oom_error_stacktrace_test: RuntimeError, OK # (OOM on JS may produce a stacktrace).
vmservice/*: Skip # Do not run standalone vm service tests with dart2js.


[ $compiler == dart2js && $jscl ]
assert_test: RuntimeError, OK # Assumes unspecified fields on the AssertionError.
deoptimization_test: RuntimeError, OK # Requires bigint.
out_of_memory_test: RuntimeError, OK # d8 handles much larger arrays than Dart VM.
io/options_test: CompileTimeError, OK # Cannot pass options to d8.

[ $compiler == dart2js && $runtime == none ]
io/options_test: Fail
medium_integer_test: Pass # The test only fails at runtime, not at compilation.
oom_error_stacktrace_test: Pass # The test only fails at runtime.

[ $compiler == dart2js && $browser ]
*: Skip

[ $compiler == dart2js && $checked ]
io/http_read_test: Skip # Timeout TODO(ngeoffray): investigate

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

[ $arch == arm ]
io/internet_address_test: Fail  # localhost is an Unknown name?

[ $arch == simarm ]
out_of_memory_test: Skip # passes on Mac, crashes on Linux
oom_error_stacktrace_test: Skip # Fails on Linux
io/test_runner_test: Pass, Fail # Issue 12413

[ $arch == simmips ]
io/test_runner_test: Pass, Fail # Issue 12413

[ $arch == simmips || $arch == mips ]
io/file_fuzz_test: Pass, Timeout
io/web_socket_test: Pass, Slow
io/http_server_response_test: Pass, Slow
out_of_memory_test: Skip # passes on Mac, crashes on Linux
oom_error_stacktrace_test: Skip # Fails on Linux

[ $arch == mips ]
io/test_extension_test: Fail
io/test_extension_fail_test: Fail
io/dart_std_io_pipe_test: Fail
io/file_read_special_device_test: Fail

[ $compiler == none && $runtime == dartium ]
assert_test: Fail # Issue 13719: Please triage this failure.
javascript_int_overflow_literal_test/01: Fail # Issue 13719: Please triage this failure.
javascript_int_overflow_test: Fail # Issue 13719: Please triage this failure.
