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

# 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
*/*/*/*/packages/*/*: Skip
*/*/*/*/*/packages/*/*: Skip

# Analyzer2dart is not maintained anymore.
analyzer2dart/test/*: Skip

[ $compiler != dartanalyzer && $compiler != dart2analyzer ]
docgen/test/inherited_comments_test: Fail # issue 22233

[ $compiler == none && ($runtime == drt || $runtime == dartium || $runtime == ContentShellOnAndroid) ]
mutation_observer: Skip # Issue 21149
unittest/*: Skip # Issue 21949

[ $runtime == vm && $mode == debug]
analysis_server/test/analysis_server_test: SkipSlow  # Times out
analysis_server/test/completion_test: SkipSlow  # Times out
analysis_server/test/domain_context_test: SkipSlow  # Times out
analysis_server/test/domain_server_test: SkipSlow  # Times out
analysis_server/test/integration/*: SkipSlow # Times out
analysis_server/tool/spec/check_all_test: SkipSlow # Times out
analyzer/test/generated/element_test: SkipSlow  # Times out
analyzer/test/generated/parser_test: SkipSlow  # Times out
docgen/test/*: SkipSlow

[ $runtime == vm && $system == windows]
analysis_server/test/analysis/get_errors_test: Skip # runtime error, Issue 22180

[ $compiler == dart2js ]
collection/test/equality_test/01: Fail # Issue 1533
collection/test/equality_test/02: Fail # Issue 1533
collection/test/equality_test/03: Fail # Issue 1533
collection/test/equality_test/04: Fail # Issue 1533
collection/test/equality_test/05: Fail # Issue 1533
collection/test/equality_test/none: Pass, Fail # Issue 14348
docgen/test/*: SkipSlow # Far too slow
typed_data/test/typed_buffers_test/01: Fail # Not supporting Int64List, Uint64List.
analyzer/test/generated/engine_test: SkipSlow
analyzer/test/generated/static_type_warning_code_test: Pass, Slow
analyzer/test/generated/compile_time_error_code_test: Pass, Slow

analyzer/test/enum_test: Slow, Pass, Fail # Issue 21323
analyzer/test/src/context/context_test: Pass, Timeout # dartbug.com/23658

analysis_server/test/*: Skip # Issue 22161
analysis_server/test/search/element_references_test: Pass, Slow
analysis_server/test/services/index/store/codec_test: Pass, Slow
analysis_server/test/domain_completion_test: Pass, Slow
analysis_server/test/edit/assists_test: Pass, Slow
analysis_server/test/edit/format_test: Pass, Slow

# Analysis server integration tests don't make sense to run under
# dart2js, since the code under test always runs in the Dart vm as a
# subprocess.
analysis_server/test/integration: Skip

[ $compiler == dart2js && $checked ]
crypto/test/base64_test: Slow, Pass

[ $runtime == d8 ]
analysis_server/test/analysis_notification_overrides_test: Pass, Slow # Issue 19756
analysis_server/test/analysis_notification_occurrences_test: Pass, Slow # Issue 19756
analysis_server/test/analysis_notification_outline_test: Pass, Slow # Issue 19756
analysis_server/test/domain_search_test: Pass, Slow # Issue 19756
analysis_server/test/search/element_reference_test: Pass, Slow # Issue 19756
analysis_server/index/store/codec_test: Pass, Slow # Issue 19756

[ $compiler == dart2js ]
analysis_server/test/edit/refactoring_test: Pass, Slow # Issue 19756, 21628
analysis_server/test/analysis_notification_occurrences_test: Pass, Slow # Issue 19756, 21628
analysis_server/test/analysis_notification_outline_test: Pass, Slow # Issue 19756, 21628
analysis_server/test/analysis_notification_navigation_test: Pass, Slow # Issue 19756, 21628
analysis_server/test/domain_analysis_test: Pass, Slow # Issue 19756, 21628
analysis_server/test/analysis_notification_highlights_test: Pass, Slow # 19756, 21628
analysis_server/test/search/top_level_declarations_test: Pass, Slow # 19756, 21628
analysis_server/test/socket_server_test: Pass, Slow # Issue 19756, 21628
analyzer/test/generated/all_the_rest_test: Pass, Slow # Issue 21628
analyzer/test/generated/element_test: Pass, Slow # Issue 21628
analyzer/test/generated/incremental_resolver_test: Pass, Slow # Issue 21628
analyzer/test/generated/utilities_test: Pass, Slow # Issue 21628
analyzer/test/generated/parser_test: Pass, Slow # Issue 21628
analyzer/test/generated/scanner_test: Pass, Slow # Issue 21628
analyzer/test/src/task/dart_test: Pass, Slow # Issue 21628
analyzer/test/src/task/driver_test: Pass, Slow # Issue 21628
analyzer/test/src/context/cache_test: Pass, Slow # Issue 21628

[ $runtime == jsshell ]
async/test/stream_zip_test: RuntimeError, OK # Timers are not supported.

[ $compiler == dart2js && $runtime == drt ]
async/test/stream_zip_test: RuntimeError, Pass # Issue 18548

[ $compiler == dart2js && ($runtime == chrome || $runtime == ff) ]
collection/test/unmodifiable_collection_test: SkipSlow # Times out. Issue 22050
async/test/stream_zip_test: SkipSlow # Times out. Issue 22050

[ $runtime == ie10 ]
analyzer/test/generated/java_core_test: Pass, Timeout # Issue 19747
typed_data/test/typed_buffers_test/none: Fail # Issue   17607 (I put this here explicitly, since this is not the same as on ie9)

[ $runtime == safarimobilesim ]
# Unexplained errors only occuring on Safari 6.1 and earlier.
typed_data/test/typed_buffers_test: RuntimeError

[ $runtime == vm && $system == windows ]
analyzer/test/generated/all_the_rest_test: Fail # Issue 21772

[ $compiler == dartanalyzer || $compiler == dart2analyzer ]
compiler/samples/compile_loop/compile_loop: CompileTimeError  # Issue 16524

[ $compiler == dart2js && $csp ]
# This test cannot run under CSP because it is injecting a JavaScript polyfill
mutation_observer: Skip

[ $compiler == dart2js && $browser ]
crypto/test/sha256_test: Slow, Pass
crypto/test/sha1_test: Slow, Pass

[ $browser ]
analyzer_cli/*: SkipByDesign # Uses dart:io.
*/test/analyzer_test: SkipByDesign # No need to run analysis tests on browser bots
analysis_server/test/*: SkipByDesign # Uses dart:io.
analysis_server/tool/spec/check_all_test: SkipByDesign # Uses dart:io.
analyzer/test/*: SkipByDesign # Uses dart:io.
analyzer2dart/*: SkipByDesign # Uses dart:io.
docgen/test/*: SkipByDesign # Uses dart:io.
http_server/test/*: Fail, OK # Uses dart:io.
observe/test/transformer_test: Fail, OK # Uses dart:io.
observe/test/unique_message_test: SkipByDesign  # Uses dart:io.

[ $runtime == vm && ($arch == simarm64 || $arch == simarm || $arch == simarmv5te || $arch == simmips || $arch == armv5te) ]
# Timeout. These are not unit tests. They do not run efficiently on our
# simulator or low-end devices.
*: Skip

[ $runtime == vm ]
# Skip tests on the VM if the package depends on dart:html
mutation_observer: Skip

[ $compiler == dart2js && $runtime == chrome && $system == macos ]
third_party/di_tests/di_test: Pass, Slow # Issue 22896

[ $use_repository_packages ]
analyzer/test/*: PubGetError

[ $compiler == dart2js && $cps_ir ]
analyzer/test/cancelable_future_test: Crash # Invalid argument(s)
analyzer/test/enum_test: Crash # (static Iterable<Str...  cannot handle async/sync*/async* functions
analyzer/test/file_system/physical_resource_provider_test: Crash # (Future _poll()async...  cannot handle async/sync*/async* functions
analyzer/test/generated/all_the_rest_test: Crash # (Future test_implici...  cannot handle async/sync*/async* functions
analyzer/test/src/context/context_test: Crash # Invalid argument(s)
typed_data/test/typed_buffers_test/none: RuntimeError # Please triage this failure.
