mirror of
https://github.com/libfuse/libfuse.git
synced 2024-11-23 12:14:15 +08:00
Only use valgrind if requested explicitly + enable address sanitizer
This commit is contained in:
parent
bcb8f75995
commit
4f1a929fed
11
test/lsan_suppress.txt
Normal file
11
test/lsan_suppress.txt
Normal file
@ -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
|
@ -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
|
||||
|
15
test/util.py
15
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'])
|
||||
|
Loading…
Reference in New Issue
Block a user