First version of regression tests.

Only one test so far but the framework for more is in place.
This commit is contained in:
Eric S. Raymond 2017-05-26 00:22:51 -04:00
parent 7763e1aa22
commit 894724d1c8
4 changed files with 118 additions and 0 deletions

View file

@ -25,6 +25,9 @@ misc.o: misc.h main.h
clean: clean:
rm -f *.o advent advent.html advent.6 adventure.data rm -f *.o advent advent.html advent.6 adventure.data
check:
cd tests; $(MAKE) --quiet
# Requires asciidoc and xsltproc/docbook stylesheets. # Requires asciidoc and xsltproc/docbook stylesheets.
.asc.6: .asc.6:
a2x --doctype manpage --format manpage $< a2x --doctype manpage --format manpage $<

51
tests/Makefile Normal file
View file

@ -0,0 +1,51 @@
# Test-suite makefile for reposurgeon
# By setting the REPOSURGEON environment variable and using -e
# a different implementation can be plugged in to the tests.
# Use absolute path so tests that change working directory still use
# scripts from parent directory. Note that using $PWD seems to fail
# here under Gitlab's CI environment.
PATH := $(realpath ..):$(realpath .):${PATH}
# Defeat annoying behavior under Mac OS X - builtin echo doesn't do -n
ECHO := /bin/echo
default:
make -e --quiet all
all: listcheck regress
@echo "=== No diff output is good news."
.SUFFIXES: .chk
clean:
rm -fr *~
# Show summary lines for all tests.
testlist:
@grep --text '^##' *.log
listcheck:
@for f in *.log; do \
if ( head -3 $$f | grep --text -q '^ *##' ); then :; else echo "$$f needs a description"; fi; \
done
# General regression testing of commands and output; look at the *.log and
# corresponding *.chk files to see which tests this runs.
TESTLOADS := $(shell ls -1 *.log | sed '/.log/s///')
buildregress:
@for file in $(TESTLOADS); do \
echo "Remaking $${file}.chk"; \
$(REPOSURGEON) advent <$${file}.log >$${file}.chk \
2>&1 || exit 1; \
done
regress:
@for file in $(TESTLOADS); do \
$(ECHO) -n " $${file} "; grep --text '##' $${file}.log || echo ' ## (no description)'; \
if advent $${file}.log >/tmp/regress$$$$ 2>&1; \
then diff --text -u $${file}.chk /tmp/regress$$$$ || exit 1; \
else echo "*** Nonzero return status on $${file}!"; exit 1; fi \
done
@rm -f /tmp/regress$$$$
# end

2
tests/dwarf.chk Normal file
View file

@ -0,0 +1,2 @@
Couldn't find adventure.data, using adventure.text...
Can't read adventure.text!

62
tests/dwarf.log Normal file
View file

@ -0,0 +1,62 @@
## Dwarf appears in soutth side chamber, where the coins are.
n
seed 1495763690
seed 1495752222
in
take keys
take lamp
out
down
s
s
open grate
down
west
take cage
west
light lamp
take rod
xyzzy
xyzzy
west
drop rod
west
take bird
east
take rod
west
west
down
south
take gold
n
n
drop bird
west
take coins
e
s
take jewelry
n
n
take silver
drop cage
take silver
n
plugh
inven
drop jewelry
drop gold
drop silver
inven
drop keys
plugh
take knife
throw axe
s
s
up
w
wave rod
w
take diamonds