mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
112 lines
3.8 KiB
Bash
112 lines
3.8 KiB
Bash
#!/bin/bash
|
|
export LC_ALL="C"
|
|
|
|
function check_valgrind_log () {
|
|
if [ "$VALGRIND" != "" ]; then
|
|
if [ -f $TEMPDIR/test.pid* ]; then
|
|
log=`ls $TEMPDIR/test.pid*`
|
|
if ! grep -q 'ERROR SUMMARY: 0 error' $log; then
|
|
echo "Fail in $NAME $1 checking detected by Valgrind"
|
|
echo "$log Valgrind log file moved to $TEMPDIR/badlogs"
|
|
mv $log $TEMPDIR/badlogs
|
|
exit 1
|
|
fi
|
|
if grep -q 'LEAK SUMMARY' $log; then
|
|
echo "Memory leak in $NAME $1 checking detected by Valgrind"
|
|
echo "$log Valgrind log file moved to $TEMPDIR/badlogs"
|
|
mv $log $TEMPDIR/badlogs
|
|
exit 1
|
|
fi
|
|
rm -f $log
|
|
fi
|
|
fi
|
|
}
|
|
|
|
TESTDIR=.
|
|
TEMPDIR=$TESTDIR/testSubDir
|
|
NAME="$1"
|
|
shift
|
|
|
|
if [ ! -d $TEMPDIR ]; then
|
|
mkdir $TEMPDIR
|
|
fi
|
|
|
|
shopt -s expand_aliases
|
|
|
|
alias hunspell='../libtool --mode=execute -dlopen ../src/hunspell/.libs/libhunspell*.la ../src/tools/hunspell'
|
|
alias analyze='../libtool --mode=execute -dlopen ../src/hunspell/.libs/libhunspell*.la ../src/tools/analyze'
|
|
|
|
if [ "$VALGRIND" != "" ]; then
|
|
rm -f $TEMPDIR/test.pid*
|
|
if [ ! -d $TEMPDIR/badlogs ]; then
|
|
mkdir $TEMPDIR/badlogs
|
|
fi
|
|
|
|
alias hunspell='../libtool --mode=execute -dlopen ../src/hunspell/.libs/libhunspell*.la valgrind --tool=$VALGRIND --leak-check=yes --show-reachable=yes --log-file=$TEMPDIR/test.pid ../src/tools/hunspell'
|
|
alias analyze='../libtool --mode=execute -dlopen ../src/hunspell/.libs/libhunspell*.la valgrind --tool=$VALGRIND --leak-check=yes --show-reachable=yes --log-file=$TEMPDIR/test.pid ../src/tools/analyze'
|
|
fi
|
|
|
|
# Tests good words
|
|
if test -f $TESTDIR/$NAME.good; then
|
|
hunspell -l $* -d $TESTDIR/$NAME <$TESTDIR/$NAME.good >$TEMPDIR/$NAME.good
|
|
if test -s $TEMPDIR/$NAME.good; then
|
|
echo "============================================="
|
|
echo "Fail in $NAME.good. Good words recognised as wrong:"
|
|
cat $TEMPDIR/$NAME.good
|
|
rm -f $TEMPDIR/$NAME.good
|
|
exit 1
|
|
fi
|
|
rm -f $TEMPDIR/$NAME.good
|
|
fi
|
|
|
|
check_valgrind_log "good words"
|
|
|
|
# Tests bad words
|
|
if test -f $TESTDIR/$NAME.wrong; then
|
|
hunspell -l $* -d $TESTDIR/$NAME <$TESTDIR/$NAME.wrong >$TEMPDIR/$NAME.wrong
|
|
tr -d ' ' <$TESTDIR/$NAME.wrong >$TEMPDIR/$NAME.wrong.detab
|
|
if ! cmp $TEMPDIR/$NAME.wrong $TEMPDIR/$NAME.wrong.detab >/dev/null; then
|
|
echo "============================================="
|
|
echo "Fail in $NAME.wrong. Bad words recognised as good:"
|
|
tr -d ' ' <$TESTDIR/$NAME.wrong >$TEMPDIR/$NAME.wrong.detab
|
|
diff $TEMPDIR/$NAME.wrong.detab $TEMPDIR/$NAME.wrong | grep '^<' | sed 's/^..//'
|
|
rm -f $TEMPDIR/$NAME.wrong $TEMPDIR/$NAME.wrong.detab
|
|
exit 1
|
|
fi
|
|
rm -f $TEMPDIR/$NAME.wrong $TEMPDIR/$NAME.wrong.detab
|
|
fi
|
|
|
|
check_valgrind_log "bad words"
|
|
|
|
# Tests morphological analysis
|
|
if test -f $TESTDIR/$NAME.morph; then
|
|
sed 's/ $//' $TESTDIR/$NAME.good >$TEMPDIR/$NAME.good
|
|
analyze $TESTDIR/$NAME.aff $TESTDIR/$NAME.dic $TEMPDIR/$NAME.good >$TEMPDIR/$NAME.morph
|
|
if ! cmp $TEMPDIR/$NAME.morph $TESTDIR/$NAME.morph >/dev/null; then
|
|
echo "============================================="
|
|
echo "Fail in $NAME.morph. Bad analysis?"
|
|
diff $TESTDIR/$NAME.morph $TEMPDIR/$NAME.morph | grep '^<' | sed 's/^..//'
|
|
rm -f $TEMPDIR/$NAME.morph
|
|
exit 1
|
|
fi
|
|
rm -f $TEMPDIR/$NAME.{morph,good}
|
|
fi
|
|
|
|
check_valgrind_log "morphological analysis"
|
|
|
|
# Tests suggestions
|
|
if test -f $TESTDIR/$NAME.sug; then
|
|
hunspell $* -a -d $TESTDIR/$NAME <$TESTDIR/$NAME.wrong | grep '^&' | \
|
|
sed 's/^[^:]*: //' >$TEMPDIR/$NAME.sug
|
|
if ! cmp $TEMPDIR/$NAME.sug $TESTDIR/$NAME.sug >/dev/null; then
|
|
echo "============================================="
|
|
echo "Fail in $NAME.sug. Bad suggestion?"
|
|
diff $TESTDIR/$NAME.sug $TEMPDIR/$NAME.sug
|
|
rm -f $TEMPDIR/$NAME.sug
|
|
exit 1
|
|
fi
|
|
rm -f $TEMPDIR/$NAME.sug
|
|
fi
|
|
|
|
check_valgrind_log "suggestion"
|