# 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],
  'test-serialize/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],

  # This tests API threading, no point in running several variants.
  'test-api/Threading*': [PASS, NO_VARIANTS],

  # 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(v8:4358). Hangs flakily.
  'test-debug/ProcessDebugMessagesThreaded': [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],

  ##############################################################################
  # TurboFan compiler failures.

  # Some tests are just too slow to run for now.
  'test-heap/IncrementalMarkingStepMakesBigProgressWithLargeObjects': [PASS, NO_VARIANTS],
  'test-heap-profiler/ManyLocalsInSharedContext': [PASS, NO_VARIANTS],
  'test-serialize/CodeSerializerLargeCodeObject': [PASS, NO_VARIANTS],
  'test-debug/ThreadedDebugging': [PASS, NO_VARIANTS],
  # BUG(3742).
  'test-mark-compact/MarkCompactCollector': [PASS, ['arch==arm', NO_VARIANTS]],

  # TODO(bmeurer): TurboFan embeds strong references to all kinds of objects
  # via deoptimization data (Crankshaft also does this, but lack proper test
  # coverage).
  'test-heap/ObjectsInOptimizedCodeAreWeak': [PASS, NO_VARIANTS],

  # TurboFan cpu profiler result is different.
  'test-cpu-profiler/DeoptAtFirstLevelInlinedSource': [PASS, NO_VARIANTS],
  'test-cpu-profiler/DeoptAtSecondLevelInlinedSource': [PASS, NO_VARIANTS],

  ############################################################################
  # Slow tests.
  'test-api/Threading1': [PASS, ['mode == debug', SLOW]],
  'test-api/Threading2': [PASS, ['mode == debug', SLOW]],
  'test-api/Threading3': [PASS, ['mode == debug', SLOW]],
  'test-api/Threading4': [PASS, ['mode == debug', SLOW]],
  'test-debug/CallFunctionInDebugger': [PASS, ['mode == debug', SLOW]],
  'test-strings/StringOOM*': [PASS, ['mode == debug', SKIP]],
  'test-serialize/CustomSnapshotDataBlobImmortalImmovableRoots': [PASS, ['mode == debug', SKIP]],

  ############################################################################
  # Ignition

  # TODO(rmcilroy,4680): Related to lack of code flushing. Check failed: !function->shared()->is_compiled() || function->IsOptimized().
  'test-heap/TestCodeFlushingPreAged': [PASS, NO_IGNITION],
  'test-heap/TestCodeFlushingIncrementalScavenge': [PASS, NO_IGNITION],
  'test-heap/TestCodeFlushing': [PASS, NO_IGNITION],
  'test-heap/TestCodeFlushingIncremental': [PASS, NO_IGNITION],
  'test-heap/TestCodeFlushingIncrementalAbort': [PASS, ['mode == debug or dcheck_always_on == True', NO_IGNITION]],

  # TODO(rmcilroy,4680): Fails to find the correct function name for the
  # anonymous function. Fails without ignition but with --no-lazy also, so seems
  # to be an issue when eagerly parsing.
  'test-func-name-inference/ReturnAnonymousFunction': [PASS, NO_IGNITION],

  # TODO(mythria,4780): Related to type feedback support for Array function.
  'test-feedback-vector/VectorCallFeedbackForArray': [PASS, NO_IGNITION],

  # TODO(mythria,4680): Lack of code-ageing in interpreter.
  'test-heap/Regress169209': [PASS, NO_IGNITION],

  # TODO(mythria,4680): Lack of code-ageing and/or lack of compilation cache
  # in interpreter.
  'test-heap/CompilationCacheCachingBehavior': [PASS, NO_IGNITION],

  # TODO(mstarzinger,4680): Fails due to the turbo-asm pipeline only being taken
  # in compiler.cc GetLazyCode for uncompiled code, and no similar path for eager
  # code.
  'test-api/TurboAsmDisablesNeuter': [PASS, NO_IGNITION],

  # TODO(mvstanton,4900): CHECK(!g_function->is_compiled());
  'test-heap/TestUseOfIncrementalBarrierOnCompileLazy': [PASS, NO_IGNITION],

  # BUG(rmcilroy,4680): Function is optimized without type feedback and so immediately deopts again, causing check failure in the test.
  'test-heap/ResetSharedFunctionInfoCountersDuringIncrementalMarking': [PASS, NO_IGNITION],
  'test-heap/ResetSharedFunctionInfoCountersDuringMarkSweep': [PASS, NO_IGNITION],

  # BUG(4680): Missing type feedback makes optimistic optimizations fail.
  'test-cpu-profiler/CollectDeoptEvents': [PASS, NO_IGNITION],
  'test-cpu-profiler/DeoptUntrackedFunction': [PASS, NO_IGNITION],

  # BUG(4680): Ignition doesn't support allocation sites currently.
  'test-heap/EnsureAllocationSiteDependentCodesProcessed': [PASS, NO_IGNITION],
  'test-heap/OptimizedPretenuringAllocationFolding': [PASS, NO_IGNITION],
  'test-heap/OptimizedPretenuringdoubleArrayLiterals': [PASS, NO_IGNITION],
  'test-heap/OptimizedPretenuringDoubleArrayProperties': [PASS, NO_IGNITION],
  'test-heap/OptimizedPretenuringMixedInObjectProperties': [PASS, NO_IGNITION],
  'test-heap/OptimizedPretenuringNestedDoubleLiterals': [PASS, NO_IGNITION],
  'test-heap/OptimizedPretenuringNestedMixedArrayLiterals': [PASS, NO_IGNITION],
  'test-heap/OptimizedPretenuringNestedObjectLiterals': [PASS, NO_IGNITION],
  'test-heap/OptimizedPretenuringObjectArrayLiterals': [PASS, NO_IGNITION],

  # BUG(4751). Flaky with ignition.
  'test-cpu-profiler/JsNativeJsSample': [PASS, NO_IGNITION],
}],  # 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],
  'test-api/Threading1': [SKIP],
  'test-api/Threading2': [SKIP],
}],  # '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],
}],  # 'asan == True'

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

  # Slow tests.
  'test-api/Threading1': [PASS, SLOW],
  'test-api/Threading2': [PASS, SLOW],
  'test-api/Threading3': [PASS, SLOW],
  'test-api/Threading4': [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],
}],  # '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/Threading1': [PASS, SLOW],
  'test-api/Threading2': [PASS, SLOW],
  'test-api/Threading3': [PASS, SLOW],
  'test-api/Threading4': [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/Threading3': [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],
}],  # '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/Threading1': [PASS, SLOW],
  'test-api/Threading2': [PASS, SLOW],
  'test-api/ExternalArrays': [PASS, SLOW],

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

##############################################################################
['ignition or ignition_turbofan', {
  # TODO(rmcilroy,4680): Related to lack of code flushing. Check failed: !function->shared()->is_compiled() || function->IsOptimized().
  'test-heap/TestCodeFlushingPreAged': [FAIL],
  'test-heap/TestCodeFlushingIncrementalScavenge': [FAIL],
  'test-heap/TestCodeFlushing': [FAIL],
  'test-heap/TestCodeFlushingIncremental': [FAIL],
  'test-heap/TestCodeFlushingIncrementalAbort': [PASS, ['mode == debug or dcheck_always_on == True', FAIL]],

  # TODO(rmcilroy,4680): Fails to find the correct function name for the
  # anonymous function. Fails without ignition but with --no-lazy also, so seems
  # to be an issue when eagerly parsing.
  'test-func-name-inference/ReturnAnonymousFunction': [FAIL],

  # TODO(mythria,4780): Related to type feedback support for Array function.
  'test-feedback-vector/VectorCallFeedbackForArray': [FAIL],

  # TODO(mythria,4680): Lack of code-ageing in interpreter.
  'test-heap/Regress169209': [FAIL],

  # TODO(mythria,4680): Lack of code-ageing and/or lack of compilation cache
  # in interpreter.
  'test-heap/CompilationCacheCachingBehavior': [FAIL],

  # TODO(mstarzinger,4680): Fails due to the turbo-asm pipeline only being taken
  # in compiler.cc GetLazyCode for uncompiled code, and no similar path for eager
  # code.
  'test-api/TurboAsmDisablesNeuter': [FAIL],

  # TODO(mvstanton,4900): CHECK(!g_function->is_compiled());
  'test-heap/TestUseOfIncrementalBarrierOnCompileLazy': [FAIL],

  # BUG(4680): Missing type feedback makes optimistic optimizations fail.
  'test-cpu-profiler/CollectDeoptEvents': [FAIL],
  'test-cpu-profiler/DeoptUntrackedFunction': [FAIL],

  # BUG(4680): Ignition doesn't support allocation sites currently.
  'test-heap/EnsureAllocationSiteDependentCodesProcessed': [FAIL],
  'test-heap/OptimizedPretenuringAllocationFolding': [FAIL],
  'test-heap/OptimizedPretenuringdoubleArrayLiterals': [FAIL],
  'test-heap/OptimizedPretenuringDoubleArrayProperties': [FAIL],
  'test-heap/OptimizedPretenuringMixedInObjectProperties': [FAIL],
  'test-heap/OptimizedPretenuringNestedDoubleLiterals': [FAIL],
  'test-heap/OptimizedPretenuringNestedMixedArrayLiterals': [FAIL],
  'test-heap/OptimizedPretenuringNestedObjectLiterals': [FAIL],
  'test-heap/OptimizedPretenuringObjectArrayLiterals': [FAIL],

  # BUG(4751). Flaky with Ignition.
  'test-cpu-profiler/JsNativeJsSample': [SKIP],
}],  # ignition or ignition_turbofan

]
