Kill filesystem process on test cleanup.
authorNikolaus Rath <Nikolaus@rath.org>
Sun, 18 Nov 2018 17:11:13 +0000 (17:11 +0000)
committerNikolaus Rath <Nikolaus@rath.org>
Sat, 24 Nov 2018 20:51:34 +0000 (20:51 +0000)
test/test_ctests.py
test/test_examples.py
test/util.py

index fff24272753e2893111a8fe992a11569c2276e63..d2f8582271e9b57eff229a5cfe9be37fd2ee4122 100644 (file)
@@ -64,7 +64,7 @@ def test_notify1(tmpdir, name, notify):
         else:
             assert read1 == read2
     except:
-        cleanup(mnt_dir)
+        cleanup(mount_process, mnt_dir)
         raise
     else:
         umount(mount_process, mnt_dir)
index caf5a08ee483c016015ff93eb30345897ae8c285..de5a11820a02cf183e2895e1aef9ac52813b44b2 100755 (executable)
@@ -76,7 +76,7 @@ def test_hello(tmpdir, name, options, cmdline_builder):
             open(filename + 'does-not-exist', 'r+')
         assert exc_info.value.errno == errno.ENOENT
     except:
-        cleanup(mnt_dir)
+        cleanup(mount_process, mnt_dir)
         raise
     else:
         umount(mount_process, mnt_dir)
@@ -147,7 +147,7 @@ def test_passthrough(tmpdir, name, debug, capfd, writeback):
             syscall_test_cmd.append('-52')
         subprocess.check_call(syscall_test_cmd)
     except:
-        cleanup(mnt_dir)
+        cleanup(mount_process, mnt_dir)
         raise
     else:
         umount(mount_process, mnt_dir)
@@ -177,7 +177,7 @@ def test_ioctl(tmpdir):
         with open(testfile, 'rb') as fh:
             assert fh.read()== b'foo'
     except:
-        cleanup(mnt_dir)
+        cleanup(mount_process, mnt_dir)
         raise
     else:
         umount(mount_process, mnt_dir)
@@ -193,7 +193,7 @@ def test_poll(tmpdir):
                   [ pjoin(basename, 'example', 'poll_client') ]
         subprocess.check_call(cmdline, cwd=mnt_dir)
     except:
-        cleanup(mnt_dir)
+        cleanup(mount_process, mnt_dir)
         raise
     else:
         umount(mount_process, mnt_dir)
@@ -217,7 +217,7 @@ def test_null(tmpdir):
         with open(mnt_file, 'wb') as fh:
             fh.write(b'whatever')
     except:
-        cleanup(mnt_file)
+        cleanup(mount_process, mnt_file)
         raise
     else:
         umount(mount_process, mnt_file)
@@ -253,7 +253,7 @@ def test_notify_inval_entry(tmpdir, notify):
         with pytest.raises(FileNotFoundError):
             os.stat(fname)
     except:
-        cleanup(mnt_dir)
+        cleanup(mount_process, mnt_dir)
         raise
     else:
         umount(mount_process, mnt_dir)
index ba02b9fdb27b6415ddb55420486caa23c3d82c0d..8bef26509e3ad5397598151c23e85fcfe8909168 100644 (file)
@@ -44,7 +44,7 @@ def wait_for_mount(mount_process, mnt_dir,
         elapsed += 0.1
     pytest.fail("mountpoint failed to come up")
 
-def cleanup(mnt_dir):
+def cleanup(mount_process, mnt_dir):
     # Don't bother trying Valgrind if things already went wrong
 
     if 'bsd' in sys.platform or 'dragonfly' in sys.platform:
@@ -54,6 +54,11 @@ def cleanup(mnt_dir):
                          '-z', '-u', mnt_dir]
     subprocess.call(cmd, stdout=subprocess.DEVNULL,
                     stderr=subprocess.STDOUT)
+    mount_process.terminate()
+    try:
+        mount_process.wait(1)
+    except subprocess.TimeoutExpired:
+        mount_process.kill()
 
 def umount(mount_process, mnt_dir):