From: Justin Pryzby Date: Mon, 17 Jan 2022 00:54:28 -0600 Subject: [PATCH 4/7] wip: cirrus: code coverage XXX: lcov should be installed in the OS image --- .cirrus.yml | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 73b0baeaa7..635ee64b50 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -174,6 +174,14 @@ task: cat /proc/cmdline ulimit -a -H && ulimit -a -S export + git remote -v + git branch -a + git remote add postgres https://github.com/postgres/postgres + time git fetch -v postgres master + git log -1 postgres/master + git diff --name-only --cherry-pick postgres/master... + #git branch parent `git merge-base postgres/master HEAD` + #git diff --name-only parent.. create_user_script: | useradd -m postgres chown -R postgres:postgres . @@ -185,13 +193,14 @@ task: mkdir -m 770 /tmp/cores chown root:postgres /tmp/cores sysctl kernel.core_pattern='/tmp/cores/%e-%s-%p.core' - #apt-get update - #apt-get -y install ... + apt-get update + apt-get -y install lcov configure_script: | su postgres <<-EOF ./configure \ --enable-cassert --enable-debug --enable-tap-tests \ + --enable-coverage \ --enable-nls \ \ ${LINUX_CONFIGURE_FEATURES} \ @@ -211,6 +220,29 @@ task: make -s ${CHECK} ${CHECKFLAGS} -j${TEST_JOBS} EOF + generate_coverage_report_script: | + mkdir coverage + # Coverage only for changed files + # This is useful to see coverage of newly-added code, but won't + # show added/lost coverage in files which this patch doesn't modify. + for f in `git diff --name-only --cherry-pick postgres/master... '*.c'`; + do + lcov --quiet --capture --directory "$f" + done >coverage/coverage.gcov + + time genhtml coverage/coverage.gcov --output-directory coverage --show-details --legend --quiet + cp coverage/index.html coverage/00-index.html + + # Coverage for all files: + #time lcov --quiet --capture --directory . >coverage/coverage-all.gcov + #time genhtml coverage/coverage-all.gcov --output-directory coverage-all --show-details --legend --quiet + #cp coverage-all/index.html coverage-all/00-index.html + + #git diff --name-only --cherry-pick postgres/master... '*.c' |xargs -r gcov --demangled-names -- + + coverage_artifacts: + paths: ['coverage/**/*.html', 'coverage/**/*.png', 'coverage/**/*.gcov', 'coverage/**/*.css' ] + on_failure: <<: *on_failure cores_script: src/tools/ci/cores_backtrace.sh linux /tmp/cores -- 2.17.1 --x1F0m3RQhDZyj8sd Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0005-cirrus-vcregress-test-modules-contrib-with-NO_INSTAL.patch"