diff --git a/src/borg/testsuite/__init__.py b/src/borg/testsuite/__init__.py index 2f4a0f070..5068a1411 100644 --- a/src/borg/testsuite/__init__.py +++ b/src/borg/testsuite/__init__.py @@ -18,6 +18,7 @@ from ..xattr import get_all from ..platform import get_flags from ..helpers import umount +from ..helpers import EXIT_SUCCESS, EXIT_WARNING, EXIT_ERROR from .. import platform # Note: this is used by borg.selftest, do not use or import py.test functionality here. @@ -253,6 +254,14 @@ def fuse_mount(self, location, mountpoint=None, *options, **kwargs): # mount a read-only repo. kwargs['fork'] = True self.cmd('mount', location, mountpoint, *options, **kwargs) + if kwargs.get('exit_code', EXIT_SUCCESS) == EXIT_ERROR: + # If argument `exit_code = EXIT_ERROR`, then this call + # is testing the behavior of an unsuccessful mount and + # we must not continue, as there is no mount to work + # with. The test itself has already failed or succeeded + # with the call to `self.cmd`, above. + yield + return self.wait_for_mountstate(mountpoint, mounted=True) yield umount(mountpoint)