# 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

# Don't run any test-like files that show up in packages directories. It
# shouldn't be necessary to run "pub install" in these packages, but if you do
# it shouldn't break the tests.
*/packages/*/*: Skip
*/*/packages/*/*: Skip
*/*/*/packages/*/*: Skip

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

scheduled_test/test/scheduled_server_test: Pass, Fail, Slow, Crash # Issue 9231, 9582
scheduled_test/test/scheduled_process_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


[ $runtime == d8 || $runtime == jsshell ]
unittest/test/unittest_test: Pass, Fail # http://dartbug.com/10109

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

# We use pathos in the stack_trace tests. We can run them on dart2js when issue
# 6943 is fixed.
stack_trace/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

# We use pathos in the stack_trace tests. We can run them on dart2js when issue
# 6943 is fixed.
stack_trace/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: Skip # 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

[ $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 && $minified ]
# The unittest package relies on getting the original (non-minified) method
# names in Invocation.  You can't get that when minifying.
# TODO(ahe/erikcorry): But soon you can, now that we use Symbol.
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
