aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGravatar Nikolaus Rath <Nikolaus@rath.org>2017-01-12 14:26:06 -0800
committerGravatar Nikolaus Rath <Nikolaus@rath.org>2017-01-12 15:19:04 -0800
commit4f1a929fed98173f35da2d95263037c921a7ff6e (patch)
tree9dd8d3cbf7d6c595f06f7823a9e795ac9b0c6096 /test
parentbcb8f7599539248c53051b06b81c3d4f3b327f94 (diff)
Only use valgrind if requested explicitly + enable address sanitizer
Diffstat (limited to 'test')
-rw-r--r--test/lsan_suppress.txt11
-rwxr-xr-xtest/travis-build.sh9
-rw-r--r--test/util.py15
3 files changed, 21 insertions, 14 deletions
diff --git a/test/lsan_suppress.txt b/test/lsan_suppress.txt
new file mode 100644
index 0000000..4352b3a
--- /dev/null
+++ b/test/lsan_suppress.txt
@@ -0,0 +1,11 @@
+# Suppression file for address sanitizer.
+
+# There are some leaks in command line option parsing. They should be
+# fixed at some point, but are harmless since the consume just a small,
+# constant amount of memory and do not grow.
+leak:fuse_opt_parse
+
+
+# Leaks in fusermount3 are harmless as well (it's a short-lived
+# process) - but patches are welcome!
+leak:fusermount.c
diff --git a/test/travis-build.sh b/test/travis-build.sh
index d0b172b..f971cbe 100755
--- a/test/travis-build.sh
+++ b/test/travis-build.sh
@@ -2,7 +2,12 @@
set -e
+# Disable leak checking for now, there are some issues (or false positives)
+# that we still need to fix
+export ASAN_OPTIONS="detect_leaks=0"
+
export CFLAGS="-Werror"
+export LSAN_OPTIONS="suppressions=$(pwd)/test/lsan_suppress.txt"
export CC
# Standard build
@@ -18,14 +23,14 @@ for CC in gcc gcc-6 clang; do
sudo chown root:root util/fusermount3
sudo chmod 4755 util/fusermount3
- ninja tests
+ TEST_WITH_VALGRIND=true ninja tests
cd ..
done
(cd build-$CC; sudo ninja install)
# Sanitized build
CC=clang
-for san in undefined; do
+for san in undefined address; do
mkdir build-${san}; cd build-${san}
# b_lundef=false is required to work around clang
# bug, cf. https://groups.google.com/forum/#!topic/mesonbuild/tgEdAXIIdC4
diff --git a/test/util.py b/test/util.py
index 48670bd..31c29a8 100644
--- a/test/util.py
+++ b/test/util.py
@@ -105,21 +105,12 @@ def fuse_test_marker():
return pytest.mark.uses_fuse()
-# If valgrind is available, use it
-def has_program(name):
- try:
- ret = subprocess.call([name, '--version'],
- stdout=subprocess.DEVNULL,
- stderr=subprocess.DEVNULL)
- except FileNotFoundError:
- return False
- return ret == 0
-
-if has_program('valgrind'):
+# Use valgrind if requested
+if os.environ.get('TEST_WITH_VALGRIND', 'no').lower().strip() \
+ not in ('no', 'false', '0'):
base_cmdline = [ 'valgrind', '-q', '--' ]
else:
base_cmdline = []
-
# Try to use local fusermount3
os.environ['PATH'] = '%s:%s' % (pjoin(basename, 'util'), os.environ['PATH'])