summaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2021-09-19 19:29:01 +0200
committerJo-Philipp Wich <jo@mein.io>2021-09-19 19:37:27 +0200
commit98c4147ec8c5ec077994d6d7ea5823a9adbad441 (patch)
tree774d3b20939cb55d698ed4ce9ddf2313ea62e0ec /tests
parent0ea5ee8d78454191eb32251fce1b77b1a4c41c77 (diff)
tests: support specifying cmdline args in testcase files
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Diffstat (limited to 'tests')
-rwxr-xr-xtests/custom/run_tests.sh20
1 files changed, 15 insertions, 5 deletions
diff --git a/tests/custom/run_tests.sh b/tests/custom/run_tests.sh
index db64021..6869776 100755
--- a/tests/custom/run_tests.sh
+++ b/tests/custom/run_tests.sh
@@ -15,6 +15,12 @@ extract_sections() {
while IFS= read -r line; do
case "$line" in
+ "-- Args --")
+ tag="args"
+ count=$((count + 1))
+ outfile=$(printf "%s/%03d.args" "$dir" $count)
+ printf "" > "$outfile"
+ ;;
"-- Testcase --")
tag="test"
count=$((count + 1))
@@ -55,11 +61,12 @@ run_testcase() {
local out=$4
local err=$5
local code=$6
+ local args=$7
local fail=0
(
cd "$topdir"
- $ucode_bin -e '{ "REQUIRE_SEARCH_PATH": [ "'"$ucode_lib"'/*.so" ] }' -i - <"$in" >"$dir/res.out" 2>"$dir/res.err"
+ $ucode_bin $args -e '{ "REQUIRE_SEARCH_PATH": [ "'"$ucode_lib"'/*.so" ] }' -i - <"$in" >"$dir/res.out" 2>"$dir/res.err"
)
touch "$dir/empty"
@@ -95,7 +102,7 @@ run_testcase() {
run_test() {
local file=$1
local name=${file##*/}
- local res ecode eout eerr ein tests
+ local res ecode eout eerr ein eargs tests
local testcase_first=0 failed=0 count=0
printf "%s %s " "$name" "${line:${#name}}"
@@ -115,31 +122,34 @@ run_test() {
if [ $testcase_first = 1 ]; then
# Flush previous test
if [ -n "$ein" ]; then
- run_testcase $count "/tmp/test.$$" "$ein" "$eout" "$eerr" "$ecode" || failed=$((failed + 1))
+ run_testcase $count "/tmp/test.$$" "$ein" "$eout" "$eerr" "$ecode" "$eargs" || failed=$((failed + 1))
eout=""
eerr=""
ecode=""
+ eargs=""
fi
ein=$res
else
- run_testcase $count "/tmp/test.$$" "$res" "$eout" "$eerr" "$ecode" || failed=$((failed + 1))
+ run_testcase $count "/tmp/test.$$" "$res" "$eout" "$eerr" "$ecode" "$eargs" || failed=$((failed + 1))
eout=""
eerr=""
ecode=""
+ eargs=""
fi
;;
*.stdout) eout=$res ;;
*.stderr) eerr=$res ;;
*.exitcode) ecode=$res ;;
+ *.args) eargs=$(cat "$res") ;;
esac
done
# Flush last test
if [ $testcase_first = 1 ] && [ -n "$eout$eerr$ecode" ]; then
- run_testcase $count "/tmp/test.$$" "$ein" "$eout" "$eerr" "$ecode" || failed=$((failed + 1))
+ run_testcase $count "/tmp/test.$$" "$ein" "$eout" "$eerr" "$ecode" "$eargs" || failed=$((failed + 1))
fi
rm -r "/tmp/test.$$"