# 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.
# Sections in this file should contain "$compiler == dartk" or
# "$compiler == dartkp".

isolate/ping_pause_test: Skip # Issue https://dartbug.com/37787

[ $compiler == fasta ]
html/*: Skip # TODO(ahe): Make dart:html available.
js/*: Skip # TODO(ahe): Make dart:js available.

[ $arch == x64 && $compiler == dartk && $mode == debug && $runtime == vm ]
mirrors/invocation_fuzz_test: Skip # Because it times out, issue 29439.

[ $arch == x64 && ($hot_reload || $hot_reload_rollback) ]
convert/base64_test/01: Crash # http://dartbug.com/35948

[ $builder_tag == optimization_counter_threshold && $compiler == dartk ]
mirrors/invocation_fuzz_test/emptyarray: Crash # Flaky on vm-kernel-optcounter-threshold-linux-release-x64, bug #31838
mirrors/invocation_fuzz_test/false: Crash # Flaky on vm-kernel-optcounter-threshold-linux-release-x64, bug #31838
mirrors/invocation_fuzz_test/none: Crash # Flaky on vm-kernel-optcounter-threshold-linux-release-x64, bug #31838
mirrors/invocation_fuzz_test/smi: Crash # Crashes on opt counter builder (#31838)
mirrors/invocation_fuzz_test/string: Crash # Flaky on vm-kernel-optcounter-threshold-linux-release-x64, bug #31838

[ $compiler == app_jitk && ($mode == product || $mode == release) ]
isolate/spawn_uri_nested_vm_test: Skip # Timeout, Issue 33385

[ $compiler == dartk && $mode == debug && $runtime == vm ]
mirrors/other_declarations_location_test: Crash # Issue 33325 (assertion error, TypeParameter not having position).

[ $compiler == dartk && $mode == debug && $hot_reload_rollback ]
isolate/message3_test/constList_identical: Skip # Timeout

# ===== dartk + vm status lines =====
[ $compiler == dartk && $runtime == vm ]
html/*: SkipByDesign # dart:html not supported on VM.
isolate/deferred_in_isolate2_test: Skip # Times out. Deferred loading kernel issue 28335.
isolate/deferred_in_isolate_test: Skip # Times out. Deferred loading kernel issue 28335.
isolate/issue_21398_parent_isolate2_test/01: Skip # Times out. Deferred loading kernel issue 28335.
isolate/static_function_test: Skip # Times out. Issue 31855. CompileTimeError. Issue 31402
mirrors/invocation_fuzz_test: Crash
mirrors/metadata_allowed_values_test/16: Skip # Flaky, crashes.

[ $compiler == dartk && $hot_reload_rollback ]
isolate/illegal_msg_function_test: Skip # Timeout
isolate/pause_test: Skip # Timeout

[ $compiler == dartk && ($hot_reload || $hot_reload_rollback) ]
isolate/message4_test: Crash # Timeout and sporadic crash (issue 33824)
mirrors/dynamic_load_test: Skip # Reload has an effect similar to deleting the dynamically loaded library
mirrors/immutable_collections_test: Pass, Slow
mirrors/mirrors_reader_test: Pass, Slow

[ $compiler == dartkp && $mode == debug && $runtime == dart_precompiled ]
isolate/static_function_test: Skip # Flaky (https://github.com/dart-lang/sdk/issues/30063).

# ===== dartkp + dart_precompiled status lines =====
[ $compiler == dartkp && $runtime == dart_precompiled ]
html/*: SkipByDesign # dart:html not supported on VM.
isolate/deferred_in_isolate2_test: Skip # Times out. Deferred loading kernel issue 28335.
isolate/deferred_in_isolate_test: Skip # Times out. Deferred loading kernel issue 28335.
isolate/issue_21398_parent_isolate2_test/01: Skip # Times out. Deferred loading kernel issue 28335.
mirrors/*: SkipByDesign # Mirrors are not supported in AOT mode.

[ $compiler == app_jitk || $compiler == dartk || $compiler == dartkp ]
html/*: SkipByDesign
js/*: SkipByDesign

[ $hot_reload || $hot_reload_rollback ]
isolate/issue_6610_test: Skip # Sources are looked up on every reload request.
