diff --git a/lang/python/gpgme.i b/lang/python/gpgme.i index 73533d0c..c7d89dba 100644 --- a/lang/python/gpgme.i +++ b/lang/python/gpgme.i @@ -541,6 +541,15 @@ wrapresult(gpgme_vfs_mount_result_t, "VFSMountResult") } } + +/* With SWIG, you can define default arguments for parameters. + * While it's legal in C++ it is not in C, so we cannot change the + * already existing gpgme.h. We need, however, to declare the function + * *before* SWIG loads it from gpgme.h. Hence, we define it here. */ +gpgme_error_t gpgme_op_keylist_start (gpgme_ctx_t ctx, + const char *pattern="", + int secret_only=0); + /* Include the unmodified for cc, and the cleaned-up local version for SWIG. We do, however, want to hide certain fields on some structs, which we provide prior to including the version for diff --git a/lang/python/tests/t-keylist.py b/lang/python/tests/t-keylist.py index ea2a7240..5077ca69 100755 --- a/lang/python/tests/t-keylist.py +++ b/lang/python/tests/t-keylist.py @@ -219,6 +219,18 @@ result = c.op_keylist_result() assert not result.truncated, "Key listing unexpectedly truncated" +# We test for a parameter-less keylist +keyring_length = len(list(c.op_keylist_all())) +assert keyring_length > 1,\ + "Expected to find some keys, but got %r" % keyring_length + +# Then we do want to call with a pattern, only +# i.e. without giving secret=0 +alpha_keys = list(c.op_keylist_all(b"Alpha")) +assert len(alpha_keys) == 1, "Expected only one key for 'Alpha', got %r" % len(alpha_keys) + + + for i, key in enumerate(c.keylist()): try: if len(keys[i]) == 4: