rules.mk 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. TESTS=$(sort $(wildcard tests/test_*.py))
  2. COVERAGE_OUTPUT_DIR := coverage
  3. PROFILER_OUTPUT_DIR := profiles
  4. OMIT := /usr/share/pyshared/*,external/*
  5. RM=rm -rf
  6. ifeq ($(findstring python-coverage,$(wildcard /usr/bin/*)), python-coverage)
  7. COVERAGE=/usr/bin/python-coverage
  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)
  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. ${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. ${COVERAGE} --omit ${OMIT} -x test.py $$t; \
  31. ${COVERAGE} --omit ${OMIT} -c; \
  32. done
  33. ${COVERAGE} html --omit ${OMIT} --dir ${COVERAGE_OUTPUT_DIR}
  34. endif
  35. ${COVERAGE}:
  36. @echo "Install package 'python-coverage' to generate a coverage report."
  37. @echo "On Debian/Ubuntu use: sudo apt-get install python-coverage"; false
  38. $(TESTS): build
  39. @python -m external.testrunner $@
  40. profile-test-%: $(PROFILER_OUTPUT_DIR) build
  41. python -m cProfile -s cumulative \
  42. -o $(PROFILER_OUTPUT_DIR)/tests_test_$*.py.profile test.py tests/test_$*.py
  43. profile-test-view-%: $(PROFILER_OUTPUT_DIR) build
  44. python utils/view_profile.py "$(PROFILER_OUTPUT_DIR)/tests_test_$*.py.profile"
  45. profile-src%: $(PROFILER_OUTPUT_DIR) build
  46. python -m cProfile -s cumulative \
  47. -o $(PROFILER_OUTPUT_DIR)/src_$*.py.profile src/$*.py
  48. profile-src-view-%: $(PROFILER_OUTPUT_DIR) build
  49. python utils/view_profile.py "$(PROFILER_OUTPUT_DIR)/src_$*.py.profile"
  50. profile-%: $(PROFILER_OUTPUT_DIR) build
  51. python -m cProfile -s cumulative \
  52. -o $(PROFILER_OUTPUT_DIR)/$*.py.profile $*.py
  53. profile-view-%: $(PROFILER_OUTPUT_DIR) build
  54. python utils/view_profile.py "$(PROFILER_OUTPUT_DIR)/$*.py.profile"