]>
Commit | Line | Data |
---|---|---|
1 | #! /bin/sh | |
2 | ||
3 | # Copyright (C) 2005-2013 Free Software Foundation, Inc. | |
4 | # | |
5 | # This program is free software: you can redistribute it and/or modify | |
6 | # it under the terms of the GNU General Public License as published by | |
7 | # the Free Software Foundation, either version 3 of the License, or | |
8 | # (at your option) any later version. | |
9 | # | |
10 | # This program is distributed in the hope that it will be useful, | |
11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | # GNU General Public License for more details. | |
14 | # | |
15 | # You should have received a copy of the GNU General Public License | |
16 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
17 | ||
18 | me=`basename $1 .test` | |
19 | ||
20 | # Number of the current test. | |
21 | number=1 | |
22 | ||
23 | # Exit status of this script. | |
24 | exit=true | |
25 | ||
26 | # top_buiddir. | |
27 | cwd=`pwd` | |
28 | ||
29 | # The exercised program. | |
30 | prog=$cwd/examples/$me/$me | |
31 | ||
32 | # cleanup | |
33 | # ------- | |
34 | cleanup () | |
35 | { | |
36 | local status=$? | |
37 | if test -z "$DEBUG"; then | |
38 | cd $cwd | |
39 | rm -rf $$.dir | |
40 | fi | |
41 | exit $status | |
42 | } | |
43 | trap cleanup 0 1 2 13 15 | |
44 | mkdir $$.dir | |
45 | cd $$.dir | |
46 | ||
47 | # run EXPECTED-EXIT-STATUS EXPECTED-OUTPUT [PARSER-OPTIONS] | |
48 | # --------------------------------------------------------- | |
49 | run () | |
50 | { | |
51 | # Expected exit status. | |
52 | local sta_exp=$1 | |
53 | shift | |
54 | # Expected output. | |
55 | local out_exp=$1 | |
56 | shift | |
57 | # Effective exit status. | |
58 | local sta_eff=0 | |
59 | $prog "$@" - <input >out_eff || sta_eff=$? | |
60 | # Effective output. | |
61 | local out_eff=`cat out_eff` | |
62 | if test $sta_eff -eq $sta_exp; then | |
63 | if test "$out_eff" = "$out_exp"; then | |
64 | echo "$me: PASS: $number" | |
65 | else | |
66 | echo "$me: FAIL: $number (expected output: $out_exp, effective: $out_eff)" | |
67 | exit=false | |
68 | fi | |
69 | else | |
70 | echo "$me: FAIL: $number (expected status: $sta_exp, effective: $sta_eff)" | |
71 | exit=false | |
72 | fi | |
73 | number=`expr $number + 1` | |
74 | } | |
75 | ||
76 | # We have cd'd one level deeper. | |
77 | case $1 in | |
78 | /*) . "$1";; | |
79 | *) . "../$1";; | |
80 | esac | |
81 | ||
82 | $exit |