1a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'o#
2a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'o# Makefile for the tests directory
3a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'o#
4a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'o
5a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'osrcdir = @srcdir@
6a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'otop_srcdir = @top_srcdir@
7a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'oVPATH = @srcdir@
8a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'otop_builddir = ..
91e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'omy_dir = tests
10a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'oINSTALL = @INSTALL@
11a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'o
121e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o@MCONFIG@
131e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o
14f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilgerall:: @DO_TEST_SUITE@ test_one test_script
15a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'o
16f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilgertest_one: $(srcdir)/test_one.in Makefile mke2fs.conf
17f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger	@echo "Creating test_one script..."
18f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger	@echo "#!/bin/sh" > test_one
19149640fabcf140d8ede596b06ff8c191ca23cacaTheodore Ts'o	@echo "HTREE=y" >> test_one
209e8fcd6e01c298ead62aafc7f7ba342a59c9b0e8Theodore Ts'o	@echo "QUOTA=y" >> test_one
21f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger	@echo "SRCDIR=@srcdir@" >> test_one
22f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger	@echo "DIFF_OPTS=@UNI_DIFF_OPTS@" >> test_one
232dd680f3b9ff65c1aa0ae3af77aac55ad356f143Theodore Ts'o	@echo "SIZEOF_TIME_T=@SIZEOF_TIME_T@" >> test_one
24f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger	@cat $(srcdir)/test_one.in >> test_one
25f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger	@chmod +x test_one
26f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger
27f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilgertest_script: test_one test_script.in Makefile mke2fs.conf
281e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o	@echo "Creating test_script..."
291e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o	@echo "#!/bin/sh" > test_script
301e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o	@echo "SRCDIR=@srcdir@" >> test_script
311e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o	@cat $(srcdir)/test_script.in >> test_script
321e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o	@chmod +x test_script
331e3472c5f37ca3686dd69b079d4d02a302f5798dTheodore Ts'o
34edc1894e60e9aef274408d322ada84729891a2f0Theodore Ts'omke2fs.conf: $(srcdir)/mke2fs.conf.in
35edc1894e60e9aef274408d322ada84729891a2f0Theodore Ts'o	$(CP) $(srcdir)/mke2fs.conf.in mke2fs.conf
363d43836fda5321dd2f286eef77d238d1da792ce2Theodore Ts'o
37f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger.PHONY : test_pre test_post check always_run
38f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger
390355d6d047884f5ba41ef526fc7d13fba1f6b258Theodore Ts'oalways_run:
400355d6d047884f5ba41ef526fc7d13fba1f6b258Theodore Ts'o
418ef71d873c6c96bbe868efe0e351020763edb2b6Theodore Ts'o@ifGNUmake@TESTS=$(wildcard $(srcdir)/[a-z]_*)
428ef71d873c6c96bbe868efe0e351020763edb2b6Theodore Ts'o@ifNotGNUmake@TESTS != echo $(srcdir)/[a-z]_*
430355d6d047884f5ba41ef526fc7d13fba1f6b258Theodore Ts'o
44f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger$(TESTS):: test_one always_run
45f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger	@./test_one $@
46f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger
470355d6d047884f5ba41ef526fc7d13fba1f6b258Theodore Ts'ofoo:
480355d6d047884f5ba41ef526fc7d13fba1f6b258Theodore Ts'o	echo $(TESTS)
490355d6d047884f5ba41ef526fc7d13fba1f6b258Theodore Ts'o
50f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilgertest_pre:
51f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger	@$(RM) -f *.failed
52a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'o	@echo "Running e2fsprogs test suite..."
53a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'o	@echo " "
54a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'o
55f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilgertest_post: test_pre $(TESTS)
56f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger	@$(srcdir)/test_post
57f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger
58f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilgercheck:: test_pre test_post test_script
59f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger
60f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilgercheck-failed: $(basename $(wildcard *.failed))
61f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger	@$(srcdir)/test_post
6252325593b1979509dc3f18232b50359e311268ccTheodore Ts'o
6352325593b1979509dc3f18232b50359e311268ccTheodore Ts'o
64f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas DilgerTDIR=f_testnew
65f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger# Target which creates a new testcase to simplify adding new regression tests.
66f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilgertestnew:
67f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger	@echo "Creating a new e2fsck testcase in ${TDIR}"
68f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger	@mkdir -p ${TDIR}
69f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger	dd if=/dev/zero of=${TDIR}/image bs=1k count=8k
700f30deb3b0afa0b2949ba4cb3af988275ce7f998Andreas Dilger	$(top_srcdir)/misc/mke2fs -j -F -N 256 ${TDIR}/image
71f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger	@echo "new test description" > ${TDIR}/name
72f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger	@echo; echo; echo "New test filesystem at ${TDIR}/image."
73f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger	@echo "Now, break the filesystem as appropriate, and run 'make testend'"
74f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger
75f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas DilgerEXPECT1=${TDIR}/expect.1
76f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas DilgerEXPECT2=${TDIR}/expect.2
77f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger# Target which generates the expect files for the new testcase.
78f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilgertestend: test_one ${TDIR}/image
79f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger	gzip -9 ${TDIR}/image
80f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger	@OUT1=${EXPECT1} OUT2=${EXPECT2} ./test_one ${TDIR}
81f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger	@echo; echo; echo "*** output from first e2fsck run (${EXPECT1}) ***"
82f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger	@cat ${EXPECT1}
83f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger	@echo "*** output from second e2fsck run (${EXPECT2}) ***"
84f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger	@cat ${EXPECT2}
85f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger	@echo "*** end of e2fsck output ***"
86f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger	@echo; echo "Hopefully e2fsck now fixes this problem properly."
87f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger	@echo "If all is well, edit ${TDIR}/name and rename ${TDIR}."
88f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger
89a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'oclean::
90f3331df6bb5d380efd72e07fc9b40c998b355412Andreas Dilger	$(RM) -f *~ *.log *.new *.failed *.ok *.tmp test_one test_script mke2fs.conf
91a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'o
92a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'odistclean:: clean
93a418d3ad819323f871005d253f7f9ac378e78ba5Theodore Ts'o	$(RM) -f Makefile
94f10ff6429b89f3d099dbd7e76c5b7049854a1493Andreas Dilger	$(RM) -rf ${TDIR}
95