python: Skip TOFU test if not supported by GnuPG.
authorJustus Winter <justus@g10code.com>
Tue, 11 Apr 2017 10:07:59 +0000 (12:07 +0200)
committerJustus Winter <justus@g10code.com>
Tue, 11 Apr 2017 10:24:41 +0000 (12:24 +0200)
* 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>
lang/python/tests/support.py
lang/python/tests/t-quick-key-manipulation.py

index fabd818..efccf31 100644 (file)
@@ -35,6 +35,12 @@ def assert_gpg_version(version=(2, 1, 0)):
                 c.engine_info.version, '.'.join(map(str, version))))
             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
 # understand the command line flags that we assume exist.  C.f. issue
 # 3008.
index 0f47006..37e05b3 100755 (executable)
@@ -22,6 +22,7 @@ del absolute_import, print_function, unicode_literals
 
 import os
 import gpg
+import sys
 
 import support
 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:
         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 in filter(lambda x: not x.startswith('__'),
                                             dir(gpg.constants.tofu.policy))]: