From 1b74a2bba1486be1dd44f5955744ea58e056f259 Mon Sep 17 00:00:00 2001 From: Justin Husted Date: Sat, 28 Dec 2019 16:56:24 -0800 Subject: [PATCH] bcachefs-tools: fix test bug in valgrind handling. Signed-off-by: Justin Husted --- tests/util.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/tests/util.py b/tests/util.py index c96f2ee..c4d7431 100644 --- a/tests/util.py +++ b/tests/util.py @@ -22,10 +22,14 @@ class ValgrindFailedError(Exception): def __init__(self, log): self.log = log -def check_valgrind(logfile): - log = logfile.read().decode('utf-8') +def check_valgrind(log): m = VPAT.search(log) - assert m is not None, 'Internal error: valgrind log did not match.' + if m is None: + print('Internal error: valgrind log did not match.') + print('-- valgrind log:') + print(log) + print('-- end log --') + assert False errors = int(m.group(1)) if errors > 0: @@ -53,7 +57,7 @@ def run(cmd, *args, valgrind=False, check=False): encoding='utf-8', check=check) if valgrind: - check_valgrind(vout) + check_valgrind(vout.read().decode('utf-8')) return res @@ -150,14 +154,14 @@ class BFuse: def run(self): """Background thread which runs "bcachefs fusemount" under valgrind""" - vout = None + vlog = None cmd = [] if ENABLE_VALGRIND: - vout = tempfile.NamedTemporaryFile() + vlog = tempfile.NamedTemporaryFile() cmd += [ 'valgrind', '--leak-check=full', - '--log-file={}'.format(vout.name) ] + '--log-file={}'.format(vlog.name) ] cmd += [ BCH_PATH, 'fusemount', '-f', self.dev, self.mnt] @@ -178,7 +182,7 @@ class BFuse: self.stdout = out1 + out2 self.stderr = err.read() self.returncode = self.proc.returncode - self.vout = vout + self.vout = vlog.read().decode('utf-8') def expect(self, pipe, regex): """Wait for the child process to mount.""" @@ -208,13 +212,15 @@ class BFuse: def unmount(self, timeout=None): print("Unmounting fuse.") run("fusermount3", "-zu", self.mnt) - print("Waiting for thread to exit.") if self.thread: + print("Waiting for thread to exit.") self.thread.join(timeout) if self.thread.is_alive(): self.proc.kill() self.thread.join() + else: + print("Thread was already done.") self.thread = None self.ready.clear() -- 2.39.2