rules.mk 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. TESTS=$(wildcard tests/test_*.py)
  2. COVERAGE_OUTPUT_DIR := coverage
  3. OMIT := /usr/share/pyshared/*
  4. RM=rm -rf
  5. ifeq ($(findstring python-coverage,$(wildcard /usr/bin/*)), python-coverage)
  6. COVERAGE=/usr/bin/python-coverage
  7. else
  8. COVERAGE=/usr/bin/coverage
  9. endif
  10. .PHONY: test coverage $(TESTS)
  11. test: $(TESTS) build
  12. ifeq ($(findstring python-coverage,$(wildcard /usr/bin/*)), python-coverage)
  13. coverage: ${COVERAGE} build
  14. ${COVERAGE} erase
  15. ${RM} ${COVERAGE_OUTPUT_DIR}/*
  16. mkdir ${COVERAGE_OUTPUT_DIR} 2>/dev/null || true
  17. for t in ${TESTS}; do \
  18. echo $$t; \
  19. ${COVERAGE} -x test.py $$t; \
  20. ${COVERAGE} combine; \
  21. done
  22. ${COVERAGE} html --omit=${OMIT} -d ${COVERAGE_OUTPUT_DIR}
  23. else
  24. coverage: ${COVERAGE} build
  25. mkdir ${COVERAGE_OUTPUT_DIR} 2>/dev/null || true
  26. ${COVERAGE} erase
  27. for t in ${TESTS}; do \
  28. echo $$t; \
  29. ${COVERAGE} --omit ${OMIT} -x test.py $$t; \
  30. ${COVERAGE} --omit ${OMIT} -c; \
  31. done
  32. ${COVERAGE} html --omit ${OMIT} --dir ${COVERAGE_OUTPUT_DIR}
  33. endif
  34. ${COVERAGE}:
  35. @echo "Install package 'python-coverage' to generate a coverage report."
  36. @echo "On Debian/Ubuntu use: sudo apt-get install python-coverage"; false
  37. $(TESTS): build; @python -m testrunner $@