# Copyright (C) 2016-2017 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1.  Redistributions of source code must retain the above copyright
#     notice, this list of conditions and the following disclaimer. 
# 2.  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. 
#
# THIS SOFTWARE IS PROVIDED BY APPLE AND ITS 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 APPLE OR ITS 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.

- path: wasm/stress
  cmd: runWebAssemblySuite unless parseRunCommands
- path: wasm/wast-tests/
  cmd: runWebAssemblyWithHarness
- path: wasm/js-api/
  cmd: runWebAssemblySuite unless parseRunCommands
- path: wasm/noJIT/
  cmd: runNoJIT unless parseRunCommands
- path: wasm/function-tests
  cmd: runWebAssemblySuite unless parseRunCommands
- path: wasm/references
  cmd: runWebAssemblySuite unless parseRunCommands
- path: wasm/references-spec-tests
  cmd: runWebAssemblySuite unless parseRunCommands
- path: wasm/fuzz
  cmd: runWebAssemblySuite unless parseRunCommands
- path: wasm/lowExecutableMemory
  cmd: runWebAssemblyLowExecutableMemory unless parseRunCommands
- path: wasm/regress/
  cmd: runWebAssemblySuite unless parseRunCommands
- path: wasm/modules/
  cmd: runWebAssembly unless parseRunCommands
- path: wasm/self-test/
  cmd: runWebAssemblySuite unless parseRunCommands

- path: wasm/spec-tests/address.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/align.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/binary.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/block.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/br.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/br_if.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/br_table.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/break-drop.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/call.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/call_indirect.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/comments.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/const.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/conversions.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/custom_section.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/endianness.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/exports.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/f32.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/f32_bitwise.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/f32_cmp.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/f64.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/f64_bitwise.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/f64_cmp.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/fac.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/float_exprs.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/float_literals.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/float_memory.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/float_misc.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/forward.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/func.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/func_ptrs.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/get_local.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/globals.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/i32.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/i64.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/if.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/imports.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/inline-module.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/int_exprs.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/int_literals.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/jsapi.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/labels.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/left-to-right.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/linking.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/loop.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/memory.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/memory_redundancy.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/memory_trap.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/names.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/nop.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/resizing.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/return.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/select.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/set_local.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/skip-stack-guard-page.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/stack.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/start.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/store_retval.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/switch.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/tee_local.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/token.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/traps.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/type.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/typecheck.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/unreachable.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/unreached-invalid.wast.js
  cmd: runWebAssemblySpecTest :skip # https://bugs.webkit.org/show_bug.cgi?id=173279
- path: wasm/spec-tests/unwind.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/utf8-custom-section-id.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/utf8-import-field.wast.js
  cmd: runWebAssemblySpecTest :normal
- path: wasm/spec-tests/utf8-import-module.wast.js
  cmd: runWebAssemblySpecTest :normal

- path: wasm/modules/run-from-wasm.wasm
  cmd: runWebAssembly

