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

[ $compiler == dartdevk ]
regexp/lookbehind_test/01: Skip # Flaky in uncatchable way.  Issue 36280

[ $mode == debug ]
regexp/pcre_test: Slow # Issue 22008

[ $arch == simarmv5te && ($runtime == dart_precompiled || $runtime == vm) ]
int_parse_radix_test/*: Slow
integer_parsed_mul_div_vm_test: Slow

[ $arch == x64 && $system == windows ]
stopwatch_test: Skip # Flaky test due to expected performance behaviour.

[ $builder_tag == obfuscated && $runtime == dart_precompiled ]
apply_generic_function_test: SkipByDesign # Function.apply with named args
apply_test: Skip # Uses new Symbol via symbolMapToStringMap helper
dynamic_nosuchmethod_test: SkipByDesign # Expects names in NSM
error_stack_trace1_test: SkipByDesign # Expects unobfuscated stack trace
type_tostring_test: SkipByDesign # Expects names in Type.toString()

[ $compiler != dart2analyzer && $compiler != dart2js && $compiler != dartdevc && $compiler != dartdevk ]
bigint_js_test: SkipByDesign # JavaScript-specific test

[ $compiler == dart2js && $runtime != none ]
regexp/pcre_test: Slow # Issue 21593

# We no longer expect Dart2 tests to run with the standalone VM without the new
# common front end, but for now we get better coverage by still running them in
# checked mode, which is mostly Dart2-compatible.
[ $compiler == none && !$checked && ($runtime == dart_precompiled || $runtime == vm) ]
*: SkipByDesign

[ $runtime != none && ($compiler == dart2js || $compiler == dartdevc || $compiler == dartdevk) ]
int_parse_with_limited_ints_test: Skip # Requires fixed-size int64 support.
typed_data_with_limited_ints_test: Skip # Requires fixed-size int64 support.

[ ($arch == simdbc || $arch == simdbc64) && ($hot_reload || $hot_reload_rollback) ]
uri_parse_test: SkipSlow

[ $arch == simarm || $arch == simarm64 || $arch == simdbc64 ]
bigint_parse_radix_test: Skip # Issue 31659
bigint_test: Skip # Issue 31659

[ $compiler == dartdevc || $compiler == dartdevk ]
bigint_test/03: SkipSlow # modPow is very slow
bigint_test/15: SkipSlow # modPow is very slow
int_parse_with_limited_ints_test: Skip # Requires fixed-size int64 support.
typed_data_with_limited_ints_test: Skip # Requires fixed-size int64 support.
uri_parse_test: Slow
uri_test: Slow

[ $compiler == dartkb || $compiler == dartkp ]
bigint_parse_radix_test: Slow # --no_intrinsify
bigint_test/03: SkipSlow # --no_intrinsify
bigint_test/15: SkipSlow # --no_intrinsify

[ $runtime == dart_precompiled || $runtime == vm ]
regexp/global_test: Skip # Issue 21709
regexp/pcre_test: Slow

[ $hot_reload || $hot_reload_rollback ]
bigint_parse_radix_test: Skip # Issue 31659. Issue 34361.
bigint_test: Skip # Issue 31659
integer_parsed_mul_div_vm_test: Slow # Slow
