cpp: Add first manual tests
* lang/cpp/Makefile.am: Add tests subdir. * lang/cpp/tests/Makefile.am: New. * lang/cpp/tests/README, lang/cpp/tests/run-getkey.cpp, lang/cpp/tests/run-keylist.cpp: New. * configure.ac: Configure tests makefile. -- The autotests for c++ live in lang/qt/tests these tests are more for manual experiments to validate some functionality.
This commit is contained in:
parent
85627e5818
commit
9f85f4967e
@ -896,6 +896,7 @@ AC_CONFIG_FILES(Makefile src/Makefile
|
|||||||
src/gpgme.h)
|
src/gpgme.h)
|
||||||
AC_CONFIG_FILES(src/gpgme-config, chmod +x src/gpgme-config)
|
AC_CONFIG_FILES(src/gpgme-config, chmod +x src/gpgme-config)
|
||||||
AC_CONFIG_FILES(lang/cpp/Makefile lang/cpp/src/Makefile)
|
AC_CONFIG_FILES(lang/cpp/Makefile lang/cpp/src/Makefile)
|
||||||
|
AC_CONFIG_FILES(lang/cpp/tests/Makefile)
|
||||||
AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfig-w32.cmake.in)
|
AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfig-w32.cmake.in)
|
||||||
AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfig.cmake.in)
|
AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfig.cmake.in)
|
||||||
AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfigVersion.cmake)
|
AC_CONFIG_FILES(lang/cpp/src/GpgmeppConfigVersion.cmake)
|
||||||
|
@ -19,6 +19,6 @@
|
|||||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
# 02111-1307, USA
|
# 02111-1307, USA
|
||||||
|
|
||||||
SUBDIRS = src
|
SUBDIRS = src tests
|
||||||
|
|
||||||
EXTRA_DIST = README
|
EXTRA_DIST = README
|
||||||
|
35
lang/cpp/tests/Makefile.am
Normal file
35
lang/cpp/tests/Makefile.am
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
# Makefile.am - Makefile for GPGME Cpp tests.
|
||||||
|
# Copyright (C) 2018 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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
## Process this file with automake to produce Makefile.in
|
||||||
|
|
||||||
|
AM_LDFLAGS = -no-install
|
||||||
|
|
||||||
|
LDADD = ../../cpp/src/libgpgmepp.la \
|
||||||
|
../../../src/libgpgme.la @GPG_ERROR_LIBS@ \
|
||||||
|
-lstdc++
|
||||||
|
|
||||||
|
AM_CPPFLAGS = -I$(top_srcdir)/lang/cpp/src -I$(top_builddir)/src \
|
||||||
|
@GPG_ERROR_CFLAGS@ @GPG_ERROR_CFLAGS@ \
|
||||||
|
@LIBASSUAN_CFLAGS@ -DBUILDING_GPGMEPP \
|
||||||
|
-DTOP_SRCDIR="$(top_srcdir)"
|
||||||
|
|
||||||
|
run_getkey_SOURCES = run-getkey.cpp
|
||||||
|
run_keylist_SOURCES = run-keylist.cpp
|
||||||
|
|
||||||
|
noinst_PROGRAMS = run-getkey run-keylist
|
4
lang/cpp/tests/README
Normal file
4
lang/cpp/tests/README
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
Tests for the C++ bindings.
|
||||||
|
|
||||||
|
Most autotests for the C++ bindings use the QTest framework
|
||||||
|
and live in lang/qt/tests.
|
144
lang/cpp/tests/run-getkey.cpp
Normal file
144
lang/cpp/tests/run-getkey.cpp
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
/*
|
||||||
|
run-getkey.cpp
|
||||||
|
|
||||||
|
This file is part of GpgMEpp's test suite.
|
||||||
|
Copyright (c) 2018 Intevation GmbH
|
||||||
|
|
||||||
|
QGpgME is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License,
|
||||||
|
version 2, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
QGpgME 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
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
In addition, as a special exception, the copyright holders give
|
||||||
|
permission to link the code of this program with any edition of
|
||||||
|
the Qt library by Trolltech AS, Norway (or with modified versions
|
||||||
|
of Qt that use the same license as Qt), and distribute linked
|
||||||
|
combinations including the two. You must obey the GNU General
|
||||||
|
Public License in all respects for all of the code used other than
|
||||||
|
Qt. If you modify this file, you may extend this exception to
|
||||||
|
your version of the file, but you are not obligated to do so. If
|
||||||
|
you do not wish to do so, delete this exception statement from
|
||||||
|
your version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "context.h"
|
||||||
|
#include "key.h"
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
#include <sstream>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
using namespace GpgME;
|
||||||
|
|
||||||
|
static int
|
||||||
|
show_usage (int ex)
|
||||||
|
{
|
||||||
|
fputs ("usage: run-getkey [options] [keyIdOrFingerprint]\n\n"
|
||||||
|
"Options:\n"
|
||||||
|
" --verbose run in verbose mode\n"
|
||||||
|
" --openpgp use the OpenPGP protocol (default)\n"
|
||||||
|
" --cms use the CMS protocol\n"
|
||||||
|
" --secret list only secret keys\n"
|
||||||
|
" --with-secret list pubkeys with secret info filled\n"
|
||||||
|
" --local use GPGME_KEYLIST_MODE_LOCAL\n"
|
||||||
|
" --extern use GPGME_KEYLIST_MODE_EXTERN\n"
|
||||||
|
" --sigs use GPGME_KEYLIST_MODE_SIGS\n"
|
||||||
|
" --tofu use GPGME_KEYLIST_MODE_TOFU\n"
|
||||||
|
" --sig-notations use GPGME_KEYLIST_MODE_SIG_NOTATIONS\n"
|
||||||
|
" --ephemeral use GPGME_KEYLIST_MODE_EPHEMERAL\n"
|
||||||
|
" --validate use GPGME_KEYLIST_MODE_VALIDATE\n"
|
||||||
|
" --locate use GPGME_KEYLIST_MODE_LOCATE\n"
|
||||||
|
, stderr);
|
||||||
|
exit (ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
int last_argc = -1;
|
||||||
|
Protocol protocol = OpenPGP;
|
||||||
|
unsigned int mode = 0;
|
||||||
|
bool only_secret = false;
|
||||||
|
|
||||||
|
if (argc) {
|
||||||
|
argc--; argv++;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (argc && last_argc != argc ) {
|
||||||
|
last_argc = argc;
|
||||||
|
if (!strcmp (*argv, "--")) {
|
||||||
|
argc--; argv++;
|
||||||
|
break;
|
||||||
|
} else if (!strcmp (*argv, "--help")) {
|
||||||
|
show_usage (0);
|
||||||
|
} else if (!strcmp (*argv, "--openpgp")) {
|
||||||
|
protocol = OpenPGP;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--cms")) {
|
||||||
|
protocol = CMS;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--secret")) {
|
||||||
|
only_secret = true;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--local")) {
|
||||||
|
mode |= KeyListMode::Local;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--extern")) {
|
||||||
|
mode |= KeyListMode::Extern;
|
||||||
|
argc--; argv++;
|
||||||
|
}else if (!strcmp (*argv, "--tofu")) {
|
||||||
|
mode |= KeyListMode::WithTofu;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--sigs")) {
|
||||||
|
mode |= KeyListMode::Signatures;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--sig-notations")) {
|
||||||
|
mode |= KeyListMode::SignatureNotations;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--ephemeral")) {
|
||||||
|
mode |= KeyListMode::Ephemeral;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--validate")) {
|
||||||
|
mode |= KeyListMode::Validate;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--locate")) {
|
||||||
|
argc--; argv++;
|
||||||
|
mode |= KeyListMode::Locate;
|
||||||
|
} else if (!strncmp (*argv, "--", 2)) {
|
||||||
|
show_usage (1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc != 1) {
|
||||||
|
show_usage (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
GpgME::initializeLibrary();
|
||||||
|
auto ctx = std::unique_ptr<Context> (Context::createForProtocol(protocol));
|
||||||
|
if (!ctx) {
|
||||||
|
std::cerr << "Failed to get Context";
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
ctx->setKeyListMode (mode);
|
||||||
|
Error err;
|
||||||
|
const GpgME::Key key = ctx->key (*argv, err, only_secret);
|
||||||
|
std::stringstream ss;
|
||||||
|
|
||||||
|
ss << "Key " << key << " Err: " << err.asString() << "\n";
|
||||||
|
|
||||||
|
std::cout << ss.str();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
151
lang/cpp/tests/run-keylist.cpp
Normal file
151
lang/cpp/tests/run-keylist.cpp
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
/*
|
||||||
|
run-keylist.cpp
|
||||||
|
|
||||||
|
This file is part of GpgMEpp's test suite.
|
||||||
|
Copyright (c) 2018 Intevation GmbH
|
||||||
|
|
||||||
|
QGpgME is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License,
|
||||||
|
version 2, as published by the Free Software Foundation.
|
||||||
|
|
||||||
|
QGpgME 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
|
||||||
|
General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
|
In addition, as a special exception, the copyright holders give
|
||||||
|
permission to link the code of this program with any edition of
|
||||||
|
the Qt library by Trolltech AS, Norway (or with modified versions
|
||||||
|
of Qt that use the same license as Qt), and distribute linked
|
||||||
|
combinations including the two. You must obey the GNU General
|
||||||
|
Public License in all respects for all of the code used other than
|
||||||
|
Qt. If you modify this file, you may extend this exception to
|
||||||
|
your version of the file, but you are not obligated to do so. If
|
||||||
|
you do not wish to do so, delete this exception statement from
|
||||||
|
your version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "context.h"
|
||||||
|
#include "key.h"
|
||||||
|
#include "keylistresult.h"
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
#include <sstream>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
using namespace GpgME;
|
||||||
|
|
||||||
|
static int
|
||||||
|
show_usage (int ex)
|
||||||
|
{
|
||||||
|
fputs ("usage: run-keylist [options] [pattern]\n\n"
|
||||||
|
"Options:\n"
|
||||||
|
" --verbose run in verbose mode\n"
|
||||||
|
" --openpgp use the OpenPGP protocol (default)\n"
|
||||||
|
" --cms use the CMS protocol\n"
|
||||||
|
" --secret list only secret keys\n"
|
||||||
|
" --with-secret list pubkeys with secret info filled\n"
|
||||||
|
" --local use GPGME_KEYLIST_MODE_LOCAL\n"
|
||||||
|
" --extern use GPGME_KEYLIST_MODE_EXTERN\n"
|
||||||
|
" --sigs use GPGME_KEYLIST_MODE_SIGS\n"
|
||||||
|
" --tofu use GPGME_KEYLIST_MODE_TOFU\n"
|
||||||
|
" --sig-notations use GPGME_KEYLIST_MODE_SIG_NOTATIONS\n"
|
||||||
|
" --ephemeral use GPGME_KEYLIST_MODE_EPHEMERAL\n"
|
||||||
|
" --validate use GPGME_KEYLIST_MODE_VALIDATE\n"
|
||||||
|
" --locate use GPGME_KEYLIST_MODE_LOCATE\n"
|
||||||
|
, stderr);
|
||||||
|
exit (ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main (int argc, char **argv)
|
||||||
|
{
|
||||||
|
int last_argc = -1;
|
||||||
|
Protocol protocol = OpenPGP;
|
||||||
|
unsigned int mode = 0;
|
||||||
|
bool only_secret = false;
|
||||||
|
|
||||||
|
if (argc) {
|
||||||
|
argc--; argv++;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (argc && last_argc != argc ) {
|
||||||
|
last_argc = argc;
|
||||||
|
if (!strcmp (*argv, "--")) {
|
||||||
|
argc--; argv++;
|
||||||
|
break;
|
||||||
|
} else if (!strcmp (*argv, "--help")) {
|
||||||
|
show_usage (0);
|
||||||
|
} else if (!strcmp (*argv, "--openpgp")) {
|
||||||
|
protocol = OpenPGP;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--cms")) {
|
||||||
|
protocol = CMS;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--secret")) {
|
||||||
|
only_secret = true;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--local")) {
|
||||||
|
mode |= KeyListMode::Local;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--extern")) {
|
||||||
|
mode |= KeyListMode::Extern;
|
||||||
|
argc--; argv++;
|
||||||
|
}else if (!strcmp (*argv, "--tofu")) {
|
||||||
|
mode |= KeyListMode::WithTofu;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--sigs")) {
|
||||||
|
mode |= KeyListMode::Signatures;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--sig-notations")) {
|
||||||
|
mode |= KeyListMode::SignatureNotations;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--ephemeral")) {
|
||||||
|
mode |= KeyListMode::Ephemeral;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--validate")) {
|
||||||
|
mode |= KeyListMode::Validate;
|
||||||
|
argc--; argv++;
|
||||||
|
} else if (!strcmp (*argv, "--locate")) {
|
||||||
|
argc--; argv++;
|
||||||
|
mode |= KeyListMode::Locate;
|
||||||
|
} else if (!strncmp (*argv, "--", 2)) {
|
||||||
|
show_usage (1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc > 1) {
|
||||||
|
show_usage (1);
|
||||||
|
}
|
||||||
|
|
||||||
|
GpgME::initializeLibrary();
|
||||||
|
auto ctx = std::unique_ptr<Context> (Context::createForProtocol(protocol));
|
||||||
|
if (!ctx) {
|
||||||
|
std::cerr << "Failed to get Context";
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
ctx->setKeyListMode (mode);
|
||||||
|
Error err = ctx->startKeyListing (*argv, only_secret);
|
||||||
|
if (err) {
|
||||||
|
std::cout << "Error: " << err.asString() << "\n";
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
GpgME::Key key;
|
||||||
|
std::stringstream ss;
|
||||||
|
do {
|
||||||
|
key = ctx->nextKey(err);
|
||||||
|
ss << key << "\n\n";
|
||||||
|
} while (!err && !key.isNull());
|
||||||
|
|
||||||
|
std::cout << ss.str();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user