All checks were successful
CI / Packaging - Kali Linux (pull_request) Successful in 4m3s
CI / Packaging - OpenSUSE Tumbleweed (pull_request) Successful in 4m2s
CI / Packaging test (pull_request) Successful in 0s
CI / Packaging - Kali Linux (push) Successful in 4m16s
CI / Packaging - OpenSUSE Tumbleweed (push) Successful in 3m51s
CI / Packaging test (push) Successful in 0s
Running "make clean" in some directories can break "make test" in others. That notably happens by running clean somewhere in or below $(TOPDIR)/src/python, which removes __init__.py files potentially needed by unit and integration tests in $(TOPDIR)/test. This commit makes the failure easily visible by introducing the notion of "testabiltity" - if the tree is not testable, "make test" logs exactly that in a clear error message and gives up. Makefiles which need to check "testability" can use it as a prerequisite. This commit does that with py-run.mk and jw-py-test.mk. Testability is asserted by running "make", "make all" or "make test" from $(TOPDIR). A successful toplevel build coincides with testability, and leaves a $(TOPDIR)/dirs-all.done behind, which is why that file is the perfect testability marker. It is automatically created by a toplevel build and cleared by using the "invalidate-testability" prerequisite. This commit makes target "clean" depend on it in py-mod.mk. To be extended to other use cases / makefile snippets as needed. Signed-off-by: Jan Lindemann <jan@janware.com>
24 lines
555 B
Makefile
24 lines
555 B
Makefile
include $(JWBDIR)/make/defs.mk
|
|
include $(JWBDIR)/make/py-defs.mk
|
|
include $(JWBDIR)/make/test-guard.mk
|
|
|
|
EXE ?= $(firstword $(wildcard main.py runme.py test.py *.py))
|
|
EXE_ARGS ?=
|
|
PYTHON_RUNNER ?= $(PYTHON)
|
|
|
|
all:
|
|
install:
|
|
clean:
|
|
distclean:
|
|
test: all testability
|
|
|
|
run:
|
|
$(PYTHON_RUNNER) $(EXE) $(EXE_ARGS)
|
|
|
|
run.sh:
|
|
echo -e "#!/bin/bash\n\nexport PYTHONPATH=$(PYTHONPATH)\nset -x\nexec $(PYTHON) $(EXE)" '"$$@"' > $@.tmp
|
|
chmod 755 $@.tmp
|
|
mv $@.tmp $@
|
|
clean.py-run:
|
|
rm -rf run.sh
|
|
clean: clean.py-run
|