~ubuntu-branches/ubuntu/oneiric/bogofilter/oneiric

« back to all changes in this revision

Viewing changes to src/tests/t.systest

  • Committer: Bazaar Package Importer
  • Author(s): Clint Adams
  • Date: 2004-06-27 09:22:31 UTC
  • Revision ID: james.westby@ubuntu.com-20040627092231-u26smic0nhp7rl4z
Tags: upstream-0.92.0
ImportĀ upstreamĀ versionĀ 0.92.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#! /bin/sh
 
2
 
 
3
# Note:  When run via "make check", test output files are automatically deleted.
 
4
#        When run from the command line, outputs files are left in directory
 
5
#        systest.YYYYMMDD.  This is useful when something is different.
 
6
#
 
7
#        ./inputs  - test inputs
 
8
#        ./outputs - known correct outputs
 
9
#
 
10
#        systest.YYYYMMDD:
 
11
#               tests   - directory containing individual output files
 
12
 
 
13
NODB=1 . ${srcdir=.}/t.frame
 
14
 
 
15
[ -d ${TMPDIR}/tests ] && rm -rf ${TMPDIR}/tests
 
16
mkdir -p ${TMPDIR}/tests
 
17
 
 
18
CONFIG="${TMPDIR}/test.cf"
 
19
 
 
20
OPTS="-c ${CONFIG} -y 0"
 
21
 
 
22
cat <<EOF > ${CONFIG}
 
23
robx=0.415
 
24
min_dev=0.0
 
25
ham_cutoff=0.10
 
26
spam_cutoff=0.95
 
27
spam_header_name=X-Bogosity
 
28
stats_in_header=Y
 
29
EOF
 
30
 
 
31
map_rc()
 
32
{
 
33
    (
 
34
        set +e
 
35
        eval "$@"
 
36
        a=$?
 
37
        [ $a -eq 0 ] && exit 0
 
38
        [ $a -eq 1 ] && exit 0
 
39
        [ $a -eq 2 ] && exit 0
 
40
        exit $a
 
41
    )
 
42
}
 
43
 
 
44
# Expected spamicity values (11/17/02 13:13):
 
45
#
 
46
#       1 g v           X-Bogosity: No,  spamicity=0.000000
 
47
#       1 r v           X-Bogosity: No,  spamicity=0.402296
 
48
#       2a g vv         X-Bogosity: Yes, spamicity=1.000000
 
49
#       2a r vv         X-Bogosity: No,  spamicity=0.527095
 
50
#       2b g vv         X-Bogosity: Yes, spamicity=1.000000
 
51
#       2b g vvv        X-Bogosity: Yes, spamicity=1.000000
 
52
#       2b r vv         X-Bogosity: Yes, spamicity=0.540124
 
53
#       2b r vvv        X-Bogosity: Yes, spamicity=0.540124
 
54
#       3 g vvv         X-Bogosity: Yes, spamicity=1.000000
 
55
#       3 r vvv         X-Bogosity: Yes, spamicity=0.540316
 
56
 
 
57
alg="f"
 
58
 
 
59
    BOGOFILTER_DIR="${TMPDIR}/words.$alg"
 
60
    export BOGOFILTER_DIR
 
61
    rm -rf $BOGOFILTER_DIR
 
62
    mkdir $BOGOFILTER_DIR
 
63
    $BOGOFILTER $OPTS -s < ${SYSTEST}/inputs/spam.mbx
 
64
    $BOGOFILTER $OPTS -n < ${SYSTEST}/inputs/good.mbx
 
65
    for f in $BOGOFILTER_DIR/*.${DB_EXT} ; do
 
66
        n=`basename $f .${DB_EXT}`
 
67
        $BOGOUTIL -d $BOGOFILTER_DIR/$n.${DB_EXT} > $BOGOFILTER_DIR/$n.txt
 
68
    done
 
69
    if  [ $verbose -ne 0 ]; then
 
70
        ls -l $BOGOFILTER_DIR/*list.txt
 
71
    fi
 
72
    #
 
73
    # run tests for msg.1.txt, msg.2.txt, and msg.3.txt
 
74
    #
 
75
    for tst in 1.1.v 2.2a.vv 2.2a.vvv 3.3.vvv ; do
 
76
        in=`echo $tst | tr "." " " | $AWK '{print $1}'`
 
77
        out=`echo $tst | tr "." " " | $AWK '{print $2}'`
 
78
        ver=`echo $tst | tr "." " " | $AWK '{print $3}'`
 
79
        map_rc $BOGOFILTER $OPTS -$ver 2>/dev/null \
 
80
        < ${SYSTEST}/inputs/msg.$in.txt > ${TMPDIR}/tests-$alg || :
 
81
        sed s/,.version=.*// < ${TMPDIR}/tests-$alg > ${TMPDIR}/tests/msg.$out.$alg.$ver
 
82
    done
 
83
    #
 
84
    # classify msg.2.txt a second time and rerun tests
 
85
    #    (expect different results from first run)
 
86
    #
 
87
    $BOGOFILTER $OPTS -s < ${SYSTEST}/inputs/msg.3.txt
 
88
    for tst in 2.2b.vv 2.2b.vvv ; do
 
89
        in=`echo $tst | tr "." " " | $AWK '{print $1}'`
 
90
        out=`echo $tst | tr "." " " | $AWK '{print $2}'`
 
91
        ver=`echo $tst | tr "." " " | $AWK '{print $3}'`
 
92
        map_rc $BOGOFILTER $OPTS -$ver 2>/dev/null \
 
93
        < ${SYSTEST}/inputs/msg.$in.txt > ${TMPDIR}/tests-$alg
 
94
        sed s/,.version=.*// < ${TMPDIR}/tests-$alg > ${TMPDIR}/tests/msg.$out.$alg.$ver
 
95
    done
 
96
    if  [ $verbose -eq 0 ]; then
 
97
        rm -f ${TMPDIR}/tests-$alg
 
98
        rm -f $BOGOFILTER_DIR/*.${DB_EXT}
 
99
    fi
 
100
 
 
101
rm -f ${CONFIG}
 
102
 
 
103
[ ! -z "$BF_SAVEDIR" ] && . ${srcdir}/../t.save
 
104
 
 
105
for i in $OUTPUTS/*f.v* ; do
 
106
    j=`basename $i`
 
107
    if  [ $verbose -eq 0 ]; then
 
108
        cmp $i ${TMPDIR}/tests/$j
 
109
    else
 
110
        set +e
 
111
        diff $DIFF_BRIEF $i ${TMPDIR}/tests/$j
 
112
    fi
 
113
done