# 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],

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

]