X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=tests%2FMakefile;h=7256b19ee4cecf1b85b5c89ab097ac98ac5adf38;hb=refs%2Ftags%2F1.10;hp=11083b8b80039a1f58a6710618dbff1e567b28c9;hpb=21c36003cdd1bae2291311d5e2bc6d98383f72fa;p=open-adventure.git diff --git a/tests/Makefile b/tests/Makefile index 11083b8..7256b19 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,9 +1,10 @@ -# Test-suite makefile for reposurgeon +# Test-suite makefile for opeb-adventure # 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} +PARDIR=$(realpath ..) +PATH := $(PARDIR):$(realpath .):${PATH} GCOV?=gcov # Make this overrideable so it's easier to test old versions @@ -24,9 +25,9 @@ check: savecheck regress @-advent -l /dev/null /dev/null coverage: check - lcov -t "advent" -o ../advent.info -c -d .. --gcov-tool=$(GCOV) - genhtml -o ../coverage/ ../advent.info - python3 coverage_dungeon.py + lcov -t "advent" -o $(PARDIR)/advent.info -c -d $(PARDIR) --gcov-tool=$(GCOV) + genhtml -o $(PARDIR)/coverage/ $(PARDIR)/advent.info + ./coverage_dungeon.py .SUFFIXES: .chk @@ -43,22 +44,24 @@ listcheck: # Generate bogus savegames. savegames: + @$(ECHO) "cheat: Generate save file with -900 deaths" + @$(PARDIR)/cheat -d -900 -o cheat_numdie.adv > /tmp/cheat_numdie @$(ECHO) "cheat: Generate save file with -1000 deaths" - @../cheat -d -1000 -o cheat_numdie.adv > /tmp/cheat_numdie + @$(PARDIR)/cheat -d -1000 -o cheat_numdie1000.adv > /tmp/cheat_numdie1000 @$(ECHO) "cheat: Generate save file with version -1337" - @../cheat -v -1337 -o resume_badversion.adv > /tmp/cheat_badversion + @$(PARDIR)/cheat -v -1337 -o resume_badversion.adv > /tmp/cheat_badversion @$(ECHO) "cheat: Generate save file 1000 saves" - @../cheat -s -1000 -o thousand_saves.adv > /tmp/cheat_1000saves + @$(PARDIR)/cheat -s -1000 -o thousand_saves.adv > /tmp/cheat_1000saves @$(ECHO) "cheat: Generate save file 1000 turns" - @../cheat -t -1000 -o thousand_saves.adv > /tmp/cheat_1000turns + @$(PARDIR)/cheat -t -1000 -o thousand_saves.adv > /tmp/cheat_1000turns @$(ECHO) "cheat: Generate save file 1000 turns" - @../cheat -l -1000 -o thousand_lamp.adv > /tmp/cheat_1000lamp + @$(PARDIR)/cheat -l -1000 -o thousand_lamp.adv > /tmp/cheat_1000lamp @rm -f /tmp/cheat* # Rebuild characterizing tests buildregress: savegames - ../cheat -s -1000 -o thousand_saves.adv > /tmp/regress1000saves + $(PARDIR)/cheat -s -1000 -o thousand_saves.adv > /tmp/regress1000saves @for file in $(TESTLOADS); do \ echo "Remaking $${file}.chk"; \ OPTS=`sed -n /#options:/s///p <$${file}.log`; \ @@ -68,13 +71,13 @@ buildregress: savegames savecheck: savegames @$(ECHO) "TEST cheat: Bogus option for save file generation" - @../cheat -QqQ 2> /tmp/coverage_cheat_batopt | true + @$(PARDIR)/cheat -QqQ 2> /tmp/coverage_cheat_batopt | true @$(ECHO) "TEST cheat: No save file specified" - @../cheat 2>/dev/null | true + @$(PARDIR)/cheat 2>/dev/null | true @$(ECHO) "TEST cheat: Fail to save because we omit -o" - @../cheat -d 1 2> /tmp/coverage_cheat_nooutput | true + @$(PARDIR)/cheat -d 1 2> /tmp/coverage_cheat_nooutput | true @$(ECHO) "TEST cheat: Fail to save to invalid path" - @../cheat -o / 2> /tmp/coverage_cheat_badoutput | true + @$(PARDIR)/cheat -o / 2> /tmp/coverage_cheat_badoutput | true @$(ECHO) "TEST advent: Start with invalid file with -r" @advent -r /badfilename < pitfall.log > /tmp/coverage_advent_readfail 2>&1 || exit 1 @$(ECHO) "TEST advent: Start with invalid file with -l" @@ -95,4 +98,26 @@ regress: done; \ rm -f scratch.tmp /tmp/regress$$$$ +# Steps towards TAP and parallelization. +# There's a blocker in that the log tests can't be run concurrently +# due to isssues with colliding save files. + +# The TAP filter. Only affects presentation of the test suite messages +TAPCONSUMER=tappy + +# Fall back to safety if our declared TAP consumer does not exist. +# This is helpful in the CI environment, where it wiuld be better for +# the logfiles to carry the raw TAP messages. +TAPFILTER=$(shell command -v $(TAPCONSUMER) || echo cat) + +RUN_TARGETS=$(TESTLOADS:%=run-regress-%) +$(RUN_TARGETS): run-regress-%: %.log + @(test=$(<:.log=); legend=$$(sed -n '/^## /s///p' <"$<" 2>/dev/null || echo "(no description)"); \ + OPTS=`sed -n /#options:/s///p $<`; \ + $(advent) $$OPTS <$< | tapdiffer "$<: $${legend}" "$${test}.chk") + +tap: savecheck count $(RUN_TARGETS) +count: + @echo 1..$(words $(RUN_TARGETS)) + # end