run-tests.sh 3 KB
Newer Older
Daniel Barlow's avatar
Daniel Barlow committed
1
2
#!/bin/sh

3
# do_tests {lisp invocation} {scripts-regex}
4
5
6
7
# - read lisp forms one at a time from standard input
# - quit with exit status 0 on getting eof
# - quit with exit status >0 if an unhandled error occurs

8
export CL_SOURCE_REGISTRY="$PWD"
9

10
11
12
13
14
15
16
17
18
19
if [ x"$1" = "xhelp" ]; then
    echo "$0 [lisp invocation] [scripts-regex]"
    echo " - read lisp forms one at a time from matching scripts"
    echo " - quit with exit status 0 on getting eof"
    echo " - quit with exit status >0 if an unhandled error occurs"
    echo " you need to supply the .script in the second argument"
    echo " lisps include sbcl, clisp, allegro and allegromodern"
    exit -1
fi

20
21
22
if [ -z "$2" ]; then
    scripts="*.script"
else
23
    scripts="$2"
24
25
fi

26
27
sok=1

28
do_tests() {
29
rm -f *.$2 || true
30
31
32
33
34
35
( cd .. && echo '(load "test/compile-asdf.lisp")' | $1  )
if [ $? -eq 0 ] ; then
    test_count=0
    test_pass=0
    test_fail=0
    failed_list=""
36
    for i in $scripts ; 
37
38
39
    do 
      echo "Testing: $i" >&2
      test_count=`expr "$test_count" + 1`
40
      rm -f *.$2 || true
41
      if  $1 < $i ; then
42
43
44
45
46
47
48
49
50
51
        echo "Using $1, $i passed" >&2
	test_pass=`expr "$test_pass" + 1`
      else
        echo "Using $1, $i failed" >&2
	test_fail=`expr "$test_fail" + 1`
	failed_list="$failed_list $i"
        sok=0
      fi
    done
    echo >&2
Gary King's avatar
Gary King committed
52
    echo "-#---------------------------------------" >&2
53
54
55
56
57
58
59
60
    echo "Using $1" >&2
    echo "Ran $test_count tests: " >&2
    echo "  $test_pass passing and $test_fail failing" >&2
    if [ $test_fail -eq 0 ] ; then
	echo "all tests apparently successful" >&2
    else
	echo "failing test(s): $failed_list" >&2
    fi
Gary King's avatar
Gary King committed
61
    echo "-#---------------------------------------" >&2
62
63
    echo >&2
fi
64
65
}

66
# terminate on error
67
68
set -e

69
70
71
lisp=$1
if [ -z $1 ] ; then
    lisp="sbcl"
72
73
fi

74
75
76
if [ "$lisp" = "sbcl" ] ; then 
    if type sbcl ; then
      fasl_ext="fasl"
Gary King's avatar
Gary King committed
77
      command="sbcl --userinit /dev/null --sysinit /dev/null --noinform --noprogrammer"
78
79
80
81
    fi
elif [ "$lisp" = "clisp" ] ; then
    if type clisp ; then
	fasl_ext="fas"
82
	command=`which clisp`
83
84
85
86
87
	command="$command -norc -ansi -I - "
    fi
elif [ "$lisp" = "allegro" ] ; then
    if type alisp ; then
	fasl_ext="fasl"
88
	command="alisp -q -batch "
89
    fi
90
91
92
elif [ "$lisp" = "allegromodern" ] ; then
    if type mlisp ; then
	fasl_ext="fasl"
93
	command="mlisp -q -batch "
94
    fi
Gary King's avatar
Gary King committed
95
96
elif [ "$lisp" = "ccl" ] ; then
    if type ccl ; then
Gary King's avatar
Gary King committed
97
	fasl_ext="dx32fsl"
Gary King's avatar
Gary King committed
98
99
	command="ccl --no-init --quiet --batch "
    fi
100
101
fi

102
103
104
105
106
107

#if [ -x /usr/bin/lisp ]
#then 
#  do_tests "/usr/bin/lisp -batch -noinit" x86f
#fi

108
create_asds () {
109
110
111
    mkdir -p {conf.d,dir1,dir2/{dir3,dir4}}
    for i in dir1 dir2; do touch "$i"/test.asd; done
    for i in dir3 dir4; do (cd dir2/$i; touch test.asd); done
112
113
114
}

clean_up () {
115
    rm -rf {conf.d,dir?}
116
117
}

118
119

if [ -z "$command" ] ; then
Gary King's avatar
Gary King committed
120
    echo "Error: cannot find or do not know how to run Lisp named $lisp"
121
else
122
    create_asds
Gary King's avatar
Gary King committed
123
    mkdir -p results
124
    echo $command
Gary King's avatar
Gary King committed
125
126
    thedate=`date "+%Y-%m-%d"`
    do_tests "$command" $fasl_ext 2>&1 | tee "results/${lisp}.text" "results/${lisp}-${thedate}.save"
127
    clean_up
128
fi
129