summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/python-gnupg/files/python-gnupg-0.4.3-use_seperate_keys_directory.patch')
-rw-r--r--dev-python/python-gnupg/files/python-gnupg-0.4.3-use_seperate_keys_directory.patch58
1 files changed, 58 insertions, 0 deletions
diff --git a/dev-python/python-gnupg/files/python-gnupg-0.4.3-use_seperate_keys_directory.patch b/dev-python/python-gnupg/files/python-gnupg-0.4.3-use_seperate_keys_directory.patch
new file mode 100644
index 000000000000..b5318ede0d87
--- /dev/null
+++ b/dev-python/python-gnupg/files/python-gnupg-0.4.3-use_seperate_keys_directory.patch
@@ -0,0 +1,58 @@
+# HG changeset patch
+# User Michał Górny <mgorny@gentoo.org>
+# Date 1533916222 -7200
+# Node ID 2c8991b1c9080adc61e63d00fe9415b88f3e6208
+# Parent 9cb2a856677237b528ead6fff68de7d488dbfeec
+Use private temporary GPG-homes for tests to fix race conditions.
+
+Create unique temporary directories to use as GPG home in each test
+instead of reusing a single hardcoded 'keys' directory. This is
+necessary to fix race conditions between directory operations
+and gpg-agent in GnuPG 2.0+.
+
+GnuPG 2.0 started using gpg-agent for all operations. It is
+automatically spawned when GPG is called to do something, and it stops
+automatically when its homedir is removed (e.g. as part of rmtree()
+call). However, with the homedir being instantly recreated and next
+test being run, it seems that gpg-agent sometimes failed to stop fully
+before being started again and causes one of the tests to fail with
+gpg-agent connection errors.
+
+With this change, I am finally able to successfully run all tests
+in a single batch.
+
+diff --git a/test_gnupg.py b/test_gnupg.py
+--- a/test_gnupg.py
++++ b/test_gnupg.py
+@@ -173,11 +173,7 @@
+
+ class GPGTestCase(unittest.TestCase):
+ def setUp(self):
+- hd = os.path.join(os.getcwd(), 'keys')
+- if os.path.exists(hd):
+- self.assertTrue(os.path.isdir(hd),
+- "Not a directory: %s" % hd)
+- shutil.rmtree(hd, ignore_errors=True)
++ hd = tempfile.mkdtemp()
+ prepare_homedir(hd)
+ self.homedir = hd
+ self.gpg = gpg = gnupg.GPG(gnupghome=hd, gpgbinary=GPGBINARY)
+@@ -193,6 +189,9 @@
+ data_file.write(os.urandom(5120 * 1024))
+ data_file.close()
+
++ def tearDown(self):
++ shutil.rmtree(self.homedir, ignore_errors=True)
++
+ def test_environment(self):
+ "Test the environment by ensuring that setup worked"
+ hd = self.homedir
+@@ -373,7 +372,7 @@
+ # and the keyring file name has changed.
+ pkn = 'pubring.kbx'
+ skn = None
+- hd = os.path.join(os.getcwd(), 'keys')
++ hd = self.homedir
+ if os.name == 'posix':
+ pkn = os.path.join(hd, pkn)
+ if skn: