62a99405cf
From-SVN: r35479
179 lines
3.2 KiB
Smarty
179 lines
3.2 KiB
Smarty
[= autogen template sh=check.sh =]
|
|
[=
|
|
#
|
|
# This file contanes the shell template to run tests on the fixes
|
|
#
|
|
=]#!/bin/sh
|
|
|
|
set -e
|
|
TESTDIR=tests
|
|
TESTBASE=`cd $1;pwd`
|
|
|
|
[ -d ${TESTDIR} ] || mkdir ${TESTDIR}
|
|
cd ${TESTDIR}
|
|
TESTDIR=`pwd`
|
|
|
|
TARGET_MACHINE='*'
|
|
DESTDIR=`pwd`/res
|
|
SRCDIR=`pwd`/inc
|
|
FIND_BASE='.'
|
|
VERBOSE=1
|
|
INPUT=`pwd`
|
|
ORIGDIR=${INPUT}
|
|
|
|
export TARGET_MACHINE DESTDIR SRCDIR FIND_BASE VERBOSE INPUT ORIGDIR
|
|
|
|
rm -rf ${DESTDIR} ${SRCDIR}
|
|
mkdir ${DESTDIR} ${SRCDIR}
|
|
|
|
( cd ${SRCDIR}
|
|
set +e
|
|
for f in [=
|
|
|
|
_EVAL fix.files _stack _join "echo `
|
|
|
|
for f in %s
|
|
do case $f in
|
|
*/* ) echo $f | sed 's;/[^/]*$;;' ;;
|
|
esac
|
|
done | sort -u
|
|
|
|
` " _printf _shell =]
|
|
do
|
|
mkdir $f || mkdir -p $f
|
|
done ) > /dev/null 2>&1
|
|
|
|
cd inc
|
|
[=
|
|
|
|
_FOR fix =][=
|
|
|
|
_IF test_text _count 1 > =]
|
|
#
|
|
# [=hackname=] has [=_EVAL test_text _count=] tests
|
|
#
|
|
sfile=[=
|
|
_IF files _exist =][=
|
|
files[0] =][=
|
|
_ELSE =]testing.h[=
|
|
_ENDIF =][=
|
|
_FOR test_text FROM 1 =]
|
|
dfile=`dirname $sfile`/[=hackname "#_A-Z" "#-a-z" _tr=]-[=_EVAL _index=].h
|
|
cat >> $sfile <<_HACK_EOF_
|
|
|
|
|
|
#if defined( [=hackname _up=]_CHECK_[=_EVAL _index=] )
|
|
[=test_text=]
|
|
#endif /* [=hackname _up=]_CHECK_[=_EVAL _index=] */
|
|
_HACK_EOF_
|
|
echo $sfile | ../../fixincl
|
|
mv -f $sfile $dfile
|
|
[ -f ${DESTDIR}/$sfile ] && mv ${DESTDIR}/$sfile ${DESTDIR}/$dfile[=
|
|
/test_text =][=
|
|
_ENDIF =][=
|
|
|
|
/fix
|
|
|
|
=][=
|
|
|
|
_FOR fix =][=
|
|
|
|
_IF test_text _exist ! =][=
|
|
_IF replace _exist ! =]
|
|
echo No test for [=hackname=] in inc/[=
|
|
_IF files _exist =][=
|
|
files[0] =][=
|
|
_ELSE =]testing.h[=
|
|
_ENDIF =][=
|
|
_ENDIF =][=
|
|
_ELSE =]
|
|
cat >> [=
|
|
_IF files _exist =][=
|
|
files[0] =][=
|
|
_ELSE =]testing.h[=
|
|
_ENDIF =] <<_HACK_EOF_
|
|
|
|
|
|
#if defined( [=hackname _up=]_CHECK )
|
|
[=test_text=]
|
|
#endif /* [=hackname _up=]_CHECK */
|
|
_HACK_EOF_
|
|
[=_ENDIF =][=
|
|
|
|
/fix
|
|
|
|
=]
|
|
|
|
find . -type f | sed 's;\./;;' | sort | ../../fixincl
|
|
cd ${DESTDIR}
|
|
|
|
exitok=true
|
|
|
|
find * -type f -print > ${TESTDIR}/LIST
|
|
|
|
# Special hack for sys/types.h: the #define-d types for size_t,
|
|
# ptrdiff_t and wchar_t are different for each port. Therefore,
|
|
# strip off the defined-to type so that the test results are the
|
|
# same for all platforms.
|
|
#
|
|
sed 's/\(#define __[A-Z_]*_TYPE__\).*/\1/' sys/types.h > XX
|
|
mv -f XX sys/types.h
|
|
|
|
# The following subshell weirdness is for saving an exit
|
|
# status from within a while loop that reads input. If you can
|
|
# think of a cleaner way, suggest away, please...
|
|
#
|
|
exitok=`
|
|
exec < ${TESTDIR}/LIST
|
|
while read f
|
|
do
|
|
if [ ! -f ${TESTBASE}/$f ]
|
|
then
|
|
echo "Newly fixed header: $f" >&2
|
|
exitok=false
|
|
|
|
elif cmp $f ${TESTBASE}/$f >&2
|
|
then
|
|
:
|
|
|
|
else
|
|
diff -c $f ${TESTBASE}/$f >&2 || :
|
|
exitok=false
|
|
fi
|
|
done
|
|
echo $exitok`
|
|
|
|
cd $TESTBASE
|
|
|
|
find * -type f -print | \
|
|
fgrep -v 'CVS/' > ${TESTDIR}/LIST
|
|
|
|
exitok=`
|
|
exec < ${TESTDIR}/LIST
|
|
while read f
|
|
do
|
|
if [ -s $f ] && [ ! -f ${DESTDIR}/$f ]
|
|
then
|
|
echo "Missing header fix: $f" >&2
|
|
exitok=false
|
|
fi
|
|
done
|
|
echo $exitok`
|
|
|
|
echo
|
|
if $exitok
|
|
then
|
|
cd ${TESTDIR}
|
|
rm -rf inc res LIST
|
|
cd ..
|
|
rmdir ${TESTDIR} > /dev/null 2>&1 || :
|
|
echo All fixinclude tests pass >&2
|
|
else
|
|
echo There were fixinclude test FAILURES >&2
|
|
fi
|
|
$exitok[=
|
|
|
|
_eval _outfile "chmod +x %s" _printf _shell
|
|
|
|
=]
|