#
# Makefile for the tests directory
#

srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
top_builddir = ..
my_dir = tests
INSTALL = @INSTALL@

@MCONFIG@

all:: @DO_TEST_SUITE@

test_script: test_script.in Makefile
	@echo "Creating test_script..."
	@echo "#!/bin/sh" > test_script
@HTREE_CMT@	@echo "HTREE=y" >> test_script
@HTREE_CLR_CMT@	@echo "HTREE_CLR=y" >> test_script
	@echo "SRCDIR=@srcdir@" >> test_script
	@cat $(srcdir)/test_script.in >> test_script
	@chmod +x test_script

check:: test_script
	@echo "Running e2fsprogs test suite..."
	@echo " "
	@./test_script

TDIR=f_testnew
# Target which creates a new testcase to simplify adding new regression tests.
testnew:
	@echo "Creating a new e2fsck testcase in ${TDIR}"
	@mkdir -p ${TDIR}
	dd if=/dev/zero of=${TDIR}/image bs=1k count=8k
	mke2fs -j -F -N 256 ${TDIR}/image
	@echo "new test description" > ${TDIR}/name
	@echo; echo; echo "New test filesystem at ${TDIR}/image."
	@echo "Now, break the filesystem as appropriate, and run 'make testend'"

EXPECT1=${TDIR}/expect.1
EXPECT2=${TDIR}/expect.2
# Target which generates the expect files for the new testcase.
testend: test_script ${TDIR}/image
	gzip -9 ${TDIR}/image
	@OUT1=${EXPECT1} OUT2=${EXPECT2} ./test_script ${TDIR}
	@echo; echo; echo "*** output from first e2fsck run (${EXPECT1}) ***"
	@cat ${EXPECT1}
	@echo "*** output from second e2fsck run (${EXPECT2}) ***"
	@cat ${EXPECT2}
	@echo "*** end of e2fsck output ***"
	@echo; echo "Hopefully e2fsck now fixes this problem properly."
	@echo "If all is well, edit ${TDIR}/name and rename ${TDIR}."

clean::
	$(RM) -f *.log *.new *.failed *.ok test.img test_script

distclean:: clean
	$(RM) -f Makefile
	$(RM) -rf ${TDIR}
	
