# Copyright 2013 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, {
  # Flaky tests.
  # BUG(v8:2989).
  'dfg-inline-arguments-become-double': [PASS, FAIL],
  'dfg-inline-arguments-become-int32': [PASS, FAIL],
  'dfg-inline-arguments-reset': [PASS, FAIL],
  'dfg-inline-arguments-reset-changetype': [PASS, FAIL],
  # Irregexp interpreter overflows stack. We should just not crash.
  'fast/js/regexp-stack-overflow': [PASS, FAIL],

  # This test tries to sort very large array. Array#sort pre-processing does
  # not support huge sparse Arrays, so this test runs a very long time.
  # https://crbug.com/v8/8714
  'array-sort-small-sparse-array-with-large-length': [SKIP],

  # Slow tests.
  'dfg-double-vote-fuzz': [PASS, SLOW],
  'dfg-int-overflow-in-loop': [PASS, SLOW],
}],  # ALWAYS
['system == windows and not is_clang', {
  # Exceeds call stack on windows after MSVS2017 switch.
  'fast/js/excessive-comma-usage': [SKIP],
  'run-json-stringify': [SKIP],
}],  # system == windows
['mode == debug', {
  # Too slow in debug mode.
  'dfg-int-overflow-in-loop': [SKIP],
  'dfg-double-vote-fuzz': [SKIP],
  'reentrant-caching': [SKIP],
  'sort-large-array': [SKIP],
  # Too slow with --enable-slow-asserts.
  'array-iterate-backwards': [SKIP],
}],  # 'mode == debug'
['simulator_run', {
  # Skip tests that timeout with turbofan.
  'array-iterate-backwards': [PASS, NO_VARIANTS],
  'function-apply-aliased': [SKIP],

  # Skip tests that are too slow for simulators.
  'dfg-int-overflow-in-loop': [SKIP],
}],  # 'simulator_run'
['mode == debug and simulator_run', {
  # Too slow on debug simulators.
  'dfg-inline-function-dot-caller': [SKIP],
}],  # 'mode == debug and simulator_run'
['dcheck_always_on == True and (arch == arm or arch == arm64)', {
  # Doesn't work with gcc 4.6 on arm or arm64 for some reason.
  'reentrant-caching': [SKIP],
}],  # 'dcheck_always_on == True and (arch == arm or arch == arm64)'
['arch == mips', {
  # Too slow for mips big-endian boards on bots (no FPU).
  'dfg-int-overflow-in-loop': [SKIP],
}], # 'arch == mips'
['arch == s390 or arch == s390x', {
  # Too slow.
  'dfg-int-overflow-in-loop': [SKIP],
}],  # 'arch == s390 or arch == s390x'

##############################################################################
['asan == True', {
  # Skip tests not suitable for ASAN.
  'fast/js/excessive-comma-usage': [SKIP],

  # BUG(v8:4499).
  'run-json-stringify': [SKIP],
}],  # 'asan == True'

##############################################################################
['isolates', {
  # BUG(v8:4499).
  '*': [SKIP],
}],  # 'isolates'

##############################################################################
['gc_stress == True', {
  # Tests taking too long
  'fast/js/excessive-comma-usage': [SKIP]
}],  # 'gc_stress == True'

['gc_stress == True and mode == debug', {
  # Skip tests that timeout.
}],  # 'gc_stress == True and mode == debug'

##############################################################################
['arch == arm64 and msan', {
  # Stack size too large with masm on Arm64.
  'fast/js/excessive-comma-usage': [SKIP],
}],  # arch == arm64 and msan

##############################################################################
['variant in [nooptimization, stress, stress_js_bg_compile_wasm_code_gc] and (arch == arm or arch == arm64) and simulator_run', {
  # Slow tests: https://crbug.com/v8/7783
  'dfg-double-vote-fuzz': [SKIP],
}],  # variant in [nooptimization, stress, stress_js_bg_compile_wasm_code_gc] and (arch == arm or arch == arm64) and simulator_run

##############################################################################
['gcov_coverage', {
  # Tests taking too long or getting too large call stacks.
  'fast/js/excessive-comma-usage': [SKIP],
  'run-json-stringify': [SKIP],
}],  # 'gcov_coverage'

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

##############################################################################
['no_i18n == True', {
  'fast/js/string-capitalization': [FAIL],
}],  # variant == no_wasm_traps

################################################################################
['variant == stress_snapshot', {
  '*': [SKIP],  # only relevant for mjsunit tests.
}],

]