# 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".
#
# Note: Sections in this file are normalized so we can update them with
# automated tools. Please add any new status lines affecting those two compilers
# in the existing sections, if possible keep the alphabetic ordering. If we are
# missing a section you need, please reach out to sigmund@ to see the best way
# to add them.

[ $compiler == dartk && $mode == debug && $runtime == vm && $strong ]
io/file_lock_test: Slow, Pass
io/raw_socket_test: Crash
io/socket_exception_test: Pass, Crash
io/socket_finalizer_test: Pass, Crash
io/socket_info_ipv4_test: Pass, Crash
io/socket_info_ipv6_test: Pass, Crash
io/socket_port_test: Pass, Crash

# ===== dartk + vm status lines =====
[ $compiler == dartk && $runtime == vm && $strong ]
assert_test: CompileTimeError # Issue 31402 (Assert statement)
io/compile_all_test: Crash
io/http_client_request_test: Pass, Timeout
io/http_compression_test: RuntimeError
io/http_proxy_test: CompileTimeError
io/secure_builtin_roots_test: Timeout
io/socket_finalizer_test: Pass, Timeout
map_insert_remove_oom_test: Crash
no_support_debugger_test: Skip # kernel-service snapshot not compatible with flag disabled
package/package1_test: CompileTimeError
package/package_test: CompileTimeError
package/scenarios/invalid/invalid_utf8_test: CompileTimeError
package/scenarios/invalid/non_existent_packages_file_test: CompileTimeError
package/scenarios/invalid/same_package_twice_test: CompileTimeError
regress_29350_test: MissingCompileTimeError
regress_29350_test/none: Pass # Issue 31537

# Enabling of dartk for sim{arm,arm64,dbc64} revelaed these test failures, which
# are to be triaged.  Isolate tests are skipped on purpose due to the usage of
# batch mode.
[ $compiler == dartk && $strong && ($arch == simarm || $arch == simarm64 || $arch == simdbc64) ]
io/directory_list_sync_test: Timeout, Pass # Please triage.
io/echo_server_stream_test: Skip # Uses isolates which don't work in batch mode.
io/file_blocking_lock_test: Pass, Crash # Please triage.
io/file_lock_test: RuntimeError # Please triage.
io/http_advanced_test: Skip # Uses isolates which don't work in batch mode.
io/http_basic_test: Skip # Uses isolates which don't work in batch mode.
io/http_read_test: Skip # Uses isolates which don't work in batch mode.
io/pipe_server_test: Skip # Uses isolates which don't work in batch mode.
io/platform_test: Skip # Uses isolates which don't work in batch mode.
io/raw_synchronous_socket_test: Skip # Uses isolates which don't work in batch mode.
io/socket_close_test: Skip # Uses isolates which don't work in batch mode.
io/socket_finalizer_test: Skip # Uses isolates which don't work in batch mode.
io/socket_many_connections_test: Skip # Uses isolates which don't work in batch mode.
io/stdio_socket_finalizer_test: Skip # Uses isolates which don't work in batch mode.
io/test_extension_fail_test: RuntimeError # Please traige.
io/test_extension_test: RuntimeError # Please traige.
map_insert_remove_oom_test: Pass # Please triage.
package/scenarios/invalid/invalid_utf8_test: Pass # Please triage.
package/scenarios/invalid/non_existent_packages_file_test: Pass # Please triage.
package/scenarios/packages_file_strange_formatting/empty_lines_test: CompileTimeError # Please triage.
package/scenarios/packages_file_strange_formatting/mixed_line_ends_test: CompileTimeError # Please triage.
package/scenarios/packages_option_only/packages_option_only_test: CompileTimeError # Please triage.
regress_26031_test: RuntimeError # Please triage.
regress_28854_1_test: RuntimeError # Please triage.
regress_28854_2_test: RuntimeError # Please triage.
typed_array_int64_uint64_test: RuntimeError # Please triage.
typed_array_test: RuntimeError # Please triage.
typed_data_isolate_test: RuntimeError # Please triage.

# ===== Skip dartk and darkp in !$strong mode ====
[ $compiler == dartk && !$strong ]
*: SkipByDesign

[ $compiler == dartkp && $mode == debug && $runtime == dart_precompiled && $strong ]
io/raw_socket_test: Crash
io/skipping_dart2js_compilations_test: Crash
io/socket_exception_test: Pass, Crash
io/socket_finalizer_test: Pass, Crash
io/socket_info_ipv4_test: Pass, Crash
io/socket_info_ipv6_test: Pass, Crash
io/socket_port_test: Pass, Crash

# ===== dartkp + dart_precompiled status lines =====
[ $compiler == dartkp && $runtime == dart_precompiled && $strong ]
dwarf_stack_trace_test: RuntimeError
io/compile_all_test: Crash
io/file_fuzz_test: RuntimeError, Pass
io/http_client_connect_test: Skip # Flaky.
io/http_close_test: Crash
io/http_compression_test: RuntimeError
io/http_content_length_test: Skip # Flaky.
io/http_cookie_test: Skip # Flaky
io/http_proxy_advanced_test: Skip # Flaky
io/http_proxy_test: Skip # Flaky.
io/http_response_deadline_test: Skip # Flaky.
io/http_reuse_server_port_test: Skip # Flaky.
io/http_server_close_response_after_error_test: Skip # Flaky.
io/http_shutdown_test: Skip # Flaky.
io/https_client_certificate_test: Crash
io/namespace_test: RuntimeError
io/platform_test: Crash
io/raw_datagram_socket_test: Skip # Flaky.
io/raw_secure_server_closing_test: Skip # Flaky
io/raw_socket_test: Crash
io/secure_builtin_roots_test: Timeout, RuntimeError
io/secure_multiple_client_server_test: Skip # Flaky.
io/secure_server_closing_test: Skip # Flaky.
io/secure_server_socket_test: Skip # Flaky.
io/secure_socket_renegotiate_test: Crash
io/socket_many_connections_test: Skip # Flaky
io/web_socket_error_test: Skip # Flaky
io/web_socket_ping_test: Skip # Flaky.
io/web_socket_test: Skip # Flaky.
map_insert_remove_oom_test: Crash
no_support_debugger_test: Skip # kernel-service snapshot not compatible with flag disabled
package/package1_test: CompileTimeError
package/package_test: CompileTimeError
package/scenarios/invalid/invalid_utf8_test: CompileTimeError
package/scenarios/invalid/non_existent_packages_file_test: CompileTimeError
package/scenarios/invalid/same_package_twice_test: CompileTimeError
regress_29350_test: MissingCompileTimeError
regress_29350_test/none: Pass # Issue 31537

[ $compiler == dartkp && !$strong ]
*: SkipByDesign

