xref: /btstack/test/Makefile (revision cfd54eb73cd29e7bf738f261fb454a84a1bb66b0)
1
2# Makefile to build and run all tests
3
4SUBDIRS =  \
5	att_db \
6	avdtp \
7	avdtp_util \
8	base64 \
9	ble_client \
10	btstack_link_key_db \
11	crypto \
12	des_iterator \
13	flash_tlv \
14	gatt_client \
15	gap \
16	hfp \
17	hid_parser \
18	linked_list \
19	map_test \
20	mesh \
21	obex \
22	ring_buffer \
23	sdp \
24	sdp_client \
25	security_manager \
26	tlv_posix \
27	security_manager_sc \
28
29# not testing anything in source tree
30#	maths \
31# no unit tests
32#	embedded \
33#	gatt_server \
34
35# flash_tlv also contains btstack_linked_key_db tests
36
37SUBDIRS_BLE = \
38	att_db \
39	ble_client \
40	crypto \
41	gatt_client \
42	gap \
43	hid_parser \
44	linked_list \
45	ring_buffer \
46	security_manager \
47	security_manager_sc \
48#	tlv_posix \
49
50# test fails
51
52# not unit-tests
53# avrcp \
54# map_client \
55# sbc \
56#	gatt_server \
57
58.PHONY: coverage
59
60subdirs:
61	echo Building all tests
62	@set -e; \
63	for dir in $(SUBDIRS); do \
64	  $(MAKE) -C $$dir; \
65	done
66
67clean:
68	echo Clean all test
69	@set -e; \
70	for dir in $(SUBDIRS); do \
71	  $(MAKE) -C $$dir clean; \
72	done
73
74test:
75	echo Run all test
76	@set -e; \
77	for dir in $(SUBDIRS); do \
78	  $(MAKE) -C $$dir test; \
79	done
80
81test-ble:
82	echo Run all BLE tests
83	@set -e; \
84	for dir in $(SUBDIRS_BLE); do \
85	  $(MAKE) -C $$dir test; \
86	done
87
88test-coverage-ble: subdirs
89	# delete trace data
90	find . -name "*.gcda" -type f -delete
91	# run tests
92	$(MAKE) test-ble
93	# collect traces
94	lcov --capture --rc lcov_branch_coverage=1 --directory . --exclude "/Applications/*" --exclude "/Library/*" --exclude "/usr/*" --exclude "*/test/*" --output-file coverage-unit-ble.info
95	# demangle
96	python3 coverage_demangle.py coverage-unit-ble.info
97
98test-coverage: subdirs
99	# delete trace data
100	find . -name "*.gcda" -type f -delete
101	# run tests
102	$(MAKE) test
103	# collect traces
104	lcov --capture --rc lcov_branch_coverage=1 --directory . --exclude "/Applications/*" --exclude "/Library/*" --exclude "/usr/*" --exclude "*/test/*" --output-file coverage-unit.info
105	# demangle
106	python3 coverage_demangle.py coverage-unit.info
107
108coverage: test-coverage test-coverage-ble
109	# download pts coverage and fix paths
110	curl https://bluekitchen-gmbh.com/btstack/develop/coverage-pts.info | sed 's|buildbot-worker/auto-pts/btstack|buildbot-worker/test-develop/build|' > coverage-pts.info
111
112	# combine unit[-ble] and pts
113	lcov --rc lcov_branch_coverage=1 -a coverage-pts.info -a coverage-unit.info     --output-file coverage.info
114	lcov --rc lcov_branch_coverage=1 -a coverage-pts.info -a coverage-unit-ble.info --output-file coverage-ble.info
115
116	# create bat subset from ble subset
117	./coverage_subset_bat.py coverage-ble.info      coverage-bat.info
118	./coverage_subset_bat.py coverage-unit-ble.info coverage-unit-bat.info
119
120	./coverage_subset_bat.py coverage-pts.info coverage-pts-bat.info
121
122	# generate html output
123	genhtml coverage-unit.info     --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-unit
124	genhtml coverage-unit-bat.info --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-unit-bat
125	genhtml coverage-bat.info      --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-bat
126	genhtml coverage.info          --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage
127	genhtml coverage-pts-bat.info  --branch-coverage --demangle-cpp --config-file lcovrc --output-directory coverage-pts-bat
128