1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
#!/bin/sh
# vim: set ts=4:
set -eu
hr() {
local char=$1
local text=${2:+" $2 "}
local text_len=$(printf %s "$text" | wc -c)
local chars=$(yes "$char" | head -n $(((72 - $text_len) / 2)) | tr -d '\n')
printf '%s%s%s\n' "$chars" "$text" "$chars"
}
cd "$(dirname "$0")"
export ESH="${ESH_SHELL:-/bin/sh} ../esh"
passed=0
failed=0
for name in $(ls -1 test-* | sed 's/\.[a-z0-9]*$//' | uniq); do
test_script="$name.t"
[ -e "$test_script" ] || test_script='diff-test'
printf %-32s "$name" | tr ' ' '.'
rm -f "$name.err"
if TEST_NAME="$name" ./"$test_script" > "$name.err" 2> "$name.err2"; then
rm -f "$name".err*
printf ' OK\n'
passed=$(( passed + 1 ))
else
printf ' FAIL\n'
failed=$(( failed + 1 ))
fi
done
printf '\n'
for err_file in $(find * -name 'test-*.err'); do
name="${err_file%.err}"
hr '='
printf 'FAILED: %s\n' "$name"
hr '-' 'stdout'
cat "$err_file"
printf '\n'
hr '-' 'stderr'
cat "${err_file}2"
printf '\n'
hr '='
printf '\n'
done
if [ $failed -gt 0 ]; then
printf 'FAILED %d/%d\n' $failed $(( passed + failed ))
exit 1
else
printf 'PASSED %d/%d\n' $passed $passed
exit 0
fi
|