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