Enable branch coverage with --rc lcov_branch_coverage=1.
This provides more detailed coverage metrics:
- Line coverage: % of code lines executed
- Function coverage: % of functions called
- Branch coverage: % of if/else/switch branches taken
Branch coverage is a step towards MC/DC (Modified Condition/Decision Coverage)
used in safety-critical systems.
Also add coverage/ to .gitignore.
The code is built in /usr/src/profanity/ inside Docker, so
excluding '/usr/*' removes all source files!
Fix: exclude only system headers/libs (/usr/include/*, /usr/lib/*),
not the entire /usr/ tree.
Also add --ignore-errors empty to handle edge cases.
- Add --enable-coverage option to configure.ac
- Add coverage and coverage-html targets to Makefile.am
- Add coverage CI job with Codecov upload
- Add lcov to all Dockerfiles (arch, debian, fedora, tumbleweed, ubuntu)
Usage:
./configure --enable-coverage
make check
make coverage-html
Introduce separate jobs to test C (Doxygen) and Python (Sphinx) API documentation generation. Ensures build failures are caught early, as API changes often produce warnings that developers miss without automated checks.
Current setup of the infratstrcture with DIND
was causing issues with volume binding,
leading to a false-positive error on code formatting check.
This commit addresses the issue by removing dependency on a container,
but at the same time it limits choice of formatting version.
This fix does not address the underlying issue with the architecture.
As an additional change, package versions are updated.
TW curently has problems:
```
Problem: the to be installed sqlite3-devel-3.39.2-1.2.x86_64 requires 'libsqlite3-0 = 3.39.2', but this requirement cannot be provided
not installable providers: libsqlite3-0-3.39.2-1.2.i586[repo-oss]
libsqlite3-0-3.39.2-1.2.x86_64[repo-oss]
```
This reverts commit 5c5c453219.
And removes the old python(2) pull in.
For some reason we get:
`Package python3-embed was not found in the pkg-config search path.`
with python38-devel but not with python310-devel. Let's bump it to that
version.
Until they fixed this:
```
Problem: the to be installed ncurses-devel-6.3.20220604-20.1.x86_64 requires 'libncurses6 = 6.3.20220604-20.1', but this requirement cannot be provided
Problem: the to be installed gtk2-devel-2.24.33-2.8.x86_64 requires 'pkgconfig(cairo)', but this requirement cannot be provided
Problem: the to be installed ncurses-devel-6.3.20220604-20.1.x86_64 requires 'libncurses6 = 6.3.20220604-20.1', but this requirement cannot be provided
not installable providers: libncurses6-6.3.20220604-20.1.i586[repo-oss]
libncurses6-6.3.20220604-20.1.x86_64[repo-oss]
Solution 1: downgrade of libncurses6-6.3.20220604-20.2.x86_64 to libncurses6-6.3.20220604-20.1.x86_64
Solution 2: do not install ncurses-devel-6.3.20220604-20.1.x86_64
Solution 3: break ncurses-devel-6.3.20220604-20.1.x86_64 by ignoring some of its dependencies
```