13aa99676SStefan Eßer#! /bin/sh 23aa99676SStefan Eßer# 33aa99676SStefan Eßer# SPDX-License-Identifier: BSD-2-Clause 43aa99676SStefan Eßer# 510328f8bSStefan Eßer# Copyright (c) 2018-2021 Gavin D. Howard and contributors. 63aa99676SStefan Eßer# 73aa99676SStefan Eßer# Redistribution and use in source and binary forms, with or without 83aa99676SStefan Eßer# modification, are permitted provided that the following conditions are met: 93aa99676SStefan Eßer# 103aa99676SStefan Eßer# * Redistributions of source code must retain the above copyright notice, this 113aa99676SStefan Eßer# list of conditions and the following disclaimer. 123aa99676SStefan Eßer# 133aa99676SStefan Eßer# * Redistributions in binary form must reproduce the above copyright notice, 143aa99676SStefan Eßer# this list of conditions and the following disclaimer in the documentation 153aa99676SStefan Eßer# and/or other materials provided with the distribution. 163aa99676SStefan Eßer# 173aa99676SStefan Eßer# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 183aa99676SStefan Eßer# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 193aa99676SStefan Eßer# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 203aa99676SStefan Eßer# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 213aa99676SStefan Eßer# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 223aa99676SStefan Eßer# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 233aa99676SStefan Eßer# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 243aa99676SStefan Eßer# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 253aa99676SStefan Eßer# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 263aa99676SStefan Eßer# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 273aa99676SStefan Eßer# POSSIBILITY OF SUCH DAMAGE. 283aa99676SStefan Eßer# 293aa99676SStefan Eßer 303aa99676SStefan Eßerset -e 313aa99676SStefan Eßer 323aa99676SStefan Eßerscript="$0" 333aa99676SStefan Eßer 343aa99676SStefan Eßertestdir=$(dirname "${script}") 353aa99676SStefan Eßer 36*44d4804dSStefan Eßer# Command-line processing. 373aa99676SStefan Eßerif [ "$#" -eq 0 ]; then 383aa99676SStefan Eßer printf 'usage: %s dir [run_extra_tests] [run_stack_tests] [generate_tests] [time_tests] [exec args...]\n' "$script" 393aa99676SStefan Eßer exit 1 403aa99676SStefan Eßerelse 413aa99676SStefan Eßer d="$1" 423aa99676SStefan Eßer shift 433aa99676SStefan Eßerfi 443aa99676SStefan Eßer 453aa99676SStefan Eßerif [ "$#" -gt 0 ]; then 463aa99676SStefan Eßer run_extra_tests="$1" 473aa99676SStefan Eßer shift 483aa99676SStefan Eßerelse 493aa99676SStefan Eßer run_extra_tests=1 503aa99676SStefan Eßerfi 513aa99676SStefan Eßer 523aa99676SStefan Eßerif [ "$#" -gt 0 ]; then 533aa99676SStefan Eßer run_stack_tests="$1" 543aa99676SStefan Eßer shift 553aa99676SStefan Eßerelse 563aa99676SStefan Eßer run_stack_tests=1 573aa99676SStefan Eßerfi 583aa99676SStefan Eßer 593aa99676SStefan Eßerif [ "$#" -gt 0 ]; then 603aa99676SStefan Eßer generate="$1" 613aa99676SStefan Eßer shift 623aa99676SStefan Eßerelse 633aa99676SStefan Eßer generate=1 643aa99676SStefan Eßerfi 653aa99676SStefan Eßer 663aa99676SStefan Eßerif [ "$#" -gt 0 ]; then 673aa99676SStefan Eßer time_tests="$1" 683aa99676SStefan Eßer shift 693aa99676SStefan Eßerelse 703aa99676SStefan Eßer time_tests=0 713aa99676SStefan Eßerfi 723aa99676SStefan Eßer 733aa99676SStefan Eßerif [ "$#" -gt 0 ]; then 743aa99676SStefan Eßer exe="$1" 753aa99676SStefan Eßer shift 763aa99676SStefan Eßerelse 773aa99676SStefan Eßer exe="$testdir/../bin/$d" 783aa99676SStefan Eßerfi 793aa99676SStefan Eßer 803aa99676SStefan Eßerscriptdir="$testdir/$d/scripts" 813aa99676SStefan Eßer 8210328f8bSStefan Eßerscripts=$(cat "$scriptdir/all.txt") 8310328f8bSStefan Eßer 84*44d4804dSStefan Eßer# Run each script test individually. 8510328f8bSStefan Eßerfor s in $scripts; do 863aa99676SStefan Eßer 873aa99676SStefan Eßer f=$(basename "$s") 8810328f8bSStefan Eßer sh "$testdir/script.sh" "$d" "$f" "$run_extra_tests" "$run_stack_tests" \ 8910328f8bSStefan Eßer "$generate" "$time_tests" "$exe" "$@" 903aa99676SStefan Eßer 913aa99676SStefan Eßerdone 92