From faf987dd62893955251378a2a715edd2892a540c Mon Sep 17 00:00:00 2001 From: Andre Heinecke Date: Sun, 3 Apr 2016 01:48:46 -0800 Subject: [PATCH] Qt: Add a unit test for qgpgme * configure.ac: Configure test Makefile. * m4/qt.m4: Look up Qt5Test flags. * lang/qt/tests/t-keylist.cpp: New. Simple keylist check. * lang/qt/tests/Makefile.am: New. General test framework. -- This test mostly checks that it basically compiles / works and adds a test framework. --- configure.ac | 1 + lang/qt/Makefile.am | 2 +- lang/qt/tests/Makefile.am | 66 +++++++++++++++++++++++++++++++++++++ lang/qt/tests/t-keylist.cpp | 31 +++++++++++++++++ m4/qt.m4 | 5 +++ 5 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 lang/qt/tests/Makefile.am create mode 100644 lang/qt/tests/t-keylist.cpp diff --git a/configure.ac b/configure.ac index 9dd02e63..8580be7b 100644 --- a/configure.ac +++ b/configure.ac @@ -678,6 +678,7 @@ AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfigVersion.cmake) AC_CONFIG_FILES(lang/qt/Makefile lang/qt/src/Makefile) AC_CONFIG_FILES(lang/qt/src/QGpgmeConfig.cmake.in) AC_CONFIG_FILES(lang/qt/src/QGpgmeConfigVersion.cmake) +AC_CONFIG_FILES(lang/qt/tests/Makefile) AC_CONFIG_FILES([lang/Makefile lang/cl/Makefile lang/cl/gpgme.asd]) AC_OUTPUT diff --git a/lang/qt/Makefile.am b/lang/qt/Makefile.am index 7fbaca8e..48f568ad 100644 --- a/lang/qt/Makefile.am +++ b/lang/qt/Makefile.am @@ -18,6 +18,6 @@ # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA -SUBDIRS = src +SUBDIRS = src tests EXTRA_DIST = README diff --git a/lang/qt/tests/Makefile.am b/lang/qt/tests/Makefile.am new file mode 100644 index 00000000..3b483fe8 --- /dev/null +++ b/lang/qt/tests/Makefile.am @@ -0,0 +1,66 @@ +# Makefile.am - Makefile for GPGME Qt tests. +# Copyright (C) 2016 Intevation 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 Lesser General Public License as +# published by the Free Software Foundation; either version 2.1 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 . + +## Process this file with automake to produce Makefile.in + +GPG = gpg + +TESTS_ENVIRONMENT = GNUPGHOME=$(abs_builddir) + +TESTS = t-keylist + +moc_files = t-keylist.moc + +AM_LDFLAGS = -no-install + +LDADD = ../../cpp/src/libgpgmepp.la ../src/libqgpgme.la \ + ../../../src/libgpgme.la @GPGME_QT_LIBS@ @GPG_ERROR_LIBS@ \ + @GPGME_QTTEST_LIBS@ + +AM_CPPFLAGS = -I$(top_builddir)/src @GPG_ERROR_CFLAGS@ \ + @GPGME_QT_CFLAGS@ @GPG_ERROR_CFLAGS@ @LIBASSUAN_CFLAGS@ \ + @GPGME_QTTEST_CFLAGS@ \ + -I$(top_srcdir)/lang/cpp/src -I$(top_srcdir)/lang/qt/src \ + -DTOP_SRCDIR="$(top_srcdir)" + +check-local: ./t-keylist ./pubring-stamp + +t_keylist_SOURCES = t-keylist.cpp t-keylist.h + +nodist_t_keylist_SOURCES = $(moc_files) + +BUILT_SOURCES = $(moc_files) + +noinst_PROGRAMS = t-keylist + +CLEANFILES = secring.gpg pubring.gpg pubring.kbx trustdb.gpg dirmngr.conf \ + gpg-agent.conf pubring.kbx~ S.gpg-agent gpg.conf pubring.gpg~ \ + random_seed S.gpg-agent .gpg-v21-migrated pubring-stamp $(moc_files) + +export GNUPGHOME := $(abs_builddir) + +./pubring-stamp: $(top_srcdir)/tests/gpg/pubdemo.asc \ + $(top_srcdir)/tests/gpg/secdemo.asc + $(GPG) --no-permission-warning \ + --import $(top_srcdir)/tests/gpg/pubdemo.asc + -$(GPG) --no-permission-warning \ + --import $(top_srcdir)/tests/gpg/secdemo.asc + touch ./pubring-stamp + +.cpp.moc: + $(MOC) `test -f '$<' || echo '$(srcdir)/'`$< -o $@ diff --git a/lang/qt/tests/t-keylist.cpp b/lang/qt/tests/t-keylist.cpp new file mode 100644 index 00000000..67ace7f5 --- /dev/null +++ b/lang/qt/tests/t-keylist.cpp @@ -0,0 +1,31 @@ +#include +#include +#include "keylistjob.h" +#include "qgpgmebackend.h" +#include "keylistresult.h" + +using namespace QGpgME; + +class KeyListTest : public QObject +{ + Q_OBJECT + +private Q_SLOTS: + + void testSingleKeyListSync() + { + QGpgMEBackend backend; + KeyListJob *job = backend.openpgp()->keyListJob(false, false, false); + std::vector keys; + GpgME::KeyListResult result = job->exec(QStringList() << QStringLiteral("alfa@example.net"), + false, keys); + Q_ASSERT (!result.error()); + Q_ASSERT (keys.size() == 1); + const QString kId = QLatin1String(keys.front().keyID()); + Q_ASSERT (kId == QStringLiteral("2D727CC768697734")); + } +}; + +QTEST_MAIN(KeyListTest) + +#include "t-keylist.moc" diff --git a/m4/qt.m4 b/m4/qt.m4 index 80e22459..d3be7f88 100644 --- a/m4/qt.m4 +++ b/m4/qt.m4 @@ -18,6 +18,11 @@ AC_DEFUN([FIND_QT], [have_qt5_libs="yes"], [have_qt5_libs="no"]) + PKG_CHECK_MODULES(GPGME_QTTEST, + Qt5Test >= 5.0.0, + [have_qt5test_libs="yes"], + [have_qt5test_libs="no"]) + if "$PKG_CONFIG" --variable qt_config Qt5Core | grep -q "reduce_relocations"; then GPGME_QT_CFLAGS="$GPGME_QT_CFLAGS -fpic" fi