]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Report coverage with gcovr
authorMichal Nowak <mnowak@isc.org>
Tue, 4 Aug 2020 18:09:09 +0000 (20:09 +0200)
committerMichal Nowak <mnowak@isc.org>
Mon, 17 Aug 2020 15:09:16 +0000 (17:09 +0200)
.gitlab-ci.yml

index bf5727775aefc3172e149e99d758fb2723fb878f..01148f34367a63e545162556ba0e4f9598abaa8e 100644 (file)
@@ -1367,3 +1367,42 @@ abi-check:
   only:
     - main@isc-projects/bind9
     - /^v9_[1-9][0-9]$/@isc-projects/bind9
+
+gcov:
+  <<: *base_image
+  stage: build
+  needs:
+    - job: autoreconf
+      artifacts: true
+  variables:
+    CC: gcc
+    CFLAGS: "${CFLAGS_COMMON} --coverage -O0"
+    EXTRA_CONFIGURE: "--enable-dnstap --with-libidn2"
+  script:
+    - *configure
+    - *setup_interfaces
+    - *setup_softhsm
+    - make -j${BUILD_PARALLEL_JOBS:-1} -k all V=1
+    - make -k unit || true
+    - make -C bin/tests/system -j${TEST_PARALLEL_JOBS:-1} -k test V=1 || true
+    # *.gcno and *.gcda files generated for shared library objects are created
+    # in directories in which gcovr is unable to process them properly
+    # (.../.libs/...).  Move such *.gcno and *.gcda files one level higher.
+    - find . -regex ".*/\.libs/.*\.\(gcda\|gcno\)" -execdir mv "{}" .. \;
+    # Help gcovr process the nasty tricks in lib/dns/code.h, where we include C
+    # source files from lib/dns/rdata/*/, using an even nastier trick.
+    - find lib/dns/rdata/* -name "*.c" -execdir cp -f "{}" ../../ \;
+    # These drivers are built into bin/named/named in a way which trips up
+    # gcovr.  Copy them to where gcovr expects them.
+    - cp contrib/dlz/drivers/dlz_drivers.c contrib/dlz/drivers/dlz_filesystem_driver.c contrib/dlz/drivers/sdlz_helper.c bin/named/
+    # The same reasoning applies for some libisc source files.
+    - cp lib/isc/app_api.c lib/isc/socket_api.c lib/isc/unix/
+    - gcovr --root . --exclude-directories bin/tests --exclude-directories doc --exclude-directories libltdl --exclude-directories lib/samples --exclude 'lib/.*/tests/.*' --html-details -o coverage.html
+    - gcovr --root . --exclude-directories bin/tests --exclude-directories doc --exclude-directories libltdl --exclude-directories lib/samples --exclude 'lib/.*/tests/.*' -o coverage.txt
+    - tail -n 3 coverage.txt
+  artifacts:
+    paths:
+      - coverage*.html
+  only:
+    - main@isc-projects/bind9
+    - /^v9_[1-9][0-9]$/@isc-projects/bind9