aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre Heinecke <[email protected]>2017-03-30 12:36:49 +0000
committerAndre Heinecke <[email protected]>2017-03-30 12:44:42 +0000
commit2c063a8d60418ee59ae80da221420c6f3fa19abb (patch)
tree367c40aa6650ccfa357b35ae97ed7917afcfc779
parentpython,build: Reinstate prepare target. (diff)
downloadgpgme-2c063a8d60418ee59ae80da221420c6f3fa19abb.tar.gz
gpgme-2c063a8d60418ee59ae80da221420c6f3fa19abb.zip
qt: Handle if gpg does not support tofu in test
* lang/qt/src/t-tofuinfo.cpp (TestTofuInfo::testSupported): Treat it as unsupported if secret keylisting already fails. -- The likely cause of this is that the agent can't be started because the trust model is unsupported. Other tests check that keylisting actually works.
-rw-r--r--lang/qt/tests/t-tofuinfo.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/lang/qt/tests/t-tofuinfo.cpp b/lang/qt/tests/t-tofuinfo.cpp
index e16b1fde..8d040bc3 100644
--- a/lang/qt/tests/t-tofuinfo.cpp
+++ b/lang/qt/tests/t-tofuinfo.cpp
@@ -118,7 +118,24 @@ Q_SIGNALS:
private:
bool testSupported()
{
- return !(GpgME::engineInfo(GpgME::GpgEngine).engineVersion() < "2.1.16");
+ static bool initialized, supported;
+ if (initialized) {
+ return supported;
+ }
+ initialized = true;
+ if (GpgME::engineInfo(GpgME::GpgEngine).engineVersion() < "2.1.16") {
+ return false;
+ }
+ // If the keylist fails here this means that gnupg does not
+ // support tofu at all. It can be disabled at compile time. So no
+ // tests.
+ auto *job = openpgp()->keyListJob(false, false, false);
+ job->addMode(GpgME::WithTofu);
+ std::vector<GpgME::Key> keys;
+ job->exec(QStringList() << QStringLiteral("[email protected]"), true, keys);
+ delete job;
+ supported = !keys.empty();
+ return supported;
}
void testTofuCopy(TofuInfo other, const TofuInfo &orig)
@@ -402,6 +419,10 @@ private Q_SLOTS:
void testTofuConflict()
{
+ if (!testSupported()) {
+ return;
+ }
+
if (GpgME::engineInfo(GpgME::GpgEngine).engineVersion() < "2.1.19") {
return;
}