aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2024-04-10 11:43:10 +0100
committerLasse Collin <lasse.collin@tukaani.org>2024-04-11 00:15:35 +0300
commit6c095a98fbec70b790253a663173ecdb669108c4 (patch)
treea552263a75af792981feb387210ba0238a39ee4f
parentliblzma: CRC: Simplify table omission macros (diff)
downloadxz-6c095a98fbec70b790253a663173ecdb669108c4.tar.xz
ci: test Valgrind
Using `--trace-children=yes` has a trade-off here, as it makes `test_scripts.sh` pretty slow when calling various non-xz utilities. But I also feel like it's not useless to have Valgrind used there and it's not easy to exclude Valgrind just for that one test... I did consider using AX_VALGRIND_CHECK [0][1] but I couldn't get it working immediately with some conditionally-built tests and I wondered if it was worth spending time on at least while we're debating xz's future build system situation. [0] https://www.gnu.org/software/autoconf-archive/ax_valgrind_check.html [1] https://tecnocode.co.uk/2014/12/23/automatically-valgrinding-code-with-ax_valgrind_check/
-rw-r--r--.github/workflows/ci.yml11
-rwxr-xr-xbuild-aux/ci_build.sh8
2 files changed, 15 insertions, 4 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index cbf3b7d9..9aa4f9aa 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -37,7 +37,7 @@ jobs:
if: ${{ matrix.os == 'ubuntu-latest' && matrix.build_system == 'autotools' }}
run: |
sudo apt-get update
- sudo apt-get install -y autoconf automake build-essential po4a autopoint gcc-multilib doxygen musl-tools
+ sudo apt-get install -y autoconf automake build-essential po4a autopoint gcc-multilib doxygen musl-tools valgrind
# Install Autotools on Mac
- name: Install Dependencies
@@ -89,6 +89,15 @@ jobs:
./build-aux/ci_build.sh -b autotools -p test -f "-fsanitize=address,undefined" -d sandbox
cd ../xz_build && make distclean
+ - name: Build with Valgrind
+ if: ${{ matrix.os == 'ubuntu-latest' && matrix.build_system == 'autotools' }}
+ run: ./build-aux/ci_build.sh -b autotools -p build -d sandbox
+ - name: Test with Valgrind
+ if: ${{ matrix.os == 'ubuntu-latest' && matrix.build_system == 'autotools' }}
+ run: |
+ ./build-aux/ci_build.sh -b autotools -p test -d sandbox -w "valgrind --quiet --trace-children=yes --exit-on-first-error=yes --error-exitcode=1"
+ cd ../xz_build && make distclean
+
- name: Build with musl libc
if: ${{ matrix.os == 'ubuntu-latest'}}
run: ./build-aux/ci_build.sh -b ${{ matrix.build_system }} -p build -m "/usr/bin/musl-gcc"
diff --git a/build-aux/ci_build.sh b/build-aux/ci_build.sh
index 9e2a7f8b..e6926d3e 100755
--- a/build-aux/ci_build.sh
+++ b/build-aux/ci_build.sh
@@ -53,7 +53,7 @@ ARTIFACTS_DIR_NAME="output"
# Parse arguments #
###################
-while getopts a:b:c:d:l:m:n:s:p:f:h opt; do
+while getopts a:b:c:d:l:m:n:s:p:f:w:h opt; do
# b option can have either value "autotools" OR "cmake"
case ${opt} in
h)
@@ -108,6 +108,8 @@ while getopts a:b:c:d:l:m:n:s:p:f:h opt; do
CFLAGS="$OPTARG"
export CFLAGS
;;
+ w) WRAPPER="$OPTARG"
+ ;;
esac
done
@@ -260,7 +262,7 @@ then
autotools)
cd "$DEST_DIR"
# If the tests fail, copy the test logs into the artifacts folder
- if make check
+ if make check LOG_COMPILER="$WRAPPER"
then
:
else
@@ -271,7 +273,7 @@ then
;;
cmake)
cd "$DEST_DIR"
- if make test
+ if ${WRAPPER} make test
then
:
else