You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by va...@apache.org on 2026/04/21 04:09:17 UTC
(couchdb-jiffy) 06/49: Add C coverage checks
This is an automated email from the ASF dual-hosted git repository.
nickva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/couchdb-jiffy.git
commit 0435946bdf84fdeb095f8ffc1257379a1d817327
Author: Nick Vatamaniuc <va...@gmail.com>
AuthorDate: Mon Mar 30 22:15:02 2026 -0400
Add C coverage checks
Use gcov for coverage checks and lcov for report generation while running the
full test suite, including all the property tests.
This seems to work on Ubuntu and on MacOS. In CI we'll go with Ubuntu and run
it as one job for now. We don't fail on low coverage, instead we'll track it
manually by comparing with previous runs. This mostly helpful to run locally,
as lcov html report is pretty and intuitive to browse through.
Noticed Windows CI kept failing. Trying the next highest Windows version, maybe
that will succeed.
---
.github/workflows/ci.yml | 15 ++++++++++++++-
.gitignore | 5 +++++
Makefile | 18 +++++++++++++++++-
3 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index aa40a20..4cbec22 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -55,6 +55,19 @@ jobs:
run: |
make REBAR=rebar3 check-with-eqc
+ lcov-coverage:
+ name: lcov-coverage
+ runs-on: ubuntu-latest
+ container:
+ image: erlang:28
+ steps:
+ - uses: actions/checkout@v6
+ - name: install lcov
+ run: |
+ apt update
+ apt install -y --no-install-recommends --no-install-suggests lcov
+ make REBAR=rebar3 coverage
+
gcc-14:
name: gcc-14
runs-on: ubuntu-latest
@@ -113,7 +126,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- os: [windows-2022]
+ os: [windows-2022, windows-2025]
steps:
- name: prevent git from messing up our json test files
diff --git a/.gitignore b/.gitignore
index c98ce03..590e2b1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,5 +16,10 @@ hexer.config
rebar.lock
TEST-*.xml
/eqc/
+coverage.info
+coverage-jiffy.info
+coverage-html/
.eqc-info
current_counterexample.eqc
+*.gcda
+*.gcno
diff --git a/Makefile b/Makefile
index 5f48efb..0a88ae6 100644
--- a/Makefile
+++ b/Makefile
@@ -11,6 +11,9 @@ clean:
rm -f test/*.beam
rm -rf eqc
rm -rf _build
+ rm -f c_src/*.gcno c_src/*.gcda c_src/double-conversion/*.gcno c_src/double-conversion/*.gcda
+ rm -f coverage.info coverage-jiffy.info
+ rm -rf coverage-html
distclean: clean
@@ -32,6 +35,19 @@ check-with-eqc: install_eqc build eunit
install_eqc:
./test/install_eqc_mini.sh
+# macos:
+# brew install lcov on macos
+# ubuntu:
+# sudo apt install --no-install-recommends lcov
+#
+coverage:
+ $(MAKE) clean
+ CFLAGS="--coverage -O0" CXXFLAGS="--coverage -O0" LDFLAGS="--coverage" $(MAKE) check-with-eqc
+ @lcov --capture --directory c_src -o coverage.info --ignore-errors inconsistent,unsupported
+ @lcov --extract coverage.info '*/c_src/*' --exclude '*/double-conversion/*' -o coverage-jiffy.info --ignore-errors inconsistent,unsupported
+ @genhtml coverage-jiffy.info -o coverage-html --title "jiffy lcov report"
+ @echo "For coverage report: open coverage-html/index.html"
+
release:
rebar3 hex publish
@@ -40,4 +56,4 @@ release:
erlc -o test/ $<
-.PHONY: all clean distclean depends build etap eunit check
+.PHONY: all clean distclean depends build etap eunit check coverage