CI: Add memleak checking using valgrind (#5350)

Add a new step to check memleaks on our current unit tests suite
master
Loïc Blot 2017-03-06 20:34:02 +01:00 committed by GitHub
parent 0e27b4b978
commit 9878ce05e7
3 changed files with 15 additions and 1 deletions

View File

@ -22,6 +22,10 @@ matrix:
- env: PLATFORM=Unix COMPILER=clang - env: PLATFORM=Unix COMPILER=clang
compiler: clang compiler: clang
os: linux os: linux
- env: PLATFORM=Unix COMPILER=clang VALGRIND=1
compiler: clang
os: linux
dist: trusty
- env: PLATFORM=Unix COMPILER=g++-6 - env: PLATFORM=Unix COMPILER=g++-6
compiler: gcc compiler: gcc
os: linux os: linux

View File

@ -18,6 +18,9 @@ if [[ $PLATFORM == "Unix" ]]; then
# Linking to LevelDB is broken, use a custom build # Linking to LevelDB is broken, use a custom build
wget http://minetest.kitsunemimi.pw/libleveldb-1.18-ubuntu12.04.7z wget http://minetest.kitsunemimi.pw/libleveldb-1.18-ubuntu12.04.7z
sudo 7z x -o/usr libleveldb-1.18-ubuntu12.04.7z sudo 7z x -o/usr libleveldb-1.18-ubuntu12.04.7z
if [[ "$VALGRIND" == "1" ]]; then
sudo apt-get install valgrind
fi
else else
brew update brew update
brew install freetype gettext hiredis irrlicht jpeg leveldb libogg libvorbis luajit brew install freetype gettext hiredis irrlicht jpeg leveldb libogg libvorbis luajit

View File

@ -24,8 +24,15 @@ if [[ $PLATFORM == "Unix" ]]; then
-DBUILD_SERVER=TRUE \ -DBUILD_SERVER=TRUE \
$CMAKE_FLAGS .. $CMAKE_FLAGS ..
make -j2 make -j2
echo "Running unit tests." echo "Running unit tests."
../bin/minetest --run-unittests && exit 0 CMD="../bin/minetest --run-unittests"
if [[ "$VALGRIND" == "1" ]]; then
valgrind --leak-check=full --leak-check-heuristics=all --undef-value-errors=no --error-exitcode=9 ${CMD} && exit 0
else
${CMD} && exit 0
fi
elif [[ $PLATFORM == Win* ]]; then elif [[ $PLATFORM == Win* ]]; then
[[ $CC == "clang" ]] && exit 1 # Not supposed to happen [[ $CC == "clang" ]] && exit 1 # Not supposed to happen
# We need to have our build directory outside of the minetest directory because # We need to have our build directory outside of the minetest directory because