xref: /btstack/test/Makefile (revision ffdafca3f4980f6840d8a458f58e78d463bb46d7)
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# not testing anything in source tree
28#	maths \
29# no unit tests
30#	embedded \
31#	gatt_server \
32
33# flash_tlv also contains btstack_linked_key_db tests
34
35SUBDIRS_BLE = \
36	att_db \
37	ble_client \
38	crypto \
39	gatt_client \
40	gap \
41	hid_parser \
42	linked_list \
43	ring_buffer \
44	security_manager \
45#	tlv_posix \
46
47# test fails
48
49# not unit-tests
50# avrcp \
51# map_client \
52# sbc \
53#	gatt_server \
54
55.PHONY: coverage
56
57subdirs:
58	echo Building all tests
59	@set -e; \
60	for dir in $(SUBDIRS); do \
61	  $(MAKE) -C $$dir; \
62	done
63
64clean:
65	echo Clean all test
66	@set -e; \
67	for dir in $(SUBDIRS); do \
68	  $(MAKE) -C $$dir clean; \
69	done
70
71test:
72	echo Run all test
73	@set -e; \
74	for dir in $(SUBDIRS); do \
75	  $(MAKE) -C $$dir test; \
76	done
77
78test-ble:
79	echo Run all BLE tests
80	@set -e; \
81	for dir in $(SUBDIRS_BLE); do \
82	  $(MAKE) -C $$dir test; \
83	done
84
85test-coverage-ble: subdirs
86	# delete trace data
87	find . -name "*.gcda" -type f -delete
88	# run tests
89	$(MAKE) test-ble
90	# collect traces
91	lcov --capture --rc lcov_branch_coverage=1 --directory . --exclude "/Applications/*" --exclude "/Library/*" --exclude "/usr/*" --exclude "*/test/*" --output-file coverage-unit-ble.info
92	# demangle
93	python3 coverage_demangle.py coverage-unit-ble.info
94
95test-coverage: subdirs
96	# delete trace data
97	find . -name "*.gcda" -type f -delete
98	# run tests
99	$(MAKE) test
100	# collect traces
101	lcov --capture --rc lcov_branch_coverage=1 --directory . --exclude "/Applications/*" --exclude "/Library/*" --exclude "/usr/*" --exclude "*/test/*" --output-file coverage-unit.info
102	# demangle
103	python3 coverage_demangle.py coverage-unit.info
104
105coverage: test-coverage test-coverage-ble
106	# download pts coverage and fix paths
107	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
108
109	# combine unit[-ble] and pts
110	lcov --rc lcov_branch_coverage=1 -a coverage-pts.info -a coverage-unit.info     --output-file coverage.info
111	lcov --rc lcov_branch_coverage=1 -a coverage-pts.info -a coverage-unit-ble.info --output-file coverage-ble.info
112
113	# create bat subset from ble subset
114	./coverage_subset_bat.py coverage-ble.info      coverage-bat.info
115	./coverage_subset_bat.py coverage-unit-ble.info coverage-unit-bat.info
116
117	./coverage_subset_bat.py coverage-pts.info coverage-pts-bat.info
118
119	# generate html output
120	genhtml coverage-unit.info     --branch-coverage --demangle-cpp --output-directory coverage-unit
121	genhtml coverage-unit-bat.info --branch-coverage --demangle-cpp --output-directory coverage-unit-bat
122	genhtml coverage-bat.info      --branch-coverage --demangle-cpp --output-directory coverage-bat
123	genhtml coverage.info          --branch-coverage --demangle-cpp --output-directory coverage
124	genhtml coverage-pts-bat.info  --branch-coverage --demangle-cpp --output-directory coverage-pts-bat
125