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

cc/IsolateReload_PendingUnqualifiedCall_InstanceToStatic: Fail, Crash
cc/IsolateReload_PendingUnqualifiedCall_StaticToInstance: Fail, Crash
cc/IsolateReload_PendingConstructorCall_AbstractToConcrete: Fail, Crash
cc/IsolateReload_PendingConstructorCall_ConcreteToAbstract: Fail, Crash
cc/IsolateReload_PendingStaticCall_DefinedToNSM: Fail, Crash
cc/IsolateReload_PendingStaticCall_NSMToDefined: Fail, Crash

# These tests are expected to crash on all platforms.
cc/ArrayNew_Overflow_Crash: Crash, Timeout
cc/AllocGeneric_Overflow: Crash, Timeout
cc/CodeImmutability: Crash

cc/SNPrint_BadArgs: Skip

# Flaky on buildbot. Issue 5133 and 10409.
cc/Sleep: Pass, Fail

dart/data_uri_import_test/none: SkipByDesign

[ $mode == debug ]
# This is a benchmark that is not informative in debug mode.
cc/CorelibIsolateStartup: Skip
# Negative tests of VerifiedMemory should crash iff in DEBUG mode.
# TODO(koda): Improve support for negative tests.
cc/VerifyImplicit_Crash: Crash, Timeout  # Timeout: Issue #24596
cc/VerifyExplicit_Crash: Crash, Timeout  # Timeout: Issue #24596
# It can take some time for all the isolates to shutdown in a Debug build.
dart/spawn_shutdown_test: Pass, Slow  # VM Shutdown test

# The following section refers to the dart vm tests which live under
# runtime/tests/vm/dart.
[ $system == windows ]
cc/Dart2JSCompileAll: Skip
cc/ExternalizeConstantStrings: Skip
cc/Service_Profile: Skip
cc/Dart2JSCompilerStats: Skip
cc/CorelibCompilerStats: Skip

[ $arch == simarm || $arch == simarmv6 || $arch == simarmv5te || $arch == simarm64 || $arch == simmips || $arch == simdbc  || $arch == simdbc64 ]
cc/Service_Profile: Skip

[ $compiler == dart2js ]
dart/redirection_type_shuffling_test: Skip # Depends on lazy enforcement of type bounds
dart/byte_array_test: Skip # compilers not aware of byte arrays
dart/byte_array_optimized_test: Skip # compilers not aware of byte arrays
dart/simd128float32_array_test: Skip # compilers not aware of Simd128
dart/simd128float32_test: Skip # compilers not aware of Simd128

[ $compiler == dart2js ]
# The source positions do not match with dart2js.
dart/optimized_stacktrace_test: RuntimeError

# Methods can be missing in dart2js stack traces due to inlining.  Also when
# minifying they can be renamed, which is issue 7953.
dart/inline_stack_frame_test: RuntimeError, Pass # Issue 7953

[ $compiler == dart2js && $cps_ir && $checked ]
dart/*: Skip # checked mode + cpsir not supported yet. Issue 25761

[ $compiler == dart2js || $compiler == dart2analyzer ]
# Data uri's not supported by dart2js or the analyzer.
dart/data_uri*test: Skip

[ $arch == mips ]
cc/Int8ListLengthMaxElements: Skip # Issue 23536, uses 1 GB memory.

[ $arch == mips && $mode == debug ]
cc/FindCodeObject: SkipSlow # Takes more than 8 minutes. Issue 17440

[ $compiler == dart2analyzer ]
dart/optimized_stacktrace_test: StaticWarning

[ $runtime != vm ]
dart/snapshot_version_test: SkipByDesign  # Spawns processes
dart/spawn_infinite_loop_test: Skip  # VM shutdown test
dart/spawn_shutdown_test: Skip  # VM Shutdown test

[ ($runtime == vm || $runtime == dart_precompiled) && $mode == debug && $builder_tag == asan ]
cc/Dart2JSCompileAll: SkipSlow  # Timeout.

[ $builder_tag == asan ]
cc/CodeImmutability: Fail,OK # Address Sanitizer turns a crash into a failure.

[ $arch == ia32 && $builder_tag == asan ]
cc/Dart2JSCompileAll: Crash # Issue 26487 - stack overflow
cc/Dart2JSCompilerStats: Crash # Issue 26487 - stack overflow

[ $noopt ]
dart/byte_array_test: Crash # Incompatible flag --disable_alloc_stubs_after_gc

[ $noopt || $compiler == precompiler || $mode == product ]
dart/redirection_type_shuffling_test: SkipByDesign # Imports dart:mirrors
cc/CreateMirrorSystem: SkipByDesign # Imports dart:mirrors
cc/CoreSnapshotSize: SkipByDesign # Imports dart:mirrors
cc/StandaloneSnapshotSize: SkipByDesign # Imports dart:mirrors

[ $noopt || $runtime == dart_precompiled ]
# Stacktraces in precompilation omit inlined frames.
dart/inline_stack_frame_test: Pass, RuntimeError
dart/optimized_stacktrace_test: Pass, RuntimeError

[ $runtime == dart_product || $runtime == dart_precompiled ]
dart/data_uri_spawn_test: SkipByDesign # Isolate.spawnUri
dart/optimized_stacktrace_test: SkipByDesign # Requires line numbers

[ $runtime == vm && $mode == product ]
cc/IsolateSetCheckedMode: Fail,OK  # Expects exact type name.
cc/StackTraceFormat: Fail,OK  # Expects exact type name.
cc/String_ScrubName: Fail,OK  # Expects exact type name.
cc/GetFunctionNames: Fail,OK  # Expects exact type name.

[ $arch == simdbc || $arch == simdbc64 ]
# TODO(vegorov) Profiler is completely disabled in SIMDBC builds.
cc/Profiler_AllocationSampleTest: Skip
cc/Profiler_ArrayAllocation: Skip
cc/Profiler_BasicSourcePosition: Skip
cc/Profiler_BasicSourcePositionOptimized: Skip
cc/Profiler_BinaryOperatorSourcePosition: Skip
cc/Profiler_BinaryOperatorSourcePositionOptimized: Skip
cc/Profiler_ChainedSamples: Skip
cc/Profiler_ClosureAllocation: Skip
cc/Profiler_CodeTicks: Skip
cc/Profiler_ContextAllocation: Skip
cc/Profiler_FunctionInline: Skip
cc/Profiler_FunctionTicks: Skip
cc/Profiler_InliningIntervalBoundry: Skip
cc/Profiler_IntrinsicAllocation: Skip
cc/Profiler_SampleBufferIterateTest: Skip
cc/Profiler_SampleBufferWrapTest: Skip
cc/Profiler_SourcePosition: Skip
cc/Profiler_SourcePositionOptimized: Skip
cc/Profiler_StringAllocation: Skip
cc/Profiler_StringInterpolation: Skip
cc/Profiler_ToggleRecordAllocation: Skip
cc/Profiler_TrivialRecordAllocation: Skip
cc/Profiler_TypedArrayAllocation: Skip
cc/Profiler_GetSourceReport: Skip

# TODO(vegorov) These tests are crashing because ICData objects can't be found
cc/SourceReport_CallSites_PolymorphicCall: Skip
cc/SourceReport_CallSites_SimpleCall: Skip
cc/SourceReport_Coverage_AllFunctions: Skip
cc/SourceReport_Coverage_ForceCompile: Skip
cc/SourceReport_Coverage_NestedFunctions: Skip
cc/SourceReport_Coverage_SimpleCall: Skip
cc/SourceReport_Coverage_UnusedClass_NoForceCompile: Skip
cc/SourceReport_Coverage_UnusedClass_ForceCompile: Skip
cc/SourceReport_Coverage_UnusedClass_ForceCompileError: Skip
cc/SourceReport_MultipleReports: Skip
cc/Coverage_Empty: Skip
cc/Coverage_FilterFunction: Skip
cc/Coverage_MainWithClass: Skip

# TODO(vegorov) These tests don't seem to work if FLAG_interpret_irregexp
# is switched on by default because they attempt to call regexp functions
# directly instead of going through JSSyntaxRegExp_ExecuteMatch.
cc/RegExp_ExternalOneByteString: Skip
cc/RegExp_ExternalTwoByteString: Skip
cc/RegExp_OneByteString: Skip
cc/RegExp_TwoByteString: Skip

# TODO(vegorov) Optimizing compiler is disabled for the SIMDBC
cc/CompileFunctionOnHelperThread: Skip

# TODO(vegorov) Field guards are disabled for SIMDBC
cc/GuardFieldConstructor2Test: Skip
cc/GuardFieldConstructorTest: Skip
cc/GuardFieldFinalListTest: Skip
cc/GuardFieldFinalVariableLengthListTest: Skip
cc/GuardFieldSimpleTest: Skip

# TODO(vegorov) Not all bytecodes have appropriate debug breaks.
cc/Debug_BreakpointStubPatching: Skip
cc/Debug_ExprClosureBreakpoint: Skip
cc/Debug_StackTraceDump1: Skip
cc/Debug_StepInto: Skip

# TODO(vegorov) These parser tests rely on debugger.
cc/Parser_AllocateVariables_CapturedVar: Skip
cc/Parser_AllocateVariables_MiddleChain: Skip

# This test is meaningless for DBC as allocation stubs are not used.
cc/RegenerateAllocStubs: Skip

# TODO(vegorov) Enable when DBC supports optimizing compiler.
cc/Debug_InspectStack_Optimized: Skip
cc/Debug_InspectStackWithClosure_Optimized: Skip

