mittos64/ttest

44 lines
1.1 KiB
Bash
Executable File

#!/bin/sh
dirs=src/kernel
main()
{
local failures=0
for dir in $dirs; do
local files=`find $dir -name "*.tt"`
for suite in $files; do
cp $suite $suite.c
local tests=`sed -n -e 's/^\s*TEST(\([^,]*\)).*$/ttt_\1/p' $suite`
echo "tt_test tt_tests[] = {" >> $suite.c
for t in $tests; do echo "$t," >> $suite.c; done
echo "0};" >> $suite.c
echo "char *tt_test_names[] = {" >> $suite.c
for t in $tests; do echo "\"$t\"," >> $suite.c; done
echo "\"\"};" >> $suite.c
test_exec=`mktemp /tmp/tmp.XXXXXX`
compiler_output=`cc $suite.c -o $test_exec -ggdb -I $dir/include -DTTEST 2>&1`
compiler_status=$?
echo -e "\x1b[35m$suite\x1b[0m"
if [[ "$compiler_status" -eq "0" ]]; then
$test_exec $suite || failures=$(($failures + 1))
else
failures=$(($failures + 1))
echo -e "\x1b[31mCOMPILATION OF SUITE FAILED\x1b[0m"
echo "$compiler_output" | sed -e 's/\.tt\.c:/\.tt:/'
fi
rm -f $suite.c $test_exec
done
done
exit $failures
}
main "$@"