Please review the attached patch. -- jerome
From b1cc212bcfc4903c70f1150d83b3b376cee19fdf Mon Sep 17 00:00:00 2001 From: Jerome Charaoui <[email protected]> Date: Tue, 19 Jul 2016 15:01:45 -0400 Subject: [PATCH] Ignore irrelevant gpg errors (closes #736548)
This will allow the expect_pattern() to skip gpg
errors which are not useful: KEYEXPIRED, SIGEXPIRED
and "gpg: moving a key signature to the correct place"
For descriptions of these errors, see GnuPG
documentation in doc/DETAILS
---
monkeysign/gpg.py | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/monkeysign/gpg.py b/monkeysign/gpg.py
index 456cf3b..bc5661f 100644
--- a/monkeysign/gpg.py
+++ b/monkeysign/gpg.py
@@ -224,8 +224,17 @@ class Context():
this therefore looks only at the next line, but may also hang
like seek_pattern()
+
+ if the beginning of the line matches a pattern which is
+ being ignored, it will skip it and look at the next line
"""
line = fd.readline()
+ ignored = ('[GNUPG:] KEYEXPIRED', '[GNUPG:] SIGEXPIRED', 'gpg: ')
+
+ while line and line.startswith(ignored):
+ if self.debug: print >>self.debug, "SKIPPED:", line,
+ line = fd.readline()
+
match = re.search(pattern, line)
if self.debug:
@@ -469,15 +478,6 @@ class Keyring():
except GpgProtocolError as e:
if 'sign_uid.okay' in str(e):
multiuid = False
- elif '[GNUPG:]' not in str(e):
- # this is not a protocol message, try again but skipping now
- # this was necessary in order to sign Zack's key, as it was spewing:
- # gpg: moving a key signature to the correct place
- # instead of a [GNUGPG:] message
- try:
- multiuid = self.context.seek(proc.stderr, 'GET_BOOL keyedit.sign_all.okay')
- except GpgProtocolError as e:
- raise GpgRuntimeError(self.context.returncode, _('cannot select uid for signing: %s') % e.found().decode('utf-8'))
else:
raise GpgRuntimeError(self.context.returncode, _('cannot select uid for signing: %s') % e.found().decode('utf-8'))
if multiuid:
--
2.8.1
signature.asc
Description: OpenPGP digital signature

