python: Improve and test Context.wait.
authorJustus Winter <justus@gnupg.org>
Tue, 24 May 2016 15:57:10 +0000 (17:57 +0200)
committerJustus Winter <justus@gnupg.org>
Tue, 24 May 2016 16:00:16 +0000 (18:00 +0200)
* 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 <justus@gnupg.org>
lang/python/pyme/core.py
lang/python/tests/Makefile.am
lang/python/tests/t-wait.py [new file with mode: 0755]

index aca5ec2..5f8378d 100644 (file)
@@ -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"""
index 236354f..7df40a2 100644 (file)
@@ -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 (executable)
index 0000000..7eaa46a
--- /dev/null
@@ -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"