simultaneous unit + integration tests
This commit is contained in:
107
Makefile
107
Makefile
@@ -1,10 +1,11 @@
|
||||
SOURCE ?= lithuania-latest.osm.pbf
|
||||
WHERE ?= name like '%'
|
||||
#WHERE ?= name='Visinčia' OR name='Šalčia' OR name='Nemunas' OR name='Žeimena' OR name='Lakaja'
|
||||
WHERE ?= name='Visinčia' OR name='Šalčia' OR name='Nemunas' OR name='Žeimena' OR name='Lakaja'
|
||||
#WHERE ?= name like '%'
|
||||
SLIDES = slides-2021-03-29.pdf
|
||||
|
||||
NON_ARCHIVABLES = notes.txt referatui.txt slides-2021-03-29.txt
|
||||
ARCHIVABLES = $(filter-out $(NON_ARCHIVABLES),$(shell git ls-files .))
|
||||
################################################################
|
||||
# This has to be before first use due to how macros are expanded
|
||||
################################################################
|
||||
|
||||
FIGURES = test-figures \
|
||||
fig8-definition-of-a-bend \
|
||||
@@ -15,19 +16,43 @@ FIGURES = test-figures \
|
||||
fig6-self-crossing-before \
|
||||
fig6-self-crossing-after
|
||||
|
||||
#################################
|
||||
# The thesis, publishable version
|
||||
#################################
|
||||
|
||||
mj-msc-full.pdf: mj-msc.pdf version.inc.tex $(ARCHIVABLES) ## Thesis for publishing
|
||||
cp $< .tmp-$@
|
||||
for f in $^; do \
|
||||
if [ "$$f" = "$<" ]; then continue; fi; \
|
||||
pdfattach .tmp-$@ $$f .tmp2-$@; \
|
||||
mv .tmp2-$@ .tmp-$@; \
|
||||
done
|
||||
mv .tmp-$@ $@
|
||||
|
||||
###############################
|
||||
# Auxiliary targets for humans
|
||||
###############################
|
||||
|
||||
.PHONY: test
|
||||
test: .faux_test
|
||||
test: .faux_test ## Unit tests (fast)
|
||||
|
||||
.PHONY: test-integration
|
||||
test-integration: .faux_filter-rivers
|
||||
./db -f tests-integration.sql
|
||||
test-integration: .faux_test-integration ## Integration tests (slow)
|
||||
|
||||
.PHONY: slides
|
||||
slides: $(SLIDES)
|
||||
|
||||
###########################
|
||||
# The report, quick version
|
||||
###########################
|
||||
|
||||
mj-msc.pdf: mj-msc.tex version.inc.tex vars.inc.tex bib.bib $(addsuffix .pdf,$(FIGURES))
|
||||
latexmk -shell-escape -g -pdf $<
|
||||
|
||||
############################
|
||||
# Report's test dependencies
|
||||
############################
|
||||
|
||||
define FIG_template
|
||||
$(1).pdf: layer2img.py Makefile .faux_test
|
||||
python ./layer2img.py --outfile=$(1).pdf \
|
||||
@@ -72,17 +97,38 @@ fig6-self-crossing-before_3SELECT = wm_visuals where name='fig6-newline'
|
||||
fig6-self-crossing-after_WIDTHDIV = 4
|
||||
fig6-self-crossing-after_1SELECT = wm_debug where name='fig6' AND stage='dcrossings' AND gen=1
|
||||
|
||||
.faux_test: tests.sql wm.sql .faux_db
|
||||
./db -f tests.sql
|
||||
|
||||
.faux_test-integration: tests-integration.sql wm.sql .faux_aggregate-rivers
|
||||
./db -f $<
|
||||
touch $@
|
||||
|
||||
.faux_db:
|
||||
.faux_test: tests.sql wm.sql .faux_db
|
||||
./db -f $<
|
||||
touch $@
|
||||
|
||||
.faux_db: db init.sql
|
||||
./db start
|
||||
./db -f init.sql
|
||||
touch $@
|
||||
|
||||
$(SOURCE):
|
||||
wget http://download.geofabrik.de/europe/$@
|
||||
|
||||
.faux_aggregate-rivers: aggregate-rivers.sql .faux_import-osm Makefile
|
||||
./db -v where="$(WHERE)" -f $<
|
||||
touch $@
|
||||
|
||||
.faux_import-osm: $(SOURCE) .faux_db
|
||||
PGPASSWORD=osm osm2pgsql -c --multi-geometry -H 127.0.0.1 -d osm -U osm $<
|
||||
touch $@
|
||||
|
||||
################################
|
||||
# Report's non-test dependencies
|
||||
################################
|
||||
|
||||
NON_ARCHIVABLES = notes.txt referatui.txt slides-2021-03-29.txt
|
||||
ARCHIVABLES = $(filter-out $(NON_ARCHIVABLES),$(shell git ls-files .))
|
||||
|
||||
REF = $(shell git describe --abbrev=12 --always --dirty)
|
||||
version.inc.tex: Makefile $(shell git rev-parse --git-dir 2>/dev/null)
|
||||
TZ=UTC date '+\gdef\VCDescribe{%F ($(REF))}%' > $@
|
||||
@@ -90,6 +136,16 @@ version.inc.tex: Makefile $(shell git rev-parse --git-dir 2>/dev/null)
|
||||
vars.inc.tex: vars.awk wm.sql Makefile
|
||||
awk -f $< wm.sql
|
||||
|
||||
#####################
|
||||
# Almost never needed
|
||||
#####################
|
||||
|
||||
slides-2021-03-29.pdf: slides-2021-03-29.txt
|
||||
pandoc -t beamer -i $< -o $@
|
||||
|
||||
dump-debug_wm.sql.xz:
|
||||
docker exec -ti wm-mj pg_dump -Uosm osm -t debug_wm | xz -v > $@
|
||||
|
||||
mj-msc-gray.pdf: mj-msc.pdf
|
||||
gs \
|
||||
-sOutputFile=$@ \
|
||||
@@ -101,19 +157,10 @@ mj-msc-gray.pdf: mj-msc.pdf
|
||||
-dBATCH \
|
||||
$<
|
||||
|
||||
mj-msc-full.pdf: mj-msc.pdf version.inc.tex $(ARCHIVABLES)
|
||||
cp $< .tmp-$@
|
||||
for f in $^; do \
|
||||
if [ "$$f" = "$<" ]; then continue; fi; \
|
||||
pdfattach .tmp-$@ $$f .tmp2-$@; \
|
||||
mv .tmp2-$@ .tmp-$@; \
|
||||
done
|
||||
mv .tmp-$@ $@
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
clean: ## Clean the current working directory
|
||||
-./db stop
|
||||
-rm -r .faux_test .faux_filter-rivers .faux_import-osm .faux_db \
|
||||
-rm -r .faux_test .faux_aggregate-rivers .faux_import-osm .faux_db \
|
||||
version.inc.tex vars.inc.tex version.aux version.fdb_latexmk \
|
||||
_minted-mj-msc \
|
||||
$(shell git ls-files -o mj-msc*) \
|
||||
@@ -121,22 +168,12 @@ clean:
|
||||
$(SLIDES)
|
||||
|
||||
.PHONY: clean-tables
|
||||
clean-tables:
|
||||
clean-tables: ## Remove tables created during unit or integration tests
|
||||
for t in $$(./db -c '\dt' | awk '/\ywm_\w+\y/{print $$3}'); do \
|
||||
./db -c "drop table $$t"; \
|
||||
done
|
||||
-rm .faux_test
|
||||
|
||||
.faux_filter-rivers: aggregate-rivers.sql .faux_import-osm Makefile
|
||||
./db -v where="$(WHERE)" -f $<
|
||||
touch $@
|
||||
|
||||
.faux_import-osm: $(SOURCE) .faux_db
|
||||
PGPASSWORD=osm osm2pgsql -c --multi-geometry -H 127.0.0.1 -d osm -U osm $<
|
||||
touch $@
|
||||
|
||||
slides-2021-03-29.pdf: slides-2021-03-29.txt
|
||||
pandoc -t beamer -i $< -o $@
|
||||
|
||||
dump-debug_wm.sql.xz:
|
||||
docker exec -ti wm-mj pg_dump -Uosm osm -t debug_wm | xz -v > $@
|
||||
.PHONY: help
|
||||
help: ## Print this help message
|
||||
@awk -F':.*?## ' '/^[a-z0-9.-]*: *.*## */{printf "%-18s %s\n",$$1,$$2}' $(MAKEFILE_LIST)
|
||||
|
||||
Reference in New Issue
Block a user