rules.mk 1.3 KB

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