python: Make tests more robust.

* lang/python/tests/support.py (TemporaryDirectory): Always use our
own version even if 'tempfile.TemporaryDirectory' is provided, because
we need to use 'shutil.rmtree(..., ignore_errors=True)' to avoid it
tripping over gpg-agent deleting its own sockets.

Signed-off-by: Justus Winter <justus@g10code.com>
This commit is contained in:
Justus Winter 2017-03-14 11:08:08 +01:00
parent a4201035fd
commit ac48499538
No known key found for this signature in database
GPG Key ID: DD1A52F9DA8C9020

View File

@ -78,17 +78,16 @@ def mark_key_trusted(ctx, key):
ctx.op_edit(key, Editor().edit, sink, sink)
# Python2/3 compatibility
if hasattr(tempfile, "TemporaryDirectory"):
# Python3.2 and up
TemporaryDirectory = tempfile.TemporaryDirectory
else:
class TemporaryDirectory(object):
def __enter__(self):
self.path = tempfile.mkdtemp()
return self.path
def __exit__(self, *args):
shutil.rmtree(self.path)
# Python3.2 and up has tempfile.TemporaryDirectory, but we cannot use
# that, because there shutil.rmtree is used without
# ignore_errors=True, and that races against gpg-agent deleting its
# sockets.
class TemporaryDirectory(object):
def __enter__(self):
self.path = tempfile.mkdtemp()
return self.path
def __exit__(self, *args):
shutil.rmtree(self.path, ignore_errors=True)
@contextlib.contextmanager
def EphemeralContext():