server-1.12/utils/generateEmptyCheck.sh

79 lines
1.9 KiB
Bash
Executable File

#!/bin/sh
##########################
# This script will generate and insert empty test in a check file by extracting public prototype in a .c file
# The generated empty check will replace check_empty in existing unit test. Pretty usefull script to lay the path
# to testing a .c file.
#
# BACKUP file first!!!! (This script may put a mess in destination file)
# go static first!!!!! (You should first try to make everything that can go static in file static first
#
# example invocation
# utils/generateEmptyCheck.sh common/object.c test/unit/common/check_object.c
#
FILENAME=$1
OUTPUT=$2
BASENAME=`basename $FILENAME`
TEMPNAME=`tempfile`
INTERNAL_METHODS=
methods=`cproto $FILENAME -I include/ -f 1 | sed -e 's/\([^ ]\{1,\} \)\{1,\}\**\([^ ]\{1,\}\)();/\2/' -e 's/\/\*.*\*\///'`
FULLPROTOS=`tempfile`
CHECK_CODE=`tempfile`
CHECK_CALL=`tempfile`
cproto $FILENAME -I include/ -f 3 > $FULLPROTOS
echo "/*" >> $CHECK_CODE
echo " * Things to check" >> $CHECK_CODE
for i in $methods
do
echo " * $i" >> $CHECK_CODE
done
echo " */" >> $CHECK_CODE
for i in $methods
do
PROTOTYPE=`grep -e "$i *(" $FULLPROTOS`
echo "/** This is the test to check the behaviour of the method" >> $CHECK_CODE
echo " * $PROTOTYPE" >> $CHECK_CODE
echo " */" >> $CHECK_CODE
echo "START_TEST (test_$i)" >> $CHECK_CODE
echo "{" >> $CHECK_CODE
echo " /*TESTME*/" >> $CHECK_CODE
echo "}" >> $CHECK_CODE
echo "END_TEST" >> $CHECK_CODE
echo >> $CHECK_CODE
echo >> $CHECK_CODE
echo " tcase_add_test(tc_core, test_$i);" >> $CHECK_CALL
done
sed -e "/^START_TEST (test_empty)$/ {
N
/\n{$/ {
N
/\n fail("'"'"test not yet developped"'"'");/ {
N
/\n{/ {
N
/END_TEST/ {
N
r $CHECK_CODE
d
}
}
}
}
} " -e "/^ tcase_add_test(tc_core, test_empty);/ {
r $CHECK_CALL
d
}" < $OUTPUT > $TEMPNAME
cp $TEMPNAME $OUTPUT
#cat $CHECK_CODE
#cat $CHECK_CALL
rm -f $FULLPROTO
rm -f $TEMPNAME
rm -f CHECK_CODE
rm -f CHECK_CALL