rules.mk 1.3 KB

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