#
# Makefile for the tests directory
#

srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
top_builddir = ..
my_dir = tests
INSTALL = @INSTALL@
MKDIR_P = @MKDIR_P@
EGREP = "@EGREP@"

@MCONFIG@

all:: @DO_TEST_SUITE@ test_one test_script

test_one: $(srcdir)/test_one.in Makefile mke2fs.conf test_data.tmp
	@echo "Creating test_one script..."
	@[ -f test_one ] && chmod u+w test_one || true
	@echo "#!/bin/sh" > test_one
	@echo "HTREE=y" >> test_one
	@echo "QUOTA=y" >> test_one
	@echo "SRCDIR=@srcdir@" >> test_one
	@echo "DIFF_OPTS=@UNI_DIFF_OPTS@" >> test_one
	@echo "SIZEOF_TIME_T=@SIZEOF_TIME_T@" >> test_one
	@echo "DD=@DD@" >>test_one
	@echo 'EGREP="@EGREP@"' >>test_one
	@cat $(srcdir)/test_one.in >> test_one
	@chmod +x-w test_one

test_script: test_one test_script.in Makefile mke2fs.conf test_data.tmp
	@echo "Creating test_script..."
	@[ -f test_script ] && chmod u+w test_script || true
	@echo "#!/bin/sh" > test_script
	@echo "SRCDIR=@srcdir@" >> test_script
	@cat $(srcdir)/test_script.in >> test_script
	@chmod +x-w test_script

mke2fs.conf: $(srcdir)/mke2fs.conf.in
	$(CP) $(srcdir)/mke2fs.conf.in mke2fs.conf

test_data.tmp: $(srcdir)/scripts/gen-test-data
	$(srcdir)/scripts/gen-test-data > test_data.tmp

.PHONY : test_pre test_post check always_run

always_run:

@ifGNUmake@TESTS=$(wildcard $(srcdir)/[a-z]_*)
@ifNotGNUmake@TESTS != echo $(srcdir)/[a-z]_*

SKIP_SLOW_TESTS=--skip-slow-tests

$(TESTS):: test_one always_run
	@./test_one $(SKIP_SLOW_TESTS) $@

foo:
	echo $(TESTS)

test_pre:
	@$(RM) -f *.failed
	@echo "Running e2fsprogs test suite..."
	@echo " "

test_post: test_pre $(TESTS)
	@$(srcdir)/test_post

check:: test_pre test_post test_script

fullcheck::
	$(MAKE) SKIP_SLOW_TESTS= check

check-failed: $(basename $(wildcard *.failed))
	@$(srcdir)/test_post


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
	$(top_srcdir)/misc/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_one ${TDIR}/image
	gzip -9 ${TDIR}/image
	@OUT1=${EXPECT1} OUT2=${EXPECT2} ./test_one ${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 *.tmp *.slow
	$(RM) -f test_one test_script mke2fs.conf test_data.tmp

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