merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

commit 2c9fba130a4063a5d8ef01f3031c54c35133fd0b
parent b920da0a4b804390955355f72ee7b5e13aadde65
Author: Martin Schanzenbach <schanzen@gnunet.org>
Date:   Sun,  1 Jun 2025 12:04:43 +0200

CI: add coverage and lcov result publication

Diffstat:
Acontrib/ci/jobs/2-test/1-build.sh | 12++++++++++++
Acontrib/ci/jobs/2-test/2-install.sh | 4++++
Acontrib/ci/jobs/2-test/3-startdb.sh | 7+++++++
Acontrib/ci/jobs/2-test/4-test.sh | 25+++++++++++++++++++++++++
Acontrib/ci/jobs/2-test/5-coverage.sh | 20++++++++++++++++++++
Mcontrib/ci/jobs/2-test/job.sh | 6+++++-
Dcontrib/ci/jobs/2-test/test.sh | 63---------------------------------------------------------------
7 files changed, 73 insertions(+), 64 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 talercheck diff --git a/contrib/ci/jobs/2-test/4-test.sh b/contrib/ci/jobs/2-test/4-test.sh @@ -0,0 +1,25 @@ +#!/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" + cat "$(dirname $i)/${FAILURE}.log" + done + 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/merchant/${CI_COMMIT_REF}/merchant" +mkdir -p /artifacts/merchant/lcov/${CI_COMMIT_REF}/merchant # 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-test.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,63 +0,0 @@ -#!/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 -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 talercheck - -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" - cat "$(dirname $i)/${FAILURE}.log" - done - done -} - -check_command -RES=$? - -# FIXME: move this into own job? For testing, we also publish partial results even if test fails -mkdir -p /artifacts/merchant/${CI_COMMIT_REF} # Variable comes from CI environment -lcov --capture --directory . --output-file /artifacts/merchant/${CI_COMMIT_REF}/coverage.info || exit 1 -genhtml coverage.info --output-directory /artifacts/merchant/${CI_COMMIT_REF}/merchant-lcov || exit 1 - -ARTIFACT_PATH="/artifacts/merchant/${CI_COMMIT_REF}/merchant-lcov" - -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 - -if ! $RES ; then - print_logs - exit 1 -fi - -