# Copyright 2011 the V8 project authors. All rights reserved.
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
#     * Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above
#       copyright notice, this list of conditions and the following
#       disclaimer in the documentation and/or other materials provided
#       with the distribution.
#     * Neither the name of Google Inc. nor the names of its
#       contributors may be used to endorse or promote products derived
#       from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

[
[ALWAYS, {
  # All tests prefixed with 'Bug' are expected to fail.
  'test-api/Bug*': [FAIL],

  ##############################################################################

  # BUG(382): Weird test. Can't guarantee that it never times out.
  'test-api/ApplyInterruption': [PASS, TIMEOUT],

  # These tests always fail.  They are here to test test.py.  If
  # they don't fail then test.py has failed.
  'test-serialize/TestThatAlwaysFails': [FAIL],
  'test-api/SealHandleScope': [FAIL],

  # This test always fails.  It tests that LiveEdit causes abort when turned off.
  'test-debug/LiveEditDisabled': [FAIL],

  # This test always fails.  It tests that DisallowJavascriptExecutionScope
  # works as intended.
  'test-api/DisallowJavascriptExecutionScope': [FAIL],

  # TODO(gc): Temporarily disabled in the GC branch.
  'test-log/EquivalenceOfLoggingAndTraversal': [PASS, FAIL],

  # We do not yet shrink weak maps after they have been emptied by the GC
  'test-weakmaps/Shrinking': [FAIL],
  'test-weaksets/WeakSet_Shrinking': [FAIL],

  # Boot up memory use is bloated in debug mode.
  'test-mark-compact/BootUpMemoryUse': [PASS, PASS, ['mode == debug', FAIL]],

  # This tests only that the preparser and parser agree, so there is no point in
  # running several variants. Note that this still takes ages, because there
  # are actually 13 * 38 * 5 * 128 = 316160 individual tests hidden here.
  'test-parsing/ParserSync': [PASS, NO_VARIANTS],

  # This tests only the type system, no point in running several variants.
  'test-hydrogen-types/*': [PASS, NO_VARIANTS],
  'test-types/*': [PASS, NO_VARIANTS],
  'test-ast-types/*': [PASS, NO_VARIANTS],

  # This tests API threading, no point in running several variants.
  # They are also slow in debug mode.
  'test-api/Threading*': [PASS, NO_VARIANTS, ['mode == debug', SLOW]],

  # BUG(2999). The cpu profiler tests are notoriously flaky.
  'test-cpu-profiler/CpuProfileDeepStack': [SKIP],
  'test-cpu-profiler/CollectCpuProfile': [SKIP],
  'test-cpu-profiler/HotDeoptNoFrameEntry': [SKIP],
  'test-cpu-profiler/SampleWhenFrameIsNotSetup': [SKIP],

  # BUG(2340). Preprocessing stack traces is disabled at the moment.
  'test-heap/PreprocessStackTrace': [FAIL],

  # BUG(4333). Function name inferrer does not work for ES6 clases.
  'test-func-name-inference/UpperCaseClass': [FAIL],
  'test-func-name-inference/LowerCaseClass': [FAIL],

  # BUG(3742).
  'test-mark-compact/MarkCompactCollector': [PASS, ['arch==arm', NO_VARIANTS]],

  # Test that serialization with unknown external reference fails.
  'test-serialize/SnapshotCreatorUnknownExternalReferences': [FAIL],

  ############################################################################
  # Slow tests.
  'test-debug/CallFunctionInDebugger': [PASS, ['mode == debug', SLOW]],
  'test-strings/StringOOM*': [PASS, ['mode == debug', SKIP]],
  'test-serialize/CustomSnapshotDataBlobImmortalImmovableRoots': [PASS, ['mode == debug', SKIP]],
}],  # ALWAYS

##############################################################################
['arch == arm64', {

  'test-cpu-profiler/CollectDeoptEvents': [PASS, FAIL],

  'test-api/Bug618': [PASS],

  # BUG(v8:3385).
  'test-serialize/StartupSerializerOnceRunScript': [PASS, FAIL],
  'test-serialize/StartupSerializerTwiceRunScript': [PASS, FAIL],

  # BUG(v8:3154).
  'test-heap/ReleaseOverReservedPages': [PASS, FAIL],

  # BUG(v8:3155).
  'test-strings/OneByteArrayJoin': [PASS, ['mode == debug', FAIL]],

  # BUG(v8:3247).
  'test-mark-compact/NoPromotion': [SKIP],

  # BUG(v8:3446).
  'test-mark-compact/Promotion': [PASS, FAIL],

  # BUG(v8:3434).
  ' test-api/LoadICFastApi_DirectCall_GCMoveStubWithProfiler': [SKIP],
}],  # 'arch == arm64'

['arch == arm64 and simulator_run == True', {

  # Pass but take too long with the simulator.
  'test-api/ExternalArrays': [PASS, TIMEOUT],
}],  # 'arch == arm64 and simulator_run == True'

['arch == arm64 and mode == debug and simulator_run == True', {

  # Pass but take too long with the simulator in debug mode.
  'test-api/ExternalDoubleArray': [SKIP],
  'test-api/ExternalFloat32Array': [SKIP],
  'test-api/ExternalFloat64Array': [SKIP],
  'test-api/ExternalFloatArray': [SKIP],
  'test-api/Float32Array': [SKIP],
  'test-api/Float64Array': [SKIP],
}],  # 'arch == arm64 and mode == debug and simulator_run == True'

##############################################################################
['asan == True', {
  # Skip tests not suitable for ASAN.
  'test-assembler-x64/AssemblerX64XchglOperations': [SKIP],

  # BUG(v8:5243).
  'test-cpu-profiler/JsNative1JsNative2JsSample': [SKIP],
  'test-cpu-profiler/JsNativeJsRuntimeJsSample': [SKIP],
  'test-cpu-profiler/JsNativeJsRuntimeJsSampleMultiple': [SKIP],
  'test-cpu-profiler/JsNativeJsSample': [SKIP],
}],  # 'asan == True'

##############################################################################
['msan == True', {
  # ICU upstream issues.
  'test-strings/CountBreakIterator': [SKIP],

  # Slow tests.
  'test-api/Threading*': [PASS, SLOW],
}],  # 'msan == True'

##############################################################################
['no_snap == True', {
  # Slow tests.
  'test-api/ExternalWrap': [PASS, SLOW],
  'test-api/FastReturnValues*': [PASS, SLOW],
  'test-decls/CrossScriptReferences_Simple2': [PASS, SLOW],
}],  # 'no_snap == True'

##############################################################################
# TODO(machenbach): Fix application of '*'. Nosnap windows needs a separate
# section to not overwrite the expectations for TestThatAlwaysFails.
['no_snap == True and system == windows', {
  # Windows doesn't support nosnap mode.
  'test-serialize/*': [SKIP],
}],  # 'no_snap == True and system == windows'

##############################################################################
['system == windows', {

  # BUG(3331). Fails on windows.
  'test-heap/NoWeakHashTableLeakWithIncrementalMarking': [SKIP],

  # BUG(v8:4573).
  'test-api/MultipleIsolatesOnIndividualThreads': [PASS, NO_VARIANTS],

  # BUG(v8:4642).
  'test-lockers/LockAndUnlockDifferentIsolates': [PASS, NO_VARIANTS],

  # BUG(v8:2999,v8:4751).
  'test-cpu-profiler/CollectDeoptEvents': [SKIP],
  'test-cpu-profiler/FunctionCallSample': [SKIP],
  'test-cpu-profiler/JsNativeJsRuntimeJsSample': [SKIP],
  'test-cpu-profiler/JsNativeJsRuntimeJsSampleMultiple': [SKIP],
  'test-cpu-profiler/JsNativeJsSample': [SKIP],
  'test-cpu-profiler/JsNative1JsNative2JsSample': [SKIP],

  # BUG(v8:5193): Flaky.
  'test-cpu-profiler/FunctionApplySample': [SKIP],

  # BUG(5193): Flaky timeout.
  'test-sampler/LibSamplerCollectSample': [PASS, ['arch == x64', SKIP]],
}],  # 'system == windows'

##############################################################################
['arch == arm', {

  'test-cpu-profiler/CollectDeoptEvents': [PASS, FAIL],

  # BUG(355): Test crashes on ARM.
  'test-log/ProfLazyMode': [SKIP],

  # BUG(1075): Unresolved crashes.
  'test-serialize/StartupSerializerOnce': [SKIP],
  'test-serialize/StartupSerializerTwice': [SKIP],
  'test-serialize/StartupSerializerOnceRunScript': [SKIP],
  'test-serialize/StartupSerializerTwiceRunScript': [SKIP],
  'test-run-wasm-simd/RunWasmCompiled_F32x4Add': [SKIP],
  'test-run-wasm-simd/RunWasmCompiled_F32x4Sub': [SKIP],
  'test-run-wasm-simd/RunWasmInterpreted_F32x4Add': [SKIP],
  'test-run-wasm-simd/RunWasmInterpreted_F32x4Sub': [SKIP],

  ############################################################################
  # Slow tests.
  'test-api/Threading*': [PASS, SLOW],
}],  # 'arch == arm'

##############################################################################
['arch == mipsel or arch == mips', {
  'test-cpu-profiler/CollectDeoptEvents': [PASS, FAIL],

  # TODO(mips-team): Improve code-size on large RegExp's.
  'test-heap/TestSizeOfRegExpCode':  [SKIP],

  # BUG(1075): Unresolved crashes on MIPS also.
  'test-serialize/StartupSerializerOnce': [SKIP],
  'test-serialize/StartupSerializerTwice': [SKIP],
  'test-serialize/StartupSerializerOnceRunScript': [SKIP],
  'test-serialize/StartupSerializerTwiceRunScript': [SKIP],
}],  # 'arch == mipsel or arch == mips'

##############################################################################
['arch == mips', {
  # Too slow with TF.
  'test-api/ExternalArrays': [PASS, NO_VARIANTS],

  # TODO(mips-team): Currently fails on mips board.
  'test-parsing/TooManyArguments': [SKIP],
  'test-api/Threading5': [SKIP],
  'test-api/Threading6': [SKIP],
}],  # 'arch == mips'

##############################################################################
['arch == mips64el or arch == mips64', {
  'test-cpu-profiler/CollectDeoptEvents': [PASS, FAIL],

  # BUG(v8:3154).
  'test-heap/ReleaseOverReservedPages': [PASS, FAIL],

  # TODO(mips-team): Improve code-size on large RegExp's.
  'test-heap/TestSizeOfRegExpCode':  [SKIP],

  # BUG(1075): Unresolved crashes on MIPS also.
  'test-serialize/StartupSerializerOnce': [SKIP],
  'test-serialize/StartupSerializerTwice': [SKIP],
  'test-serialize/StartupSerializerOnceRunScript': [SKIP],
  'test-serialize/StartupSerializerTwiceRunScript': [SKIP],
}],  # 'arch == mips64el or arch == mips64'

##############################################################################
['arch == x87', {
  'test-run-machops/RunFloat64InsertLowWord32': [SKIP],
  'test-run-native-calls/MixedParams_0': [SKIP],
  'test-run-native-calls/MixedParams_1': [SKIP],
  'test-run-native-calls/MixedParams_2': [SKIP],
  'test-run-native-calls/MixedParams_3': [SKIP],
  'test-run-machops/RunFloat64MulAndFloat64Add1': [SKIP],
  'test-run-machops/RunFloat64MulAndFloat64Add2': [SKIP],
  'test-run-machops/RunFloat64MulAndFloat64Sub1': [SKIP],
  'test-run-machops/RunFloat64MulAndFloat64Sub2': [SKIP],
  'test-run-machops/RunFloat64Sin': [SKIP],
  'test-run-machops/RunFloat64Cos': [SKIP],
  'test-run-machops/RunFloat64Expm1': [SKIP],
  'test-run-machops/RunFloat64Tan': [SKIP],
  'test-cpu-profiler/Inlining': [SKIP],
  'test-gap-resolver/FuzzResolver': [SKIP],
  'test-run-wasm/RunWasmCompiled_MultiReturnSelect_f32': [SKIP],
  'test-run-wasm/RunWasmCompiled_MultiReturnSelect_f64': [SKIP],
}],  # 'arch == x87'

##############################################################################
['arch == android_arm or arch == android_ia32', {

  # Tests crash as there is no /tmp directory in Android.
  'test-log/LogAccessorCallbacks': [SKIP],
  'test-log/LogCallbacks': [SKIP],
  'test-log/ProfLazyMode': [SKIP],
}],  # 'arch == android_arm or arch == android_ia32'

##############################################################################
['system == aix and arch == ppc64', {

  # BUG 2857
  'test-log/EquivalenceOfLoggingAndTraversal' : [SKIP],

}],  # 'system == aix and arch == ppc64'

##############################################################################
['system == aix or (arch == ppc64 and byteorder == big)', {

  # TODO(ppc): Fix for platforms with function desciptors.
  'test-run-machops/RunComputedCodeObject' : [SKIP],
  'test-run-wasm-module/Run_WasmModule_Return114' : [SKIP],
  'test-run-wasm-module/Run_WasmModule_CallAdd' : [SKIP],
  'test-run-wasm-module/Run_WasmModule_CallMain_recursive' : [SKIP],

}],  # 'system == aix or (arch == ppc64 and byteorder == big)'

##############################################################################
['arch == ppc and simulator_run == True or arch == ppc64 and simulator_run == True', {

  # Pass but take too long with the simulator.
  'test-api/Threading*': [PASS, SLOW],
  'test-api/ExternalArrays': [PASS, SLOW],

}],  # 'arch == ppc64 and simulator_run == True'

##############################################################################
['variant == turbofan_opt', {
  # BUG(v8:5457)
  'test-api/SetJitCodeEventHandler': [PASS, ['no_snap', SKIP]],
}],  # variant == turbofan_opt

##############################################################################
['variant == turbofan or variant == ignition_turbofan', {
  # BUG(4751). Flaky with Ignition.
  'test-cpu-profiler/JsNativeJsSample': [SKIP],

  # TODO(vogelheim,5548): Turbofan does support cached accessors.
  'test-api-accessors/CachedAccessorCrankshaft': [FAIL],
}],  # variant == turbofan or variant == ignition_turbofan

##############################################################################
['variant == asm_wasm', {
  '*': [SKIP],
}],  # variant == asm_wasm

##############################################################################
['variant == wasm_traps', {
  'test-accessors/*': [SKIP],
  'test-api-interceptors/*': [SKIP],
  'test-api/*': [SKIP],
  'test-bignum-dtoa/*': [SKIP],
  'test-cpu-profiler/*': [SKIP],
  'test-debug/*': [SKIP],
  'test-global-handles/*': [SKIP],
  'test-heap-profiler/*': [SKIP],
  'test-heap/*': [SKIP],
  'test-inobject-slack-tracking/*': [SKIP],
  'test-lockers/*': [SKIP],
  'test-run-machops/*': [SKIP],
  'test-serialize/*': [SKIP],
  'test-strings/*': [SKIP],
  'test-field-type-tracking/*': [SKIP],
  'test-parsing/*': [SKIP],
  'test-page-promotion/*': [SKIP],
  'test-decls/*': [SKIP],
  'test-log/*': [SKIP],
  'test-gap-resolver/*': [SKIP],
  'test-dtoa/*': [SKIP],
}],  # variant == wasm_traps

]
