#
# 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_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
	@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}
