Skip to content


In order for the unit tests to be effective, they must cover as much of the codebase as possible. For this reason, Passgen includes some tooling that can be used to compute how much of the codebase is executed by the unit tests. This data is important for writing comprehensive tests.


In order to quickly compute coverage, the root makefile in the repository has a coverage target that creates a temporary build folder with coverage reporting enabled and runs the unit tests.

make coverage

The output of this command will tell you where the generated coverage report is located.

Using CMake

Enabling test coverage requires either the GCC or Clang compilers and having the LLVM coverage tools installed (lcov, llvm-cov, llvm-profdata). Enabling it is done by setting CODE_COVERAGE to a true value.

This enables the ccov-passgen-test target, which runs tests and generates a test coverage report.

make ccov-passgen-test

The resulting coverage is placed in ccov/passgen-test/index.html in the build folder.