From c64288bfe549ccc95eb6b887f3b803b397ae412c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20Knau=C3=9F?= Date: Tue, 2 Aug 2016 09:33:02 +0200 Subject: Make encrypted tests pass automatically --- .../domain/mimetreeparser/tests/CMakeLists.txt | 6 +- .../mimetreeparser/tests/gnupg_home/CMakeLists.txt | 10 + .../tests/gnupg_home/dirmngr-cache.d/DIR.txt | 3 + ...crl-4E31CEB57DDD4A7B9991AB05507B1ED4293FF952.db | Bin 0 -> 2130 bytes ...crl-7F2A402CBB016A9146D613568C89D3596A4111AA.db | Bin 0 -> 2048 bytes .../mimetreeparser/tests/gnupg_home/dirmngr.conf | 8 + .../tests/gnupg_home/gpg-agent.conf.in | 10 + .../mimetreeparser/tests/gnupg_home/gpg.conf | 244 +++++++++++++++++++++ .../mimetreeparser/tests/gnupg_home/gpgsm.conf.in | 10 + .../tests/gnupg_home/pinentry-fake.sh | 9 + .../1AA8BA52430E51AE249AF0DA97D59F869E4101A8.key | Bin 0 -> 528 bytes .../mimetreeparser/tests/gnupg_home/pubring.gpg | Bin 0 -> 6757 bytes .../mimetreeparser/tests/gnupg_home/pubring.kbx | Bin 0 -> 2017 bytes .../mimetreeparser/tests/gnupg_home/scdaemon.conf | 8 + .../mimetreeparser/tests/gnupg_home/secring.gpg | Bin 0 -> 5163 bytes .../mimetreeparser/tests/gnupg_home/trustdb.gpg | Bin 0 -> 1440 bytes .../mimetreeparser/tests/gnupg_home/trustlist.txt | 11 + .../domain/mimetreeparser/tests/interfacetest.cpp | 21 +- .../tests/kdepim_add_gpg_crypto_test.cmake | 60 +++++ .../kdepim_generate_crypto_test_wrapper.cmake | 45 ++++ 20 files changed, 442 insertions(+), 3 deletions(-) create mode 100644 framework/domain/mimetreeparser/tests/gnupg_home/CMakeLists.txt create mode 100644 framework/domain/mimetreeparser/tests/gnupg_home/dirmngr-cache.d/DIR.txt create mode 100644 framework/domain/mimetreeparser/tests/gnupg_home/dirmngr-cache.d/crl-4E31CEB57DDD4A7B9991AB05507B1ED4293FF952.db create mode 100644 framework/domain/mimetreeparser/tests/gnupg_home/dirmngr-cache.d/crl-7F2A402CBB016A9146D613568C89D3596A4111AA.db create mode 100644 framework/domain/mimetreeparser/tests/gnupg_home/dirmngr.conf create mode 100644 framework/domain/mimetreeparser/tests/gnupg_home/gpg-agent.conf.in create mode 100644 framework/domain/mimetreeparser/tests/gnupg_home/gpg.conf create mode 100644 framework/domain/mimetreeparser/tests/gnupg_home/gpgsm.conf.in create mode 100755 framework/domain/mimetreeparser/tests/gnupg_home/pinentry-fake.sh create mode 100644 framework/domain/mimetreeparser/tests/gnupg_home/private-keys-v1.d/1AA8BA52430E51AE249AF0DA97D59F869E4101A8.key create mode 100644 framework/domain/mimetreeparser/tests/gnupg_home/pubring.gpg create mode 100644 framework/domain/mimetreeparser/tests/gnupg_home/pubring.kbx create mode 100644 framework/domain/mimetreeparser/tests/gnupg_home/scdaemon.conf create mode 100644 framework/domain/mimetreeparser/tests/gnupg_home/secring.gpg create mode 100644 framework/domain/mimetreeparser/tests/gnupg_home/trustdb.gpg create mode 100644 framework/domain/mimetreeparser/tests/gnupg_home/trustlist.txt create mode 100644 framework/domain/mimetreeparser/tests/kdepim_add_gpg_crypto_test.cmake create mode 100644 framework/domain/mimetreeparser/tests/kdepim_generate_crypto_test_wrapper.cmake (limited to 'framework') diff --git a/framework/domain/mimetreeparser/tests/CMakeLists.txt b/framework/domain/mimetreeparser/tests/CMakeLists.txt index d3549215..7945c5a0 100644 --- a/framework/domain/mimetreeparser/tests/CMakeLists.txt +++ b/framework/domain/mimetreeparser/tests/CMakeLists.txt @@ -1,10 +1,12 @@ +add_subdirectory(gnupg_home) add_definitions( -DMAIL_DATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/data" ) +include(${CMAKE_CURRENT_SOURCE_DIR}/kdepim_add_gpg_crypto_test.cmake) include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/.. ) add_executable(mimetreeparsertest interfacetest.cpp) -add_test(mimetreeparsertest mimetreeparsertest) +add_gpg_crypto_test(mimetreeparsertest mimetreeparsertest) qt5_use_modules(mimetreeparsertest Core Test) -target_link_libraries(mimetreeparsertest mimetreeparser) \ No newline at end of file +target_link_libraries(mimetreeparsertest mimetreeparser) diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/CMakeLists.txt b/framework/domain/mimetreeparser/tests/gnupg_home/CMakeLists.txt new file mode 100644 index 00000000..9c64a008 --- /dev/null +++ b/framework/domain/mimetreeparser/tests/gnupg_home/CMakeLists.txt @@ -0,0 +1,10 @@ +configure_file( gpg-agent.conf.in + "${CMAKE_CURRENT_BINARY_DIR}/gpg-agent.conf" @ONLY ) + +configure_file( gpgsm.conf.in + "${CMAKE_CURRENT_BINARY_DIR}/gpgsm.conf" @ONLY ) + +file( COPY + ${CMAKE_CURRENT_SOURCE_DIR} + DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/../" +) diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/dirmngr-cache.d/DIR.txt b/framework/domain/mimetreeparser/tests/gnupg_home/dirmngr-cache.d/DIR.txt new file mode 100644 index 00000000..1a45a6b3 --- /dev/null +++ b/framework/domain/mimetreeparser/tests/gnupg_home/dirmngr-cache.d/DIR.txt @@ -0,0 +1,3 @@ +v:1: +c:4E31CEB57DDD4A7B9991AB05507B1ED4293FF952:CN=Test-ZS 7,O=Intevation GmbH,C=DE:ldap%3A//ca.intevation.org/cn=Test-ZS 7, o=Intevation GmbH, c=DE?certificateRevocationList:20100615T181523:20100707T181523:72FEF3FD88455A1D4C6796A6499D4422:::: +c:7F2A402CBB016A9146D613568C89D3596A4111AA:CN=Wurzel ZS 3,O=Intevation GmbH,C=DE:ldap%3A//ca.intevation.org/cn=Wurzel ZS 3, o=Intevation GmbH, c=DE?certificateRevocationList:20100625T102134:20100814T102134:44E60EEC02EF2FBF7A5C77E9BD565667:::: diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/dirmngr-cache.d/crl-4E31CEB57DDD4A7B9991AB05507B1ED4293FF952.db b/framework/domain/mimetreeparser/tests/gnupg_home/dirmngr-cache.d/crl-4E31CEB57DDD4A7B9991AB05507B1ED4293FF952.db new file mode 100644 index 00000000..0b7e2dd4 Binary files /dev/null and b/framework/domain/mimetreeparser/tests/gnupg_home/dirmngr-cache.d/crl-4E31CEB57DDD4A7B9991AB05507B1ED4293FF952.db differ diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/dirmngr-cache.d/crl-7F2A402CBB016A9146D613568C89D3596A4111AA.db b/framework/domain/mimetreeparser/tests/gnupg_home/dirmngr-cache.d/crl-7F2A402CBB016A9146D613568C89D3596A4111AA.db new file mode 100644 index 00000000..47474a26 Binary files /dev/null and b/framework/domain/mimetreeparser/tests/gnupg_home/dirmngr-cache.d/crl-7F2A402CBB016A9146D613568C89D3596A4111AA.db differ diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/dirmngr.conf b/framework/domain/mimetreeparser/tests/gnupg_home/dirmngr.conf new file mode 100644 index 00000000..a17a0354 --- /dev/null +++ b/framework/domain/mimetreeparser/tests/gnupg_home/dirmngr.conf @@ -0,0 +1,8 @@ + +###+++--- GPGConf ---+++### +debug-level basic +log-file socket:///home/leo/kde/src/kdepim/messagecomposer/tests/gnupg_home/log-socket +###+++--- GPGConf ---+++### Tue 29 Jun 2010 10:23:13 AM EDT +# GPGConf edited this configuration file. +# It will disable options before this marked block, but it will +# never change anything below these lines. diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/gpg-agent.conf.in b/framework/domain/mimetreeparser/tests/gnupg_home/gpg-agent.conf.in new file mode 100644 index 00000000..ece69255 --- /dev/null +++ b/framework/domain/mimetreeparser/tests/gnupg_home/gpg-agent.conf.in @@ -0,0 +1,10 @@ +pinentry-program @CMAKE_CURRENT_BINARY_DIR@/pinentry-fake.sh +###+++--- GPGConf ---+++### +allow-mark-trusted +debug-level basic +faked-system-time 20130110T154812 +log-file @CMAKE_CURRENT_BINARY_DIR@/gpg-agent.log +###+++--- GPGConf ---+++### Tue 29 Jun 2010 10:23:13 AM EDT +# GPGConf edited this configuration file. +# It will disable options before this marked block, but it will +# never change anything below these lines. diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/gpg.conf b/framework/domain/mimetreeparser/tests/gnupg_home/gpg.conf new file mode 100644 index 00000000..f1760823 --- /dev/null +++ b/framework/domain/mimetreeparser/tests/gnupg_home/gpg.conf @@ -0,0 +1,244 @@ +# Options for GnuPG +# Copyright 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +# +# This file is free software; as a special exception the author gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. +# +# This file is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Unless you specify which option file to use (with the command line +# option "--options filename"), GnuPG uses the file ~/.gnupg/gpg.conf +# by default. +# +# An options file can contain any long options which are available in +# GnuPG. If the first non white space character of a line is a '#', +# this line is ignored. Empty lines are also ignored. +# +# See the man page for a list of options. + +# Uncomment the following option to get rid of the copyright notice + +#no-greeting + +# If you have more than 1 secret key in your keyring, you may want to +# uncomment the following option and set your preferred keyid. + +#default-key 621CC013 + +# If you do not pass a recipient to gpg, it will ask for one. Using +# this option you can encrypt to a default key. Key validation will +# not be done in this case. The second form uses the default key as +# default recipient. + +#default-recipient some-user-id +#default-recipient-self + +# Use --encrypt-to to add the specified key as a recipient to all +# messages. This is useful, for example, when sending mail through a +# mail client that does not automatically encrypt mail to your key. +# In the example, this option allows you to read your local copy of +# encrypted mail that you've sent to others. + +#encrypt-to some-key-id + +# By default GnuPG creates version 3 signatures for data files. This +# is not strictly OpenPGP compliant but PGP 6 and most versions of PGP +# 7 require them. To disable this behavior, you may use this option +# or --openpgp. + +#no-force-v3-sigs + +# Because some mailers change lines starting with "From " to ">From " +# it is good to handle such lines in a special way when creating +# cleartext signatures; all other PGP versions do it this way too. + +#no-escape-from-lines + +# If you do not use the Latin-1 (ISO-8859-1) charset, you should tell +# GnuPG which is the native character set. Please check the man page +# for supported character sets. This character set is only used for +# metadata and not for the actual message which does not undergo any +# translation. Note that future version of GnuPG will change to UTF-8 +# as default character set. In most cases this option is not required +# as GnuPG is able to figure out the correct charset at runtime. + +#charset utf-8 + +# Group names may be defined like this: +# group mynames = paige 0x12345678 joe patti +# +# Any time "mynames" is a recipient (-r or --recipient), it will be +# expanded to the names "paige", "joe", and "patti", and the key ID +# "0x12345678". Note there is only one level of expansion - you +# cannot make an group that points to another group. Note also that +# if there are spaces in the recipient name, this will appear as two +# recipients. In these cases it is better to use the key ID. + +#group mynames = paige 0x12345678 joe patti + +# Lock the file only once for the lifetime of a process. If you do +# not define this, the lock will be obtained and released every time +# it is needed, which is usually preferable. + +#lock-once + +# GnuPG can send and receive keys to and from a keyserver. These +# servers can be HKP, email, or LDAP (if GnuPG is built with LDAP +# support). +# +# Example HKP keyserver: +# hkp://keys.gnupg.net +# hkp://subkeys.pgp.net +# +# Example email keyserver: +# mailto:pgp-public-keys@keys.pgp.net +# +# Example LDAP keyservers: +# ldap://keyserver.pgp.com +# +# Regular URL syntax applies, and you can set an alternate port +# through the usual method: +# hkp://keyserver.example.net:22742 +# +# Most users just set the name and type of their preferred keyserver. +# Note that most servers (with the notable exception of +# ldap://keyserver.pgp.com) synchronize changes with each other. Note +# also that a single server name may actually point to multiple +# servers via DNS round-robin. hkp://keys.gnupg.net is an example of +# such a "server", which spreads the load over a number of physical +# servers. To see the IP address of the server actually used, you may use +# the "--keyserver-options debug". + +keyserver hkp://keys.gnupg.net +#keyserver mailto:pgp-public-keys@keys.nl.pgp.net +#keyserver ldap://keyserver.pgp.com + +# Common options for keyserver functions: +# +# include-disabled : when searching, include keys marked as "disabled" +# on the keyserver (not all keyservers support this). +# +# no-include-revoked : when searching, do not include keys marked as +# "revoked" on the keyserver. +# +# verbose : show more information as the keys are fetched. +# Can be used more than once to increase the amount +# of information shown. +# +# use-temp-files : use temporary files instead of a pipe to talk to the +# keyserver. Some platforms (Win32 for one) always +# have this on. +# +# keep-temp-files : do not delete temporary files after using them +# (really only useful for debugging) +# +# http-proxy="proxy" : set the proxy to use for HTTP and HKP keyservers. +# This overrides the "http_proxy" environment variable, +# if any. +# +# auto-key-retrieve : automatically fetch keys as needed from the keyserver +# when verifying signatures or when importing keys that +# have been revoked by a revocation key that is not +# present on the keyring. +# +# no-include-attributes : do not include attribute IDs (aka "photo IDs") +# when sending keys to the keyserver. + +#keyserver-options auto-key-retrieve + +# Display photo user IDs in key listings + +# list-options show-photos + +# Display photo user IDs when a signature from a key with a photo is +# verified + +# verify-options show-photos + +# Use this program to display photo user IDs +# +# %i is expanded to a temporary file that contains the photo. +# %I is the same as %i, but the file isn't deleted afterwards by GnuPG. +# %k is expanded to the key ID of the key. +# %K is expanded to the long OpenPGP key ID of the key. +# %t is expanded to the extension of the image (e.g. "jpg"). +# %T is expanded to the MIME type of the image (e.g. "image/jpeg"). +# %f is expanded to the fingerprint of the key. +# %% is %, of course. +# +# If %i or %I are not present, then the photo is supplied to the +# viewer on standard input. If your platform supports it, standard +# input is the best way to do this as it avoids the time and effort in +# generating and then cleaning up a secure temp file. +# +# If no photo-viewer is provided, GnuPG will look for xloadimage, eog, +# or display (ImageMagick). On Mac OS X and Windows, the default is +# to use your regular JPEG image viewer. +# +# Some other viewers: +# photo-viewer "qiv %i" +# photo-viewer "ee %i" +# +# This one saves a copy of the photo ID in your home directory: +# photo-viewer "cat > ~/photoid-for-key-%k.%t" +# +# Use your MIME handler to view photos: +# photo-viewer "metamail -q -d -b -c %T -s 'KeyID 0x%k' -f GnuPG" + +# Passphrase agent +# +# We support the old experimental passphrase agent protocol as well as +# the new Assuan based one (currently available in the "newpg" package +# at ftp.gnupg.org/gcrypt/alpha/aegypten/). To make use of the agent, +# you have to run an agent as daemon and use the option +# +# use-agent +# +# which tries to use the agent but will fallback to the regular mode +# if there is a problem connecting to the agent. The normal way to +# locate the agent is by looking at the environment variable +# GPG_AGENT_INFO which should have been set during gpg-agent startup. +# In certain situations the use of this variable is not possible, thus +# the option +# +# --gpg-agent-info=::1 +# +# may be used to override it. + +# Automatic key location +# +# GnuPG can automatically locate and retrieve keys as needed using the +# auto-key-locate option. This happens when encrypting to an email +# address (in the "user@example.com" form), and there are no +# user@example.com keys on the local keyring. This option takes the +# following arguments, in the order they are to be tried: +# +# cert = locate a key using DNS CERT, as specified in RFC-4398. +# GnuPG can handle both the PGP (key) and IPGP (URL + fingerprint) +# CERT methods. +# +# pka = locate a key using DNS PKA. +# +# ldap = locate a key using the PGP Universal method of checking +# "ldap://keys.(thedomain)". For example, encrypting to +# user@example.com will check ldap://keys.example.com. +# +# keyserver = locate a key using whatever keyserver is defined using +# the keyserver option. +# +# You may also list arbitrary keyservers here by URL. +# +# Try CERT, then PKA, then LDAP, then hkp://subkeys.net: +#auto-key-locate cert pka ldap hkp://subkeys.pgp.net + +###+++--- GPGConf ---+++### +utf8-strings +#debug-level basic +#log-file socket:///home/leo/kde/src/kdepim/messagecomposer/tests/gnupg_home/log-socket +###+++--- GPGConf ---+++### Tue 29 Jun 2010 10:23:13 AM EDT +# GPGConf edited this configuration file. +# It will disable options before this marked block, but it will +# never change anything below these lines. diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/gpgsm.conf.in b/framework/domain/mimetreeparser/tests/gnupg_home/gpgsm.conf.in new file mode 100644 index 00000000..92b6119d --- /dev/null +++ b/framework/domain/mimetreeparser/tests/gnupg_home/gpgsm.conf.in @@ -0,0 +1,10 @@ + +###+++--- GPGConf ---+++### +disable-crl-checks +debug-level basic +faked-system-time 20130110T154812 +log-file @CMAKE_CURRENT_BINARY_DIR@/gpgsm.log +###+++--- GPGConf ---+++### Tue 29 Jun 2010 10:23:13 AM EDT +# GPGConf edited this configuration file. +# It will disable options before this marked block, but it will +# never change anything below these lines. diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/pinentry-fake.sh b/framework/domain/mimetreeparser/tests/gnupg_home/pinentry-fake.sh new file mode 100755 index 00000000..7135a942 --- /dev/null +++ b/framework/domain/mimetreeparser/tests/gnupg_home/pinentry-fake.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +echo "OK Your orders please" +while : +do + read cmd + echo "OK" + [ "$cmd" = "BYE" ] && break +done diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/private-keys-v1.d/1AA8BA52430E51AE249AF0DA97D59F869E4101A8.key b/framework/domain/mimetreeparser/tests/gnupg_home/private-keys-v1.d/1AA8BA52430E51AE249AF0DA97D59F869E4101A8.key new file mode 100644 index 00000000..39ac307b Binary files /dev/null and b/framework/domain/mimetreeparser/tests/gnupg_home/private-keys-v1.d/1AA8BA52430E51AE249AF0DA97D59F869E4101A8.key differ diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/pubring.gpg b/framework/domain/mimetreeparser/tests/gnupg_home/pubring.gpg new file mode 100644 index 00000000..2e00fa24 Binary files /dev/null and b/framework/domain/mimetreeparser/tests/gnupg_home/pubring.gpg differ diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/pubring.kbx b/framework/domain/mimetreeparser/tests/gnupg_home/pubring.kbx new file mode 100644 index 00000000..0230f313 Binary files /dev/null and b/framework/domain/mimetreeparser/tests/gnupg_home/pubring.kbx differ diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/scdaemon.conf b/framework/domain/mimetreeparser/tests/gnupg_home/scdaemon.conf new file mode 100644 index 00000000..a17a0354 --- /dev/null +++ b/framework/domain/mimetreeparser/tests/gnupg_home/scdaemon.conf @@ -0,0 +1,8 @@ + +###+++--- GPGConf ---+++### +debug-level basic +log-file socket:///home/leo/kde/src/kdepim/messagecomposer/tests/gnupg_home/log-socket +###+++--- GPGConf ---+++### Tue 29 Jun 2010 10:23:13 AM EDT +# GPGConf edited this configuration file. +# It will disable options before this marked block, but it will +# never change anything below these lines. diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/secring.gpg b/framework/domain/mimetreeparser/tests/gnupg_home/secring.gpg new file mode 100644 index 00000000..cfd3387d Binary files /dev/null and b/framework/domain/mimetreeparser/tests/gnupg_home/secring.gpg differ diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/trustdb.gpg b/framework/domain/mimetreeparser/tests/gnupg_home/trustdb.gpg new file mode 100644 index 00000000..70089c15 Binary files /dev/null and b/framework/domain/mimetreeparser/tests/gnupg_home/trustdb.gpg differ diff --git a/framework/domain/mimetreeparser/tests/gnupg_home/trustlist.txt b/framework/domain/mimetreeparser/tests/gnupg_home/trustlist.txt new file mode 100644 index 00000000..bbb0442d --- /dev/null +++ b/framework/domain/mimetreeparser/tests/gnupg_home/trustlist.txt @@ -0,0 +1,11 @@ +5E:7C:B2:F4:9F:70:05:43:42:32:5D:75:74:70:00:09:B9:D8:08:61 S + + + +# CN=unittest cert +# O=KDAB +# C=US +# EMail=test@example.com +24:D2:FC:A2:2E:B3:B8:0A:1E:37:71:D1:4C:C6:58:E3:21:2B:49:DC S + + diff --git a/framework/domain/mimetreeparser/tests/interfacetest.cpp b/framework/domain/mimetreeparser/tests/interfacetest.cpp index 83de97f7..615d5742 100644 --- a/framework/domain/mimetreeparser/tests/interfacetest.cpp +++ b/framework/domain/mimetreeparser/tests/interfacetest.cpp @@ -30,6 +30,19 @@ QByteArray readMailFromFile(const QString &mailFile) return file.readAll(); } +QByteArray join(QVector vec, QByteArray sep) +{ + QByteArray ret; + bool bInit = true; + foreach(const auto &entry, vec) { + if (!bInit) { + ret += sep; + } + bInit = false; + ret += entry; + } + return ret; +} class InterfaceTest : public QObject { @@ -38,7 +51,10 @@ private: void printTree(const Part::Ptr &start, QString pre) { foreach (const auto &part, start->subParts()) { - qWarning() << QStringLiteral("%1* %2").arg(pre).arg(QString::fromLatin1(part->type())); + qWarning() << QStringLiteral("%1* %2(%3)") + .arg(pre) + .arg(QString::fromLatin1(part->type())) + .arg(QString::fromLatin1(join(part->availableContents(),", "))); printTree(part,pre + QStringLiteral(" ")); } } @@ -48,6 +64,7 @@ private slots: void testTextMail() { Parser parser(readMailFromFile("plaintext.mbox")); + printTree(parser.d->mTree,QString()); auto contentPartList = parser.collectContentParts(); QCOMPARE(contentPartList.size(), 1); auto contentPart = contentPartList[0]; @@ -67,6 +84,7 @@ private slots: void testTextAlternative() { Parser parser(readMailFromFile("alternative.mbox")); + printTree(parser.d->mTree,QString()); auto contentPartList = parser.collectContentParts(); QCOMPARE(contentPartList.size(), 1); auto contentPart = contentPartList[0]; @@ -90,6 +108,7 @@ private slots: void testTextHtml() { Parser parser(readMailFromFile("html.mbox")); + printTree(parser.d->mTree,QString()); auto contentPartList = parser.collectContentParts(); QCOMPARE(contentPartList.size(), 1); auto contentPart = contentPartList[0]; diff --git a/framework/domain/mimetreeparser/tests/kdepim_add_gpg_crypto_test.cmake b/framework/domain/mimetreeparser/tests/kdepim_add_gpg_crypto_test.cmake new file mode 100644 index 00000000..17078202 --- /dev/null +++ b/framework/domain/mimetreeparser/tests/kdepim_add_gpg_crypto_test.cmake @@ -0,0 +1,60 @@ +# Copyright (c) 2013 Sandro Knauß +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +set( GNUPGHOME ${CMAKE_BINARY_DIR}/framework/domain/mimetreeparser/tests/gnupg_home ) +add_definitions( -DGNUPGHOME="\\"${GNUPGHOME}\\"" ) + +macro (ADD_GPG_CRYPTO_TEST _target _testname) + if (UNIX) + if (APPLE) + set(_library_path_variable "DYLD_LIBRARY_PATH") + elseif (CYGWIN) + set(_library_path_variable "PATH") + else (APPLE) + set(_library_path_variable "LD_LIBRARY_PATH") + endif (APPLE) + + if (APPLE) + # DYLD_LIBRARY_PATH does not work like LD_LIBRARY_PATH + # OSX already has the RPATH in libraries and executables, putting runtime directories in + # DYLD_LIBRARY_PATH actually breaks things + set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/") + else (APPLE) + set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/:${LIB_INSTALL_DIR}:${QT_LIBRARY_DIR}") + endif (APPLE) + set(_executable "$") + + # use add_custom_target() to have the sh-wrapper generated during build time instead of cmake time + add_custom_command(TARGET ${_target} POST_BUILD + COMMAND ${CMAKE_COMMAND} + -D_filename=${_executable}.shell -D_library_path_variable=${_library_path_variable} + -D_ld_library_path="${_ld_library_path}" -D_executable=$ + -D_gnupghome="${GNUPGHOME}" + -P ${CMAKE_SOURCE_DIR}/framework/domain/mimetreeparser/tests/kdepim_generate_crypto_test_wrapper.cmake + ) + + set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${_executable}.shell" ) + add_test(NAME ${_testname} COMMAND ${_executable}.shell) + + else (UNIX) + # under windows, set the property WRAPPER_SCRIPT just to the name of the executable + # maybe later this will change to a generated batch file (for setting the PATH so that the Qt libs are found) + set(_ld_library_path "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}\;${LIB_INSTALL_DIR}\;${QT_LIBRARY_DIR}") + set(_executable "$") + + # use add_custom_target() to have the batch-file-wrapper generated during build time instead of cmake time + add_custom_command(TARGET ${_target} POST_BUILD + COMMAND ${CMAKE_COMMAND} + -D_filename="${_executable}.bat" + -D_ld_library_path="${_ld_library_path}" -D_executable="${_executable}" + -D_gnupghome="${GNUPGHOME}" + -P ${CMAKE_SOURCE_DIR}/framework/domain/mimetreeparser/tests/kdepim_generate_crypto_test_wrapper.cmake + ) + + add_test(NAME ${_testname} COMMAND ${_executable}.bat) + + endif (UNIX) +endmacro (ADD_GPG_CRYPTO_TEST) + diff --git a/framework/domain/mimetreeparser/tests/kdepim_generate_crypto_test_wrapper.cmake b/framework/domain/mimetreeparser/tests/kdepim_generate_crypto_test_wrapper.cmake new file mode 100644 index 00000000..e1412f37 --- /dev/null +++ b/framework/domain/mimetreeparser/tests/kdepim_generate_crypto_test_wrapper.cmake @@ -0,0 +1,45 @@ +# Copyright (c) 2006, Alexander Neundorf, +# Copyright (c) 2013, Sandro Knauß +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + + +if (UNIX) + +file(WRITE "${_filename}" +"#!/bin/sh +# created by cmake, don't edit, changes will be lost + +# don't mess with a gpg-agent already running on the system +unset GPG_AGENT_INFO + +${_library_path_variable}=${_ld_library_path}\${${_library_path_variable}:+:\$${_library_path_variable}} GNUPGHOME=${_gnupghome} gpg-agent --daemon \"${_executable}\" \"$@\" +_result=$? +_pid=`echo GETINFO pid | GNUPGHOME=${_gnupghome} gpg-connect-agent | grep 'D' | cut -d' ' -f2` +if [ ! -z \"\$_pid\" ]; then + echo \"Waiting for gpg-agent to terminate (PID: $_pid)...\" + while kill -0 \"\$_pid\"; do + sleep 1 + done +fi +exit \$_result +") + +# make it executable +# since this is only executed on UNIX, it is safe to call chmod +exec_program(chmod ARGS ug+x \"${_filename}\" OUTPUT_VARIABLE _dummy ) + +else (UNIX) + +file(TO_NATIVE_PATH "${_ld_library_path}" win_path) +file(TO_NATIVE_PATH "${_gnupghome}" win_gnupghome) + +file(WRITE "${_filename}" +" +set PATH=${win_path};$ENV{PATH} +set GNUPGHOME=${win_gnupghome};$ENV{GNUPGHOME} +gpg-agent --daemon \"${_executable}\" %* +") + +endif (UNIX) -- cgit v1.2.3