diff options
author | mirabilos <tg@mirbsd.org> | 2015-05-24 19:21:54 +0200 |
---|---|---|
committer | Waldemar Brodkorb <wbx@uclibc-ng.org> | 2015-05-25 15:46:38 +0200 |
commit | ef28300bbc27306fca5bb1af155e94af32fc7fef (patch) | |
tree | 990e7d58ee17df4bd9c378d9658ff17563d16a96 /test/uclibcng-testrunner.sh | |
parent | 650380248eaad577445c88b7314307d3acd166fc (diff) |
implement experimental pure-sh testsuite runner and generation
Diffstat (limited to 'test/uclibcng-testrunner.sh')
-rw-r--r-- | test/uclibcng-testrunner.sh | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/test/uclibcng-testrunner.sh b/test/uclibcng-testrunner.sh new file mode 100644 index 000000000..943c95086 --- /dev/null +++ b/test/uclibcng-testrunner.sh @@ -0,0 +1,62 @@ +#!/bin/sh +#- +# Copyright (c) 2015 +# Thorsten "mirabilos" Glaser <tg@mirbsd.org> +# +# Provided that these terms and disclaimer and all copyright notices +# are retained or reproduced in an accompanying document, permission +# is granted to deal in this work without restriction, including un- +# limited rights to use, publicly perform, distribute, sell, modify, +# merge, give away, or sublicence. +# +# This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to +# the utmost extent permitted by applicable law, neither express nor +# implied; without malicious intent or gross negligence. In no event +# may a licensor, author or contributor be held liable for indirect, +# direct, other damage, loss, or other issues arising in any way out +# of dealing in the work, even if advised of the possibility of such +# damage or existence of a defect, except proven that it results out +# of said person's immediate fault when using the work as intended. +#- +# Testsuite runner + +die() { + echo >&2 E: "$*" + exit 1 +} + +test -s uclibcng-testrunner.in || die uclibcng-testrunner.in not found + +nfail=0 +npass=0 +while read expected_ret tst_src_name binary_name subdir cmd; do + printf '.... %s\r' "$binary_name" + (cd $subdir && eval "$cmd" >$binary_name.out 2>&1) </dev/null + ret=$? + test $ret = "$expected_ret" || { + echo "FAIL $binary_name got $ret expected $expected_ret" + nfail=`expr $nfail + 1` + sed 's/^/ /' <$subdir/$binary_name.out + continue + } + for x in $binary_name.out $test_src_name.out -; do + if test x"$x" = x"-"; then + echo "PASS $binary_name" + npass=`expr $npass + 1` + break + fi + test -e "$subdir/$x.good" || continue + if d=`diff -u "$subdir/$binary_name.out" "$subdir/$x.good"`; then + echo "PASS $binary_name" + npass=`expr $npass + 1` + else + echo "FAIL $binary_name expected output differs" + nfail=`expr $nfail + 1` + echo "$d" | sed 's/^/ /' + fi + break + done +done <uclibcng-testrunner.in +echo Total failed: $nfail +echo Total passed: $npass +test $nfail = 0 |