1# tdir that only exes the files.
2args="../.."
3if test "$1" = "-a"; then
4	args=$2
5	shift
6	shift
7fi
8
9if test "$1" = "clean"; then
10	echo "rm -f result.* .done* .tdir.var.master .tdir.var.test"
11	rm -f result.* .done* .tdir.var.master .tdir.var.test
12	exit 0
13fi
14if test "$1" = "fake"; then
15	echo "minitdir fake $2"
16	echo "fake" > .done-`basename $2 .tdir`
17	exit 0
18fi
19if test "$1" = "-f" && test "$2" = "report"; then
20	echo "Minitdir Long Report"
21	pass=0
22	fail=0
23	skip=0
24	echo "   STATUS    ELAPSED TESTNAME TESTDESCRIPTION"
25	for result in *.tdir; do
26		name=`basename $result .tdir`
27		timelen="     "
28		desc=""
29		if test -f "result.$name"; then
30			timestart=`grep ^DateRunStart: "result.$name" | sed -e 's/DateRunStart: //'`
31			timeend=`grep ^DateRunEnd: "result.$name" | sed -e 's/DateRunEnd: //'`
32			timesec=`expr $timeend - $timestart`
33			timelen=`printf %4ds $timesec`
34			if test $? -ne 0; then
35				timelen="$timesec""s"
36			fi
37			desc=`grep ^Description: "result.$name" | sed -e 's/Description: //'`
38		fi
39		if test -f ".done-$name"; then
40			if test "$1" != "-q"; then
41				echo "** PASSED ** $timelen $name: $desc"
42				pass=`expr $pass + 1`
43			fi
44		else
45			if test -f "result.$name"; then
46				echo "!! FAILED !! $timelen $name: $desc"
47				fail=`expr $fail + 1`
48			else
49				echo ".> SKIPPED<< $timelen $name: $desc"
50				skip=`expr $skip + 1`
51			fi
52		fi
53	done
54	echo ""
55	if test "$skip" = "0"; then
56		echo "$pass pass, $fail fail"
57	else
58		echo "$pass pass, $fail fail, $skip skip"
59	fi
60	echo ""
61	exit 0
62fi
63if test "$1" = "report" || test "$2" = "report"; then
64	echo "Minitdir Report"
65	for result in *.tdir; do
66		name=`basename $result .tdir`
67		if test -f ".done-$name"; then
68			if test "$1" != "-q"; then
69				echo "** PASSED ** : $name"
70			fi
71		else
72			if test -f "result.$name"; then
73				echo "!! FAILED !! : $name"
74			else
75				echo ">> SKIPPED<< : $name"
76			fi
77		fi
78	done
79	exit 0
80fi
81
82if test "$1" != 'exe'; then
83	# usage
84	echo "mini tdir. Reduced functionality for old shells."
85	echo "	tdir exe <file>"
86	echo "	tdir fake <file>"
87	echo "	tdir clean"
88	echo "	tdir [-q|-f] report"
89	exit 1
90fi
91shift
92
93# do not execute if the disk is too full
94#DISKLIMIT=100000
95# This check is not portable (to Solaris 10).
96#avail=`df . | tail -1 | awk '{print $4}'`
97#if test "$avail" -lt "$DISKLIMIT"; then
98	#echo "minitdir: The disk is too full! Only $avail."
99	#exit 1
100#fi
101
102name=`basename $1 .tdir`
103dir=$name.$$
104result=result.$name
105done=.done-$name
106success="no"
107if test -x "`which bash`"; then
108	shell="bash"
109else
110	shell="sh"
111fi
112
113# check already done
114if test -f .done-$name; then
115	echo "minitdir .done-$name exists. skip test."
116	exit 0
117fi
118
119# Copy
120echo "minitdir copy $1 to $dir"
121mkdir $dir
122if cp --help 2>&1 | grep -- "-a" >/dev/null; then
123cp -a $name.tdir/* $dir/
124else
125cp -R $name.tdir/* $dir/
126fi
127cd $dir
128
129# EXE
130echo "minitdir exe $name" > $result
131grep "Description:" $name.dsc >> $result 2>&1
132echo "DateRunStart: "`date "+%s" 2>/dev/null` >> $result
133if test -f $name.pre; then
134	echo "minitdir exe $name.pre"
135	echo "minitdir exe $name.pre" >> $result
136	$shell $name.pre $args >> $result
137	if test $? -ne 0; then
138		echo "Warning: $name.pre did not exit successfully"
139	fi
140fi
141if test -f $name.test; then
142	echo "minitdir exe $name.test"
143	echo "minitdir exe $name.test" >> $result
144	$shell $name.test $args >>$result 2>&1
145	if test $? -ne 0; then
146		echo "$name: FAILED" >> $result
147		echo "$name: FAILED"
148		success="no"
149	else
150		echo "$name: PASSED" >> $result
151		echo "$name: PASSED" > ../.done-$name
152		echo "$name: PASSED"
153		success="yes"
154	fi
155fi
156if test -f $name.post; then
157	echo "minitdir exe $name.post"
158	echo "minitdir exe $name.post" >> $result
159	$shell $name.post $args >> $result
160	if test $? -ne 0; then
161		echo "Warning: $name.post did not exit successfully"
162	fi
163fi
164echo "DateRunEnd: "`date "+%s" 2>/dev/null` >> $result
165
166mv $result ..
167cd ..
168rm -rf $dir
169# compat for windows where deletion may not succeed initially (files locked
170# by processes that still have to exit).
171if test $? -eq 1; then
172	echo "minitdir waiting for processes to terminate"
173	sleep 2 # some time to exit, and try again
174	rm -rf $dir
175fi
176