1e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall#!/bin/sh
2e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall# run a single regression test
3e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
4e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP AbgrallLC_ALL=C
5e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallexport LC_ALL
6e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
7e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallcase "$1" in
8e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall    --valgrind)
9e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall    	export USE_VALGRIND="valgrind -q --sim-hints=lax-ioctls"
10e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	shift;
11e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	;;
12e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall    --valgrind-leakcheck)
13e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall    	export USE_VALGRIND="valgrind --sim-hints=lax-ioctls --leak-check=full --show-reachable=yes --log-file=/tmp/valgrind-%p.log"
14e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	shift;
15e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	;;
16e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallesac
17e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
18e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallcase "$1" in
19e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall    *.failed|*.new|*.ok|*.log|*.tmp)	exit 0 ;;
20e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallesac
21e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
22e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgralltest_dir=$1
23e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallcmd_dir=$SRCDIR
24e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
25e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif test "$TEST_CONFIG"x = x; then
26e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	TEST_CONFIG=$SRCDIR/test_config
27e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
28e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
29e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall. $TEST_CONFIG
30e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
31e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP AbgrallTMPFILE=$(mktemp -t e2fsprogs-tmp.XXXXXX)
32e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
33e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgralltest_name=`echo $test_dir | sed -e 's;.*/;;'`
34e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif [ -f $test_dir ] ; then
35e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	exit 0;
36e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
37e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif [ ! -d $test_dir ] ; then
38e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	echo "The test '$test_name' does not exist."
39e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	exit 0;
40e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
41e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif [ -z "`ls $test_dir`" ]; then
42e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	exit 0
43e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
44e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif [ -f $test_dir/name ]; then
45e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	test_description=`cat $test_dir/name`
46e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallelse
47e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	test_description=
48e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
49e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
50e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallrm -f $test_name.ok $test_name.failed
51e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall#echo -e -n "$test_name: $test_description:\r"
52e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
53e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif [ -f $test_dir/script ]; then
54e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	. $test_dir/script
55e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallelse
56e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	test_base=`echo $test_name | sed -e 's/_.*//'`
57e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	default_script=$SRCDIR/defaults/${test_base}_script
58e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	if [ -f $default_script ]; then
59e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall		. $SRCDIR/defaults/${test_base}_script
60e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	else
61e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall		echo "$test_name: Missing test script $default_script!"
62e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	fi
63e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	[ -f $test_name.failed ] && cat $test_name.failed
64e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
65e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
66e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallif [ "$SKIP_UNLINK" != "true" ] ; then
67e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall	rm -f $TMPFILE
68e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrallfi
69e0ed7404719a9ddd2ba427a80db5365c8bad18c0JP Abgrall
70