|
@@ -1,6 +1,6 @@
|
1
|
1
|
#!/bin/bash
|
2
|
2
|
|
3
|
|
-. $TF_DIR/include/common.sh
|
|
3
|
+. "$TF_DIR/include/common.sh"
|
4
|
4
|
|
5
|
5
|
# 1. exec: [test] -> [result]
|
6
|
6
|
# 2. eval: [result] == [oracle]
|
|
@@ -30,17 +30,21 @@ tf_testflt() {
|
30
|
30
|
|
31
|
31
|
# get args
|
32
|
32
|
#
|
|
33
|
+ local orig_args="$0 $*"
|
|
34
|
+ tf_debug "orig_args=$orig_args"
|
|
35
|
+ local arg_err=false
|
33
|
36
|
while true; do case "$1" in
|
34
|
|
- -i) t_in="$2"; shift 2 ;;
|
35
|
|
- -n) t_name="$2"; shift 2 ;;
|
36
|
|
- -O) o_out="$2"; shift 2 ;;
|
37
|
|
- -E) o_err="$2"; shift 2 ;;
|
38
|
|
- -S) o_es="$2"; shift 2 ;;
|
|
37
|
+ -i) t_in="$2"; shift 2 || { arg_err=true; break; } ;;
|
|
38
|
+ -n) t_name="$2"; shift 2 || { arg_err=true; break; } ;;
|
|
39
|
+ -O) o_out="$2"; shift 2 || { arg_err=true; break; } ;;
|
|
40
|
+ -E) o_err="$2"; shift 2 || { arg_err=true; break; } ;;
|
|
41
|
+ -S) o_es="$2"; shift 2 || { arg_err=true; break; } ;;
|
39
|
42
|
--) shift; break ;;
|
40
|
43
|
"") break ;;
|
41
|
44
|
-*) tf_warn "wrong testcli arg: $1"; return $TF_ES_BAILOUT ;;
|
42
|
45
|
*) break ;;
|
43
|
46
|
esac done
|
|
47
|
+ $arg_err && { tf_warn "error parsing arguments: $orig_args"; return $TF_ES_BAILOUT; }
|
44
|
48
|
tf_debug "t_in='$t_in'"
|
45
|
49
|
tf_debug "t_name='$t_name'"
|
46
|
50
|
tf_debug "o_out='$o_out'"
|
|
@@ -53,6 +57,7 @@ tf_testflt() {
|
53
|
57
|
test -r "$t_in" || { tf_warn "missing input file: $t_in" ; return $TF_ES_BAILOUT; }
|
54
|
58
|
test -e "$o_out" || { tf_warn "missing oracle stdout: $o_out" ; return $TF_ES_BAILOUT; }
|
55
|
59
|
test -e "$o_err" || { tf_warn "missing oracle stderr: $o_err" ; return $TF_ES_BAILOUT; }
|
|
60
|
+ test "$o_es" -ge 0 || { tf_warn "invalid oracle status: $o_es" ; return $TF_ES_BAILOUT; }
|
56
|
61
|
|
57
|
62
|
# prepare
|
58
|
63
|
#
|
|
@@ -61,18 +66,18 @@ tf_testflt() {
|
61
|
66
|
r_err="result/$t_name.stderr"
|
62
|
67
|
tf_debug "r_out='$r_out'"
|
63
|
68
|
tf_debug "r_err='$r_err'"
|
64
|
|
- touch $r_out || { tf_warn "cannot create tmp file: $r_out" ; return $TF_ES_BAILOUT; }
|
65
|
|
- touch $r_err || { tf_warn "cannot create tmp file: $r_err" ; return $TF_ES_PANIC; }
|
|
69
|
+ touch "$r_out" || { tf_warn "cannot create tmp file: $r_out" ; return $TF_ES_BAILOUT; }
|
|
70
|
+ touch "$r_err" || { tf_warn "cannot create tmp file: $r_err" ; return $TF_ES_PANIC; }
|
66
|
71
|
|
67
|
72
|
# run
|
68
|
73
|
#
|
69
|
|
- ( <$t_in eval "$@" >$r_out 2>$r_err ); r_es=$?
|
|
74
|
+ ( <"$t_in" eval "$@" >"$r_out" 2>"$r_err" ); r_es=$?
|
70
|
75
|
tf_debug "r_es='$r_es'"
|
71
|
76
|
|
72
|
77
|
# eval/report/exit
|
73
|
78
|
#
|
74
|
79
|
test $r_es = $o_es || { tf_warn "bad exit status: $r_es (need $o_es)" ; t_es=$TF_ES_FAIL; }
|
75
|
|
- diff -u $o_err $r_err || t_es=$TF_ES_FAIL
|
76
|
|
- diff -u $o_out $r_out || t_es=$TF_ES_FAIL
|
|
80
|
+ diff -u "$o_err" "$r_err" || t_es=$TF_ES_FAIL
|
|
81
|
+ diff -u "$o_out" "$r_out" || t_es=$TF_ES_FAIL
|
77
|
82
|
return $t_es
|
78
|
83
|
}
|