diff options
| author | Justus Winter <[email protected]> | 2017-03-14 10:08:08 +0000 | 
|---|---|---|
| committer | Justus Winter <[email protected]> | 2017-03-14 11:20:24 +0000 | 
| commit | ac4849953860547b06a167ca9612c4de369d02b6 (patch) | |
| tree | ecbc4ba246da2cf7b0b1b4795995ad7e61feda77 /lang/python/tests/support.py | |
| parent | python: Improve build system integration. (diff) | |
| download | gpgme-ac4849953860547b06a167ca9612c4de369d02b6.tar.gz gpgme-ac4849953860547b06a167ca9612c4de369d02b6.zip | |
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 <[email protected]>
Diffstat (limited to '')
| -rw-r--r-- | lang/python/tests/support.py | 21 | 
1 files changed, 10 insertions, 11 deletions
| diff --git a/lang/python/tests/support.py b/lang/python/tests/support.py index a381270d..69aa7a40 100644 --- a/lang/python/tests/support.py +++ b/lang/python/tests/support.py @@ -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(): | 
