python: Skip TOFU test if not supported by GnuPG.

* lang/python/tests/support.py (have_tofu_support): New function.
* lang/python/tests/t-quick-key-manipulation.py: Skip TOFU test if not
supported by GnuPG.

Signed-off-by: Justus Winter <justus@g10code.com>
This commit is contained in:
Justus Winter 2017-04-11 12:07:59 +02:00
parent a827382caf
commit 979d48e823
No known key found for this signature in database
GPG Key ID: DD1A52F9DA8C9020
2 changed files with 11 additions and 0 deletions

View File

@ -35,6 +35,12 @@ def assert_gpg_version(version=(2, 1, 0)):
c.engine_info.version, '.'.join(map(str, version)))) c.engine_info.version, '.'.join(map(str, version))))
sys.exit(77) sys.exit(77)
def have_tofu_support(ctx, some_uid):
keys = list(ctx.keylist(some_uid,
mode=(gpg.constants.keylist.mode.LOCAL
|gpg.constants.keylist.mode.WITH_TOFU)))
return len(keys) > 0
# Skip the Python tests for GnuPG < 2.1.12. Prior versions do not # Skip the Python tests for GnuPG < 2.1.12. Prior versions do not
# understand the command line flags that we assume exist. C.f. issue # understand the command line flags that we assume exist. C.f. issue
# 3008. # 3008.

View File

@ -22,6 +22,7 @@ del absolute_import, print_function, unicode_literals
import os import os
import gpg import gpg
import sys
import support import support
support.assert_gpg_version((2, 1, 14)) support.assert_gpg_version((2, 1, 14))
@ -97,6 +98,10 @@ with support.EphemeralContext() as ctx:
with open(os.path.join(ctx.home_dir, "gpg.conf"), "a") as handle: with open(os.path.join(ctx.home_dir, "gpg.conf"), "a") as handle:
handle.write("trust-model tofu+pgp\n") handle.write("trust-model tofu+pgp\n")
if not support.have_tofu_support(ctx, bravo):
print("GnuPG does not support TOFU, skipping TOFU tests.")
sys.exit()
for name, policy in [(name, getattr(gpg.constants.tofu.policy, name)) for name, policy in [(name, getattr(gpg.constants.tofu.policy, name))
for name in filter(lambda x: not x.startswith('__'), for name in filter(lambda x: not x.startswith('__'),
dir(gpg.constants.tofu.policy))]: dir(gpg.constants.tofu.policy))]: