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

# Skip non-test files ending with "_test".
packages/*: SkipByDesign
*/packages/*: SkipByDesign
*/*/packages/*: SkipByDesign
*/*/*/packages/*: SkipByDesign
*/*/*/*packages/*: SkipByDesign
*/*/*/*/*packages/*: SkipByDesign

# Only run tests from the test directory, since we don't care about the
# difference between transformed an untransformed code.
build/test/*: SkipByDesign
build/test/*/*: SkipByDesign
build/test/*/*/*: SkipByDesign
build/test/*/*/*/*: SkipByDesign

# Don't run library files as tests
lib/*: SkipByDesign
lib/*/*: SkipByDesign
lib/*/*/*: SkipByDesign
lib/*/*/*/*: SkipByDesign

# PhantomJS isn't supported on the bots (issue 23195).
test/runner/browser/phantom_js: Skip

test/runner/browser/loader_test: Pass, Slow

[ $system != windows ]
test/runner/browser/internet_explorer: SkipByDesign

[ $system != macos ]
test/runner/browser/safari: SkipByDesign

# The test harness for browser tests doesn't play nicely with the new way of
# doing browser tests.
[ $browser ]
test/*: SkipByDesign
test/*/*: SkipByDesign
test/*/*/*: SkipByDesign
test/*/*/*/*: SkipByDesign
