# 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 == chromeOnAndroid || $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.
analyzer_experimental/test/error_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
analyzer_experimental/test/error_test: Skip # Imports dart:io.

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

[ $compiler == dartanalyzer ]
unittest/test/mock_regexp_negative_test: fail
unittest/test/mock_stepwise_negative_test: fail

[ $compiler == dart2analyzer ]
unittest/test/mock_regexp_negative_test: fail
unittest/test/mock_stepwise_negative_test: fail

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

[ $compiler == dart2js && $csp ]
unittest/test/unittest_test: Pass, Crash # Issue 10935

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

# The unminified unittest tests test that the real names of Dart types are
# printed. Minified versions of these tests exist that test the behavior when
# minified.
unittest/test/*_unminified_test: Skip

[ $minified == false ]
# The minified unittest tests test that the minified names of Dart types are
# printed. Unminified versions of these tests exist that test the behavior when
# not minified.
unittest/test/*_minified_test: Skip

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

# Skip mdv_observe tests on command line VM, they only run in the browser.
[ $runtime == vm ]
mdv_observe: Skip
