test suite fails with GnuPG 2.1.17 and takes 10 minutes to run
The test suite currently fails to run on Debian stretch due to 2.1 being the default GnuPG version available.
Expected behavior
In Jessie, the test suite gives me:
..xx...........................That is your own key, so it is already certified
.......................pub [unknown] 1024R/96F47C6A 1342795252
Fingerprint = 3F94 240C 918E 6359 0B04 152E 86E4 E70A 96F4 7C6A
uid 1 [unknown] Second Test Key <unittests@monkeysphere.info>
uid 2 [unknown] Test Key <foo@example.com>
sub 1024R/14B46386 1342795252
.............pub [empty] 1024R/4023702F 1110320887 [expiry: 2010-03-12 18:56:20]
Fingerprint = C9E1 F123 0DBE 47D5 7BAB 3C60 5860 73B3 4023 702F
uid 1 [empty] The Anarcat <anarcat@anarcat.ath.cx>
sub 2048R/EB8D47BB 1110320966
.
----------------------------------------------------------------------
Ran 68 tests in 29.270s
OK (expected failures=2)
Actual behavior
In stretch, it fails in test_special_key (test_network.TestGpgNetwork)
with:
AlarmException: timeout in _communicate_with_poll
Full output below.
Steps to reproduce
Run the test suite in Debian Stretch.
Suggested fixes
No frigging clue. Blame GnuPG.
Testsuite output
$ ./scripts/monkeysign --test
.....Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9ccec68>> ignored
.Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9cde170>> ignored
..Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9cceb90>> ignored
.Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9cde3f8>> ignored
....Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9cde518>> ignored
......Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d85b00>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d85e18>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d85e60>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d85b48>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d85b00>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d85b48>> ignored
.Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9ce0998>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9ce0998>> ignored
...Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9cf9518>> ignored
..Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d04830>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d04c20>> ignored
..That is your own key, so it is already certified
.Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d1e908>> ignored
.E......................pub [unknown] 1024R/96F47C6A 1342795252
Fingerprint = 3F94 240C 918E 6359 0B04 152E 86E4 E70A 96F4 7C6A
uid 1 [unknown] Second Test Key <unittests@monkeysphere.info>
uid 2 [unknown] Test Key <foo@example.com>
sub 1024R/14B46386 1342795252
.............pub [empty] 1024R/4023702F 1110320887 [expiry: 2010-03-12 18:56:20]
Fingerprint = C9E1 F123 0DBE 47D5 7BAB 3C60 5860 73B3 4023 702F
uid 1 [empty] The Anarcat <anarcat@anarcat.ath.cx>
sub 2048R/EB8D47BB 1110320966
...
======================================================================
ERROR: test_special_key (test_network.TestGpgNetwork)
test a key that sign_key had trouble with
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/anarcat/src/monkeysign/monkeysign/tests/test_network.py", line 58, in test_special_key
self.assertTrue(self.gpg.import_data(open(find_test_file('96F47C6A-secret.asc')).read()))
File "./scripts/../monkeysign/gpg.py", line 344, in import_data
self.context.call_command(['import'], data)
File "./scripts/../monkeysign/gpg.py", line 184, in call_command
(self.stdout, self.stderr) = proc.communicate(stdin)
File "/usr/lib/python2.7/subprocess.py", line 479, in communicate
return self._communicate(input)
File "/usr/lib/python2.7/subprocess.py", line 1098, in _communicate
stdout, stderr = self._communicate_with_poll(input)
File "/usr/lib/python2.7/subprocess.py", line 1152, in _communicate_with_poll
ready = poller.poll()
File "/home/anarcat/src/monkeysign/monkeysign/tests/test_lib.py", line 35, in handle_alarm
raise AlarmException('timeout in %s' % frame.f_code.co_name)
AlarmException: timeout in _communicate_with_poll
----------------------------------------------------------------------
Ran 68 tests in 545.874s
FAILED (errors=1)
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d17638>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d04a70>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9cf9a28>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9cf9128>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9ce9128>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d85e18>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9ce0638>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d7cab8>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d8d908>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d85878>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9cde518>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d70320>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9ccee18>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d69680>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d2f710>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9cb0e60>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d692d8>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9cce050>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9cc6c68>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9cdeb00>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9cce5a8>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9d2f440>> ignored
Exception OSError: OSError(2, 'Aucun fichier ou dossier de ce type') in <bound method TempKeyring.__del__ of <monkeysign.gpg.TempKeyring instance at 0x7fb0a9cc6e60>> ignored
Also note all the exceptions that mysteriously don't make the tests fail - that can't be good... Or at least if it's okay, they should be silenced!
Environment details
$ ./scripts/monkeysign --version
Monkeysign: 2.2.2
Load path: /home/anarcat/src/monkeysign/monkeysign
CPython: 2.7.13 (GCC 6.2.1 20161215 default Dec 18 2016 20:19:42)
Kernel: Linux curie 4.8.0-2-amd64 #1 SMP Debian 4.8.15-2 (2017-01-04) x86_64
Operating system: debian stretch/sid (Linux)
PID: 16662, CWD: /home/anarcat/src/monkeysign
Command: ['./scripts/monkeysign', '--version']
GnuPG: 2.1.17
running from the git repository...
Debugging output
Attached because too large.test-gnugpg-2.1.txt