xref: /freebsd/contrib/bc/tests/scripts.sh (revision 44d4804d1945435745518cd09eb8ae6ab22ecef4)
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