aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustus Winter <[email protected]>2016-05-24 15:57:10 +0000
committerJustus Winter <[email protected]>2016-05-24 16:00:16 +0000
commit00ff6d07330028da370c869e3ec442eb76f8cbb8 (patch)
treedc05241c2a3ed786cc2add677b6a06e9f725c5cd
parentpython: Make all GnuPG errors available. (diff)
downloadgpgme-00ff6d07330028da370c869e3ec442eb76f8cbb8.tar.gz
gpgme-00ff6d07330028da370c869e3ec442eb76f8cbb8.zip
python: Improve and test Context.wait.
* lang/python/pyme/core.py (Context.wait): Improve docstring. As the context passed to 'gpgme_wait' is never NULL, it is pointless to look at the returned context. Always raise exceptions. * lang/python/tests/Makefile.am (pytests): Add new test. * lang/python/tests/t-wait.py: New file. Signed-off-by: Justus Winter <[email protected]>
-rw-r--r--lang/python/pyme/core.py18
-rw-r--r--lang/python/tests/Makefile.am3
-rwxr-xr-xlang/python/tests/t-wait.py42
3 files changed, 50 insertions, 13 deletions
diff --git a/lang/python/pyme/core.py b/lang/python/pyme/core.py
index aca5ec2d..5f8378de 100644
--- a/lang/python/pyme/core.py
+++ b/lang/python/pyme/core.py
@@ -316,23 +316,17 @@ class Context(GpgmeWrapper):
errorcheck(pygpgme.gpgme_ctx_set_engine_info(self.wrapped, proto, file_name, home_dir))
def wait(self, hang):
- """Wait for asynchronous call to finish. Wait forever if hang is True
+ """Wait for asynchronous call to finish. Wait forever if hang is True.
+ Raises an exception on errors.
- Return:
- On an async call completion its return status.
- On timeout - None.
+ Please read the GPGME manual for more information.
- Please read the GPGME manual for more information."""
+ """
ptr = pygpgme.new_gpgme_error_t_p()
- context = pygpgme.gpgme_wait(self.wrapped, ptr, hang)
+ pygpgme.gpgme_wait(self.wrapped, ptr, hang)
status = pygpgme.gpgme_error_t_p_value(ptr)
pygpgme.delete_gpgme_error_t_p(ptr)
-
- if context == None:
- errorcheck(status)
- return None
- else:
- return status
+ errorcheck(status)
def op_edit(self, key, func, fnc_value, out):
"""Start key editing using supplied callback function"""
diff --git a/lang/python/tests/Makefile.am b/lang/python/tests/Makefile.am
index 236354ff..7df40a2d 100644
--- a/lang/python/tests/Makefile.am
+++ b/lang/python/tests/Makefile.am
@@ -39,7 +39,8 @@ py_tests = t-wrapper.py \
t-signers.py \
t-decrypt.py \
t-export.py \
- t-edit.py
+ t-edit.py \
+ t-wait.py
TESTS = $(top_srcdir)/tests/gpg/initial.test \
$(py_tests) \
diff --git a/lang/python/tests/t-wait.py b/lang/python/tests/t-wait.py
new file mode 100755
index 00000000..7eaa46ab
--- /dev/null
+++ b/lang/python/tests/t-wait.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2016 g10 Code GmbH
+#
+# This file is part of GPGME.
+#
+# GPGME is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GPGME is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General
+# Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this program; if not, see <http://www.gnu.org/licenses/>.
+
+import time
+from pyme import core, constants, errors
+import support
+
+support.init_gpgme(constants.PROTOCOL_OpenPGP)
+c = core.Context()
+c.set_armor(True)
+
+# Checking a message without a signature.
+sig = core.Data("foo\n")
+text = core.Data()
+c.op_verify_start(sig, None, text)
+
+try:
+ while True:
+ err = c.wait(False)
+ if err:
+ break
+ time.sleep(0.1)
+except Exception as e:
+ assert e.getcode() == errors.NO_DATA
+else:
+ assert False, "Expected an error, got none"