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

# Run this test manually to verify that the fixnum library produces
# the same results as native ints on a set of directed and random inputs.
# Skip it when running automated tests because it times out.  This
# test only makes sense on runtimes that support 64-bit integer
# arithmetic natively, i.e., the VM.
fixnum/test/int_64_vm_test: Skip

# Skip non-test files ending with "_test".
scheduled_test/lib/*: Skip

scheduled_test/test/scheduled_test_test: Pass, Slow # Issue 9231

# WebDriver tests have 3rd party dependencies (we need to run
# selenium_standalone.jar), so we skip these in our automated
# testing.
webdriver/test/webdriver_test: Skip

[$compiler == none && $runtime == vm]
intl/test/date_time_format_file_even_test: Pass, Crash # Issue 9342
intl/test/date_time_format_file_odd_test: Pass, Crash # Issue 9342
intl/test/date_time_format_local_even_test: Pass, Crash # Issue 9342
intl/test/date_time_format_local_odd_test: Pass, Crash # Issue 9342

[$compiler == dart2dart]
*: Skip

# Don't compile tests that use dart:io to JS
[ $compiler == dart2js || $compiler == dart2dart ]
http/test/*: Skip
oauth2/test/*: Skip
pathos/test/*: Skip

# Issue 8440 forces us to use pathos in the scheduled_test tests, which would
# otherwise be dart2js-compatible.
scheduled_test/test/*: Skip
source_maps/test/vlq_test: Fail # A VLQ test checks for large numbers that
                                # overflow in JS (numbers slightly larger than
                                # 32 bits where we do bitwise operations).

# Skip tests that use local file access if we're running in any browser
[ $runtime == opera || $runtime == ff || $runtime == ie9 || $runtime == dartium || $runtime == chrome || $runtime == safari || $runtime == drt  || $runtime == jsshell]
http/test/*: Skip
oauth2/test/*: Skip
pathos/test/*: Skip
intl/test/date_time_format_file_even_test: Skip
intl/test/date_time_format_file_odd_test: Skip
intl/test/find_default_locale_standalone_test: Skip
intl/test/message_extraction/message_extraction_test: Skip
analyzer_experimental/test/options_test: Skip # Imports dart:io.
analyzer_experimental/test/generated/ast_test: Skip # Imports dart:io.
analyzer_experimental/test/generated/element_test: Skip # Imports dart:io.
analyzer_experimental/test/generated/parser_test: Skip # Imports dart:io.
analyzer_experimental/test/generated/resolver_test: Skip # Imports dart:io.
analyzer_experimental/test/generated/scanner_test: Skip # Imports dart:io.

# Issue 8440 forces us to use pathos in the scheduled_test tests, which would
# otherwise be dart2js-compatible.
scheduled_test/test/*: Skip

[ $runtime == opera && $compiler == dart2js ]
intl/test/find_default_locale_browser_test: Fail
intl/test/date_time_format_http_request_test: Skip # Timeout.

[ $runtime == ie9 ]
intl/test/date_time_format_http_request_test: Fail # Issue 8983

[ $runtime == safari ]
fixnum/test/int_64_test: Pass, Fail # Bug in JSC.

# Skip browser-specific Intl tests on VM
[ $runtime == vm ]
intl/test/find_default_locale_browser_test: Skip
intl/test/date_time_format_http_request_test: Skip

[ $runtime == vm && $system == windows ]
intl/test/find_default_locale_standalone_test: Fail # Issue 8110
intl/test/message_extraction/message_extraction_test: Fail # Issue 9167

# Skip http request tests on Dartium while resolving an odd
# error there that causes the tests to timeout.
[ $runtime == dartium || $runtime == drt ]
intl/test/date_time_format_http_request_test: Skip

[ $compiler == dart2js ]
# Skip intl_message tests that use mirrors on dart2js until it's been
# implemented there.
serialization/test/serialization_test: Skip # Issue 6490
serialization/test/no_library_test: Skip # Issue 6490
analyzer_experimental/test/generated/ast_test: Skip
analyzer_experimental/test/generated/element_test: Skip
analyzer_experimental/test/generated/parser_test: Skip
analyzer_experimental/test/generated/resolver_test: Skip
analyzer_experimental/test/generated/scanner_test: Skip

[ $compiler == dartc ]
unittest/test/mock_regexp_negative_test: Fail
unittest/test/mock_stepwise_negative_test: Fail


[ $compiler == dart2js ]
unittest/test/instance_test: Skip

[ $compiler == dart2js && $runtime == drt ]
intl/test/date_time_format_uninitialized_test: Pass, Fail # http://dartbug.com/9000

[ $compiler == dart2js && $minified ]
# The unittest package relies on getting the original (non-minified) method
# names in InvocationMirrors.  You can't get that when minifying.
unittest/test/mock_test: Fail
unittest/test/mock_regexp_negative_test: Fail

[ $compiler == none && $runtime == drt ]
dartdoc/test/dartdoc_test: Skip # See dartbug.com/4541.

[ $arch == arm ]
*: Skip

[ $arch == simarm ]
*: Skip

[ $arch == mips ]
*: Skip

[ $arch == simmips ]
*: Skip

# Skip serialization test that explicitly has no library declaration in the
# test on Dartium, which requires all tests to have a library.
[ $runtime == dartium || $runtime == drt ]
serialization/test/no_library_test: Skip # Expected Failure
