commit 83a2ae9850b2550f0da7fe5c416e4b005d6ac509
parent 161ee75dcf7b0901f44b77ef91f834c677ac629d
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date: Sun, 1 Jun 2025 15:42:58 +0200
CI: Add coverage
Diffstat:
7 files changed, 84 insertions(+), 52 deletions(-)
diff --git a/contrib/ci/jobs/2-test/1-build.sh b/contrib/ci/jobs/2-test/1-build.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -evu
+
+apt-get update
+apt-get upgrade -yqq
+
+./bootstrap
+./configure CFLAGS="-ggdb -O0" \
+ --prefix=/usr \
+ --enable-coverage \
+ --enable-logging=verbose \
+ --disable-doc
diff --git a/contrib/ci/jobs/2-test/2-install.sh b/contrib/ci/jobs/2-test/2-install.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+set -evux
+
+make install
diff --git a/contrib/ci/jobs/2-test/3-startdb.sh b/contrib/ci/jobs/2-test/3-startdb.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+set -evux
+
+sudo -u postgres /usr/lib/postgresql/15/bin/postgres -D /etc/postgresql/15/main -h localhost -p 5432 &
+sleep 10
+sudo -u postgres createuser -p 5432 root
+sudo -u postgres createdb -p 5432 -O root synccheck
diff --git a/contrib/ci/jobs/2-test/4-test.sh b/contrib/ci/jobs/2-test/4-test.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+set -evux
+
+check_command()
+{
+ # Set LD_LIBRARY_PATH so tests can find the installed libs
+ LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/taler:/usr/lib:/usr/lib/taler PGPORT=5432 make check
+}
+
+print_logs()
+{
+ for i in src/*/test-suite.log
+ do
+ for FAILURE in $(grep '^FAIL:' ${i} | cut -d' ' -f2)
+ do
+ echo "Printing ${FAILURE}.log"
+ echo "========BEGIN======"
+ cat "$(dirname $i)/${FAILURE}.log"
+ echo "=========END======="
+ echo "End of ${FAILURE}.log"
+ done
+ done
+ for LOGFILE in src/testing/*.log
+ do
+ echo "Printing ${LOGFILE}"
+ echo "========BEGIN======"
+ cat "${LOGFILE}"
+ echo "=========END======="
+ echo "End of ${LOGFILE}"
+ done
+}
+
+if ! check_command ; then
+ print_logs
+ exit 1
+fi
diff --git a/contrib/ci/jobs/2-test/5-coverage.sh b/contrib/ci/jobs/2-test/5-coverage.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+set -evux
+
+ARTIFACT_PATH="/artifacts/sync/${CI_COMMIT_REF}/sync"
+mkdir -p /artifacts/sync/lcov/${CI_COMMIT_REF}/sync # Variable comes from CI environment
+lcov --capture --directory . --output-file coverage.info || exit 1
+genhtml coverage.info --output-directory ${ARTIFACT_PATH} || exit 1
+
+
+RSYNC_HOST="taler.host.internal"
+RSYNC_PORT=424243
+RSYNC_PATH="incoming_packages/taler/"
+RSYNC_DEST="rsync://${RSYNC_HOST}/${RSYNC_PATH}"
+
+
+rsync -vP \
+ --port ${RSYNC_PORT} \
+ ${ARTIFACT_PATH} ${RSYNC_DEST} || exit 1
+
+
diff --git a/contrib/ci/jobs/2-test/job.sh b/contrib/ci/jobs/2-test/job.sh
@@ -3,4 +3,8 @@ set -exuo pipefail
job_dir=$(dirname "${BASH_SOURCE[0]}")
-"${job_dir}"/test.sh
+"${job_dir}"/1-build.sh
+"${job_dir}"/2-install.sh
+"${job_dir}"/3-startdb.sh
+"${job_dir}"/4-test.sh
+"${job_dir}"/5-coverage.sh
diff --git a/contrib/ci/jobs/2-test/test.sh b/contrib/ci/jobs/2-test/test.sh
@@ -1,51 +0,0 @@
-#!/bin/bash
-set -evu
-
-apt-get update
-apt-get upgrade -yqq
-
-./bootstrap
-./configure CFLAGS="-ggdb -O0" \
- --prefix=/usr \
- --enable-logging=verbose \
- --disable-doc
-make -j install
-
-sudo -u postgres /usr/lib/postgresql/15/bin/postgres -D /etc/postgresql/15/main -h localhost -p 5432 &
-sleep 10
-sudo -u postgres createuser -p 5432 root
-sudo -u postgres createdb -p 5432 -O root synccheck
-
-check_command()
-{
- # Set LD_LIBRARY_PATH so tests can find the installed libs
- LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/taler:/usr/lib:/usr/lib/taler PGPORT=5432 make check
-}
-
-print_logs()
-{
- for i in src/*/test-suite.log
- do
- for FAILURE in $(grep '^FAIL:' ${i} | cut -d' ' -f2)
- do
- echo "Printing ${FAILURE}.log"
- echo "========BEGIN======"
- cat "$(dirname $i)/${FAILURE}.log"
- echo "=========END======="
- echo "End of ${FAILURE}.log"
- done
- done
- for LOGFILE in src/testing/*.log
- do
- echo "Printing ${LOGFILE}"
- echo "========BEGIN======"
- cat "${LOGFILE}"
- echo "=========END======="
- echo "End of ${LOGFILE}"
- done
-}
-
-if ! check_command ; then
- print_logs
- exit 1
-fi