blob: c8a30bd25365f8b2a66152e89162769a92c3dbc0 (
plain)
- SHELL=/bin/bash
- TESTDIR ?= *
- PATT ?= .
- TESTS=$(shell ls $(TESTDIR)/*.markdown | grep $(PATT))
- DIFFS=$(patsubst %.markdown,%.diff,$(TESTS))
- PROG ?= ../stmd
- FILTER ?= perl -pe 's/ /␣/g'
- TIDYCMD ?= tidy -asxhtml -utf8 --show-body-only yes --show-warnings no -quiet
- DETAILS ?= 1
- # Check to see if echo supports -e option to allow backslash escapes
- ifeq ($(shell echo -e),-e)
- ECHO=echo
- else
- ECHO=echo -e
- endif
- all: $(DIFFS)
- PASS=0;TESTS=0; \
- for f in $(DIFFS); do \
- let TESTS=TESTS+1; \
- [ -s $$f ] || let PASS=PASS+1; \
- done; \
- $(ECHO) "\033[1m$$PASS of $$TESTS tests passed.\033[0m"; \
- if [ $$TESTS -eq $$PASS ]; then exit 0; else exit 1; fi
- %.actual.html: %.markdown
- ifeq ($(TIDY),1)
- -cat $< | $(PROG) | $(TIDYCMD) > $@
- else
- -cat $< | $(PROG) > $@
- endif
- %.expected.html: %.html
- ifeq ($(TIDY),1)
- -$(TIDYCMD) $< > $@
- else
- cp $< $@
- endif
- %.diff: %.expected.html %.actual.html
- diff --unified=1 <(cat $(word 1,$^) | $(FILTER)) <(cat $(word 2,$^) | $(FILTER)) > $@ ; \
- if [ -s $@ ]; then \
- $(ECHO) "\033[1;31m✘ $(patsubst %.diff,%,$@)\033[0m"; \
- if [ $(DETAILS) == "1" ]; then \
- $(ECHO) "\033[0;36m" ; cat $@; $(ECHO) "\033[0m"; \
- fi \
- else \
- $(ECHO) "\033[1;32m✓ $(patsubst %.diff,%,$@)\033[0m"; \
- fi
- .PHONY: all clean
- clean:
- -@rm */*.{diff,actual.html,expected.html}
|