OLD | NEW |
| (Empty) |
1 #!/bin/bash | |
2 export LC_ALL="C" | |
3 | |
4 function check_valgrind_log () { | |
5 if [ "$VALGRIND" != "" ]; then | |
6 if [ -f $TEMPDIR/test.pid* ]; then | |
7 log=`ls $TEMPDIR/test.pid*` | |
8 if ! grep -q 'ERROR SUMMARY: 0 error' $log; then | |
9 echo "Fail in $NAME $1 checking detected by Valgrind" | |
10 echo "$log Valgrind log file moved to $TEMPDIR/badlogs" | |
11 mv $log $TEMPDIR/badlogs | |
12 exit 1 | |
13 fi | |
14 if grep -q 'LEAK SUMMARY' $log; then | |
15 echo "Memory leak in $NAME $1 checking detected by Valgrind" | |
16 echo "$log Valgrind log file moved to $TEMPDIR/badlogs" | |
17 mv $log $TEMPDIR/badlogs | |
18 exit 1 | |
19 fi | |
20 rm -f $log | |
21 fi | |
22 fi | |
23 } | |
24 | |
25 TESTDIR=. | |
26 TEMPDIR=$TESTDIR/testSubDir | |
27 NAME="$1" | |
28 shift | |
29 | |
30 if [ ! -d $TEMPDIR ]; then | |
31 mkdir $TEMPDIR | |
32 fi | |
33 | |
34 shopt -s expand_aliases | |
35 | |
36 alias hunspell='../libtool --mode=execute -dlopen ../src/hunspell/.libs/libhunsp
ell*.la ../src/tools/hunspell' | |
37 alias analyze='../libtool --mode=execute -dlopen ../src/hunspell/.libs/libhunspe
ll*.la ../src/tools/analyze' | |
38 | |
39 if [ "$VALGRIND" != "" ]; then | |
40 rm -f $TEMPDIR/test.pid* | |
41 if [ ! -d $TEMPDIR/badlogs ]; then | |
42 mkdir $TEMPDIR/badlogs | |
43 fi | |
44 | |
45 alias hunspell='../libtool --mode=execute -dlopen ../src/hunspell/.libs/libhun
spell*.la valgrind --tool=$VALGRIND --leak-check=yes --show-reachable=yes --log-
file=$TEMPDIR/test.pid ../src/tools/hunspell' | |
46 alias analyze='../libtool --mode=execute -dlopen ../src/hunspell/.libs/libhuns
pell*.la valgrind --tool=$VALGRIND --leak-check=yes --show-reachable=yes --log-f
ile=$TEMPDIR/test.pid ../src/tools/analyze' | |
47 fi | |
48 | |
49 # Tests good words | |
50 if test -f $TESTDIR/$NAME.good; then | |
51 hunspell -l $* -d $TESTDIR/$NAME <$TESTDIR/$NAME.good >$TEMPDIR/$NAME.good | |
52 if test -s $TEMPDIR/$NAME.good; then | |
53 echo "=============================================" | |
54 echo "Fail in $NAME.good. Good words recognised as wrong:" | |
55 cat $TEMPDIR/$NAME.good | |
56 rm -f $TEMPDIR/$NAME.good | |
57 exit 1 | |
58 fi | |
59 rm -f $TEMPDIR/$NAME.good | |
60 fi | |
61 | |
62 check_valgrind_log "good words" | |
63 | |
64 # Tests bad words | |
65 if test -f $TESTDIR/$NAME.wrong; then | |
66 hunspell -l $* -d $TESTDIR/$NAME <$TESTDIR/$NAME.wrong >$TEMPDIR/$NAME.wrong | |
67 tr -d ' ' <$TESTDIR/$NAME.wrong >$TEMPDIR/$NAME.wrong.detab | |
68 if ! cmp $TEMPDIR/$NAME.wrong $TEMPDIR/$NAME.wrong.detab >/dev/null; then | |
69 echo "=============================================" | |
70 echo "Fail in $NAME.wrong. Bad words recognised as good:" | |
71 tr -d ' ' <$TESTDIR/$NAME.wrong >$TEMPDIR/$NAME.wrong.detab | |
72 diff $TEMPDIR/$NAME.wrong.detab $TEMPDIR/$NAME.wrong | grep '^<' | sed '
s/^..//' | |
73 rm -f $TEMPDIR/$NAME.wrong $TEMPDIR/$NAME.wrong.detab | |
74 exit 1 | |
75 fi | |
76 rm -f $TEMPDIR/$NAME.wrong $TEMPDIR/$NAME.wrong.detab | |
77 fi | |
78 | |
79 check_valgrind_log "bad words" | |
80 | |
81 # Tests morphological analysis | |
82 if test -f $TESTDIR/$NAME.morph; then | |
83 sed 's/ $//' $TESTDIR/$NAME.good >$TEMPDIR/$NAME.good | |
84 analyze $TESTDIR/$NAME.aff $TESTDIR/$NAME.dic $TEMPDIR/$NAME.good >$TEMPDIR/
$NAME.morph | |
85 if ! cmp $TEMPDIR/$NAME.morph $TESTDIR/$NAME.morph >/dev/null; then | |
86 echo "=============================================" | |
87 echo "Fail in $NAME.morph. Bad analysis?" | |
88 diff $TESTDIR/$NAME.morph $TEMPDIR/$NAME.morph | grep '^<' | sed 's/^../
/' | |
89 rm -f $TEMPDIR/$NAME.morph | |
90 exit 1 | |
91 fi | |
92 rm -f $TEMPDIR/$NAME.{morph,good} | |
93 fi | |
94 | |
95 check_valgrind_log "morphological analysis" | |
96 | |
97 # Tests suggestions | |
98 if test -f $TESTDIR/$NAME.sug; then | |
99 hunspell $* -a -d $TESTDIR/$NAME <$TESTDIR/$NAME.wrong | grep '^&' | \ | |
100 sed 's/^[^:]*: //' >$TEMPDIR/$NAME.sug | |
101 if ! cmp $TEMPDIR/$NAME.sug $TESTDIR/$NAME.sug >/dev/null; then | |
102 echo "=============================================" | |
103 echo "Fail in $NAME.sug. Bad suggestion?" | |
104 diff $TESTDIR/$NAME.sug $TEMPDIR/$NAME.sug | |
105 rm -f $TEMPDIR/$NAME.sug | |
106 exit 1 | |
107 fi | |
108 rm -f $TEMPDIR/$NAME.sug | |
109 fi | |
110 | |
111 check_valgrind_log "suggestion" | |
OLD | NEW |