blob: ec8053ca938efca341a6b9b4e555745e0d0c2884 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# Code Coverage
Provides an overview of how to use code coverage tools when running the unit
tests in the EC codebase.
[TOC]
## Availability
Code coverage is only available for host-based unit tests, as opposed to manual
tests that run on target hardware.
## Building for code coverage
To build host-based unit tests for code coverage, invoke `make` with the
`coverage` target, as follows:
`make coverage -j`
This target will compile and link the unit tests with `--coverage` flag (which
pulls in the `gcov` libraries), run the tests, and then process the profiling
data into a code coverage report using the `lcov` and `genhtml` tools.
The coverage report top-level page is `build/coverage/coverage_rpt/index.html`.
### Noise in the build output
When building for code coverage, you may see multiple warnings of the form
`geninfo: WARNING: no data found for
/mnt/host/source/src/platform/ec/core/host/cpu.h` and `genhtml: WARNING:
function data mismatch at
/mnt/host/source/src/platform/ec/common/math_util.c:134`
These warnings can be ignored. (FYI, the "function data mismatch" warnings
appear to be caused in part by using relative paths instead of absolute paths.)
## Zephyr ztest code coverage
To build the Zephyr unit tests for code coverage run:
`zmake coverage build/ztest-coverage`
This target will compile, without linking, all zephyr projects with
`CONFIG_COVERAGE` Kconfig option enabled, run the tests, and then process the
profiling data into a code coverage report using the `lcov` and `genhtml`
tools. This requires the `HAS_COVERAGE_SUPPORT` option, which can only be
selected in `Kconfig.board`.
The coverage report top-level page is
`build/ztest-coverage/coverage_rpt/index.html`.
|