#!/bin/sh
#
# Test script for e2fsck
#

LC_ALL=C
export LC_ALL

case "$1" in 
    --valgrind)
    	export USE_VALGRIND="valgrind -q --weird-hacks=lax-ioctls"
	shift;
esac

if test "$1"x = x ; then
  TESTS=`ls -d $SRCDIR/[a-zA-Z]_* | $EGREP -v "\.failed|\.new"`
else
  TESTS=
  for i 
  do
    case $i in
	*.failed|*.new)	continue ;;
	[a-zA-Z])	TESTS="$TESTS $SRCDIR/${i}_*" ;;
	*)		TESTS="$TESTS $SRCDIR/$i" ;;
    esac
  done
fi

cmd_dir=$SRCDIR

if test "$TEST_CONFIG"x = x; then
	TEST_CONFIG=$SRCDIR/test_config
fi

. $TEST_CONFIG

for test_dir in $TESTS
do
	test_name=`echo $test_dir | sed -e 's;.*/;;'`
	if [ -f $test_dir ] ; then
	    continue;
	fi
	if [ ! -d $test_dir ] ; then
		echo "The test '$test_name' does not exist."
		continue;
	fi
	if [ -z "`ls $test_dir`" ]; then
		continue
	fi
	if [ -f $test_dir/name ]; then
		test_description=`cat $test_dir/name`
		printf "%s: %s: " "$test_name" "$test_description"
	else
		printf "%s: " "$test_name"
	fi
	if [ -f $test_dir/script ]; then
		. $test_dir/script
	else
		test_base=`echo $test_name | sed -e 's/_.*//'`
		default_script=$SRCDIR/defaults/${test_base}_script
		if [ -f $default_script ]; then
			. $SRCDIR/defaults/${test_base}_script
		else
			echo "Missing test script!"
		fi
	fi
done

num_ok=`ls *.ok 2>/dev/null | wc -l`
num_failed=`ls *.failed 2>/dev/null | wc -l`

echo "$num_ok tests succeeded	$num_failed tests failed"

test "$num_failed" -eq 0 || exit 1
