summaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
authorDenys Fedoryshchenko <denys.f@collabora.com>2026-08-08 19:19:13 +0300
committerDenys Fedoryshchenko <denys.f@collabora.com>2026-08-08 19:19:13 +0300
commit60702f40ac55d474ce26bd8e1d904feb9e5f160f (patch)
treecc933c45760f1848f65be5c2e3adc2bedfc32a70 /.github/workflows
parent9015abafb60f950a6b1a800f84cbf569b07828a1 (diff)
downloadaccel-ppp-60702f40ac55d474ce26bd8e1d904feb9e5f160f.tar.gz
accel-ppp-60702f40ac55d474ce26bd8e1d904feb9e5f160f.zip
ci: survive the negative branch counters gcov reports
The coverage job fails while gcovr reads the data for triton.c: Unrecognized GCOV output ... branch 2 taken -1 NegativeHits: Got negative hit value in gcov line 'branch 2 taken -1' gcov emits those now and then, it is gcc bug 68080 and not something the source can avoid. gcovr 6 and later treat it as a fatal parse error unless --gcov-ignore-parse-errors names the case to tolerate. Passing that option unconditionally is not enough, since the job runs on both ubuntu-24.04 and ubuntu-22.04 and the gcovr in the latter predates it and takes no value. Ask gcovr whether it knows the option before adding it, and print what was decided so the log says which one ran.
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/run-tests.yml14
1 files changed, 11 insertions, 3 deletions
diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml
index 10f238cc..7ce55b6e 100644
--- a/.github/workflows/run-tests.yml
+++ b/.github/workflows/run-tests.yml
@@ -484,9 +484,17 @@ jobs:
- name: Generate coverage reports (default(txt), csv, html)
run: |
mkdir -p tests/report
- gcovr --config=tests/gcovr.conf --output=tests/report/accel-ppp.txt
- gcovr --config=tests/gcovr.conf --csv --output=tests/report/accel-ppp.csv
- gcovr --config=tests/gcovr.conf --html --html-details --output=tests/report/accel-ppp.html
+ # gcov reports negative branch counters now and then (gcc bug 68080).
+ # gcovr 6 and later stop with a parse error unless told to carry on,
+ # older ones do not know the option at all, so ask before using it.
+ IGNORE=""
+ if gcovr --help 2>&1 | grep -q negative_hits; then
+ IGNORE="--gcov-ignore-parse-errors=negative_hits.warn_once_per_file"
+ fi
+ echo "gcovr `gcovr --version | head -1`, extra options: '$IGNORE'"
+ gcovr --config=tests/gcovr.conf $IGNORE --output=tests/report/accel-ppp.txt
+ gcovr --config=tests/gcovr.conf $IGNORE --csv --output=tests/report/accel-ppp.csv
+ gcovr --config=tests/gcovr.conf $IGNORE --html --html-details --output=tests/report/accel-ppp.html
- name: Show default coverage report
run: cat tests/report/accel-ppp.txt