diff --git a/tools/testing/unittest/Makefile b/tools/testing/unittest/Makefile index c923ae5f39736e6ea46fd2cb4f0475c1c0319722..e55df8ef79b6c0248a291f51894ec573218d57ed 100644 --- a/tools/testing/unittest/Makefile +++ b/tools/testing/unittest/Makefile @@ -6,14 +6,13 @@ TARGETS += sysctl # Makefile to avoid test build failures when test # Makefile doesn't have explicit build rules. -CFLAGS += -fprofile-arcs -ftest-coverage + +export CFLAGS = -fprofile-arcs -ftest-coverage +export LDFLAGS = -lgcov --coverage ifeq (1,$(MAKELEVEL)) -override LDFLAGS = override MAKEFLAGS = else -export CFLAGS -export LDFLAGS = -lgcov --coverage endif @@ -26,9 +25,20 @@ run_tests: all for TARGET in $(TARGETS); do \ make -C $$TARGET run_tests; \ done; -clean: + +coverage_tests: all + for TARGET in $(TARGETS); do \ + make -C $$TARGET coverage_tests; \ + done; + +clean_coverage: + for TARGET in $(TARGETS); do \ + make -C $$TARGET clean_coverage; \ + done; + +clean: clean_coverage for TARGET in $(TARGETS); do \ make -C $$TARGET clean; \ done; -.PHONY: install +.PHONY: diff --git a/tools/testing/unittest/lib.mk b/tools/testing/unittest/lib.mk index 479fc114336d1163b560179dc0d176c282b36da3..f0fffdbf0c3cc7d95d662591aadf38e3e31844c6 100644 --- a/tools/testing/unittest/lib.mk +++ b/tools/testing/unittest/lib.mk @@ -16,13 +16,24 @@ endef run_tests: all $(RUN_TESTS) -define EMIT_TESTS +define COVERAGE_TESTS @for TEST in $(TEST_PROGS); do \ - echo "(./$$TEST && echo \"selftests: $$TEST [PASS]\") || echo \"selftests: $$TEST [FAIL]\""; \ + lcov --rc lcov_branch_coverage=1 --capture --directory ./ --output-file coverage.info; \ + genhtml --branch-coverage coverage.info --output-directory out; \ done; endef -emit_tests: - $(EMIT_TESTS) +coverage_tests: run_tests + $(COVERAGE_TESTS) -.PHONY: run_tests all clean emit_tests + +define CLEAN_COVERAGE + @for TEST in $(TEST_PROGS); do \ + $(RM) -r $$TEST $$TEST.gcno $$TEST.gcda coverage.info out/; \ + done; +endef + +clean_coverage: + $(CLEAN_COVERAGE) + +.PHONY: run_tests all clean coverage_tests clean_coverage