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 <justus@gnupg.org>
This commit is contained in:
parent
7bc9cc717e
commit
00ff6d0733
@ -316,23 +316,17 @@ class Context(GpgmeWrapper):
|
|||||||
errorcheck(pygpgme.gpgme_ctx_set_engine_info(self.wrapped, proto, file_name, home_dir))
|
errorcheck(pygpgme.gpgme_ctx_set_engine_info(self.wrapped, proto, file_name, home_dir))
|
||||||
|
|
||||||
def wait(self, hang):
|
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:
|
Please read the GPGME manual for more information.
|
||||||
On an async call completion its return status.
|
|
||||||
On timeout - None.
|
|
||||||
|
|
||||||
Please read the GPGME manual for more information."""
|
"""
|
||||||
ptr = pygpgme.new_gpgme_error_t_p()
|
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)
|
status = pygpgme.gpgme_error_t_p_value(ptr)
|
||||||
pygpgme.delete_gpgme_error_t_p(ptr)
|
pygpgme.delete_gpgme_error_t_p(ptr)
|
||||||
|
errorcheck(status)
|
||||||
if context == None:
|
|
||||||
errorcheck(status)
|
|
||||||
return None
|
|
||||||
else:
|
|
||||||
return status
|
|
||||||
|
|
||||||
def op_edit(self, key, func, fnc_value, out):
|
def op_edit(self, key, func, fnc_value, out):
|
||||||
"""Start key editing using supplied callback function"""
|
"""Start key editing using supplied callback function"""
|
||||||
|
@ -39,7 +39,8 @@ py_tests = t-wrapper.py \
|
|||||||
t-signers.py \
|
t-signers.py \
|
||||||
t-decrypt.py \
|
t-decrypt.py \
|
||||||
t-export.py \
|
t-export.py \
|
||||||
t-edit.py
|
t-edit.py \
|
||||||
|
t-wait.py
|
||||||
|
|
||||||
TESTS = $(top_srcdir)/tests/gpg/initial.test \
|
TESTS = $(top_srcdir)/tests/gpg/initial.test \
|
||||||
$(py_tests) \
|
$(py_tests) \
|
||||||
|
42
lang/python/tests/t-wait.py
Executable file
42
lang/python/tests/t-wait.py
Executable file
@ -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"
|
Loading…
Reference in New Issue
Block a user