diff options
author | Justus Winter <justus@g10code.com> | 2016-11-07 16:21:21 +0100 |
---|---|---|
committer | Justus Winter <justus@g10code.com> | 2016-11-07 16:36:36 +0100 |
commit | a55393cb5f4b331cb3a715c7d9a8b91f7606f337 (patch) | |
tree | 7e19d86a3271b4a3acade27c1509bd7f2b504478 /tests/openpgp | |
parent | tests: Do not allow tests to be run in a shared environment. (diff) | |
download | gnupg2-a55393cb5f4b331cb3a715c7d9a8b91f7606f337.tar.xz gnupg2-a55393cb5f4b331cb3a715c7d9a8b91f7606f337.zip |
tests: Move environment creation and teardown into each test.
* tests/gpgscm/tests.scm (log): New function.
* tests/openpgp/run-tests.scm (run-tests-parallel): Do not run the
startup and teardown scripts.
(run-tests-sequential): Likewise.
* tests/openpgp/setup.scm: Move all functions...
* tests/openpgp/defs.scm: ... here and make them less verbose.
(setup-environment): New function.
(setup-legacy-environment): Likewise.
(start-agent): Make less verbose, run 'stop-agent' at interpreter
exit.
(stop-agent): Make less verbose.
* tests/openpgp/finish.scm: Drop file.
* tests/openpgp/Makefile.am (EXTRA_DIST): Drop removed file.
* tests/openpgp/4gb-packet.scm: Use 'setup-environment' or
'setup-legacy-environment' as appropriate.
* tests/openpgp/armdetach.scm: Likewise.
* tests/openpgp/armdetachm.scm: Likewise.
* tests/openpgp/armencrypt.scm: Likewise.
* tests/openpgp/armencryptp.scm: Likewise.
* tests/openpgp/armor.scm: Likewise.
* tests/openpgp/armsignencrypt.scm: Likewise.
* tests/openpgp/armsigs.scm: Likewise.
* tests/openpgp/clearsig.scm: Likewise.
* tests/openpgp/conventional-mdc.scm: Likewise.
* tests/openpgp/conventional.scm: Likewise.
* tests/openpgp/decrypt-dsa.scm: Likewise.
* tests/openpgp/decrypt.scm: Likewise.
* tests/openpgp/default-key.scm: Likewise.
* tests/openpgp/detach.scm: Likewise.
* tests/openpgp/detachm.scm: Likewise.
* tests/openpgp/ecc.scm: Likewise.
* tests/openpgp/encrypt-dsa.scm: Likewise.
* tests/openpgp/encrypt.scm: Likewise.
* tests/openpgp/encryptp.scm: Likewise.
* tests/openpgp/export.scm: Likewise.
* tests/openpgp/finish.scm: Likewise.
* tests/openpgp/genkey1024.scm: Likewise.
* tests/openpgp/gpgtar.scm: Likewise.
* tests/openpgp/gpgv-forged-keyring.scm: Likewise.
* tests/openpgp/import.scm: Likewise.
* tests/openpgp/issue2015.scm: Likewise.
* tests/openpgp/issue2417.scm: Likewise.
* tests/openpgp/issue2419.scm: Likewise.
* tests/openpgp/key-selection.scm: Likewise.
* tests/openpgp/mds.scm: Likewise.
* tests/openpgp/multisig.scm: Likewise.
* tests/openpgp/quick-key-manipulation.scm: Likewise.
* tests/openpgp/seat.scm: Likewise.
* tests/openpgp/shell.scm: Likewise.
* tests/openpgp/signencrypt-dsa.scm: Likewise.
* tests/openpgp/signencrypt.scm: Likewise.
* tests/openpgp/sigs-dsa.scm: Likewise.
* tests/openpgp/sigs.scm: Likewise.
* tests/openpgp/ssh.scm: Likewise.
* tests/openpgp/tofu.scm: Likewise.
* tests/openpgp/use-exact-key.scm: Likewise.
* tests/openpgp/verify.scm: Likewise.
* tests/openpgp/version.scm: Likewise.
* tests/openpgp/issue2346.scm: Likewise and simplify.
--
The previous Bourne Shell-based test suite created the environment
before running all tests, and tore it down after executing them. When
we created the Scheme-based test suite, we kept this design at first,
but introduced a way to run each test in its own environment to
prevent tests from interfering with each other. Nevertheless, every
test started out with the same environment.
Move the creation of the test environment into each test. This gives
us finer control over the environment each test is run in. It also
makes it possible to run each test by simply executing it using gpgscm
without the use of the runner. Furthermore, it has the neat
side-effect of speeding up the test suite if run in parallel.
Signed-off-by: Justus Winter <justus@g10code.com>
Diffstat (limited to 'tests/openpgp')
49 files changed, 193 insertions, 168 deletions
diff --git a/tests/openpgp/4gb-packet.scm b/tests/openpgp/4gb-packet.scm index 8b2fcd6ca..9c387af30 100755 --- a/tests/openpgp/4gb-packet.scm +++ b/tests/openpgp/4gb-packet.scm @@ -21,6 +21,7 @@ ;; 2^32-1 as invalid and exit with status code 2. (load (with-path "defs.scm")) +(setup-environment) (if (= 0 (call `(,@GPG --list-packets ,(in-srcdir "4gb-packet.asc")))) (info "Can parse 4GB packets.") diff --git a/tests/openpgp/Makefile.am b/tests/openpgp/Makefile.am index acd232961..cfdd58da5 100644 --- a/tests/openpgp/Makefile.am +++ b/tests/openpgp/Makefile.am @@ -193,7 +193,7 @@ sample_msgs = samplemsgs/issue2419.asc EXTRA_DIST = defs.scm $(XTESTS) $(TEST_FILES) \ mkdemodirs signdemokey $(priv_keys) $(sample_keys) \ $(sample_msgs) ChangeLog-2011 run-tests.scm \ - setup.scm finish.scm shell.scm + setup.scm shell.scm CLEANFILES = prepared.stamp x y yy z out err $(data_files) \ plain-1 plain-2 plain-3 trustdb.gpg *.lock .\#lk* \ diff --git a/tests/openpgp/armdetach.scm b/tests/openpgp/armdetach.scm index 69e09d8ce..f45844139 100755 --- a/tests/openpgp/armdetach.scm +++ b/tests/openpgp/armdetach.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking armored detached signatures" diff --git a/tests/openpgp/armdetachm.scm b/tests/openpgp/armdetachm.scm index 618f7aab4..8d30fd349 100755 --- a/tests/openpgp/armdetachm.scm +++ b/tests/openpgp/armdetachm.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (define files (append plain-files data-files)) diff --git a/tests/openpgp/armencrypt.scm b/tests/openpgp/armencrypt.scm index b0cf0991a..b9dfc1e1d 100755 --- a/tests/openpgp/armencrypt.scm +++ b/tests/openpgp/armencrypt.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking armored encryption" diff --git a/tests/openpgp/armencryptp.scm b/tests/openpgp/armencryptp.scm index 7555ce9d9..d28090237 100755 --- a/tests/openpgp/armencryptp.scm +++ b/tests/openpgp/armencryptp.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking armored encryption and decryption using pipes" diff --git a/tests/openpgp/armor.scm b/tests/openpgp/armor.scm index 578e248a0..7498ba705 100755 --- a/tests/openpgp/armor.scm +++ b/tests/openpgp/armor.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (define armored_key_8192 "-----BEGIN PGP PUBLIC KEY BLOCK----- Version: SKS 1.0.9 diff --git a/tests/openpgp/armsignencrypt.scm b/tests/openpgp/armsignencrypt.scm index b84bfe4e0..18178f11e 100755 --- a/tests/openpgp/armsignencrypt.scm +++ b/tests/openpgp/armsignencrypt.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking armored signing and encryption" diff --git a/tests/openpgp/armsigs.scm b/tests/openpgp/armsigs.scm index d897581cb..6e5d0566b 100755 --- a/tests/openpgp/armsigs.scm +++ b/tests/openpgp/armsigs.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking armored signatures" diff --git a/tests/openpgp/clearsig.scm b/tests/openpgp/clearsig.scm index 96b1b4c31..7b9556153 100755 --- a/tests/openpgp/clearsig.scm +++ b/tests/openpgp/clearsig.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (define (check-signing args input) (lambda (source sink) diff --git a/tests/openpgp/conventional-mdc.scm b/tests/openpgp/conventional-mdc.scm index dcdb47405..fb9221773 100755 --- a/tests/openpgp/conventional-mdc.scm +++ b/tests/openpgp/conventional-mdc.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (define s2k '--s2k-count=65536) (define passphrase "Hier spricht HAL") diff --git a/tests/openpgp/conventional.scm b/tests/openpgp/conventional.scm index 67e28e246..af889dcee 100755 --- a/tests/openpgp/conventional.scm +++ b/tests/openpgp/conventional.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (define s2k '--s2k-count=65536) (define passphrase "Hier spricht HAL") diff --git a/tests/openpgp/decrypt-dsa.scm b/tests/openpgp/decrypt-dsa.scm index b01a0f771..49f95347c 100755 --- a/tests/openpgp/decrypt-dsa.scm +++ b/tests/openpgp/decrypt-dsa.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking decryption of supplied DSA encrypted file" diff --git a/tests/openpgp/decrypt.scm b/tests/openpgp/decrypt.scm index ec0f8e7ee..ba8bceee1 100755 --- a/tests/openpgp/decrypt.scm +++ b/tests/openpgp/decrypt.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking decryption of supplied files" diff --git a/tests/openpgp/default-key.scm b/tests/openpgp/default-key.scm index 07cc8c0a0..a90cca894 100755 --- a/tests/openpgp/default-key.scm +++ b/tests/openpgp/default-key.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) ;; Import the sample key ;; diff --git a/tests/openpgp/defs.scm b/tests/openpgp/defs.scm index 62bd1e2fc..09c313b2a 100644 --- a/tests/openpgp/defs.scm +++ b/tests/openpgp/defs.scm @@ -146,10 +146,132 @@ (if (number? verbose) (*set-verbose!* verbose))) +;; +;; Support for test environment creation and teardown. +;; + +(define (make-test-data filename size) + (call-with-binary-output-file + filename + (lambda (port) + (display (make-random-string size) port)))) + +(define (create-gpghome) + (log "Creating test environment...") + + (srandom (getpid)) + (make-test-data "random_seed" 600) + + (log "Creating configuration files") + (for-each + (lambda (name) + (file-copy (in-srcdir (string-append name ".tmpl")) name) + (let ((p (open-input-output-file name))) + (cond + ((string=? "gpg.conf" name) + (if have-opt-always-trust + (display "no-auto-check-trustdb\n" p)) + (display (string-append "agent-program " + (tool 'gpg-agent) + "|--debug-quick-random\n") p) + (display "allow-weak-digest-algos\n" p)) + ((string=? "gpg-agent.conf" name) + (display (string-append "pinentry-program " PINENTRY "\n") p))))) + '("gpg.conf" "gpg-agent.conf"))) + +;; Initialize the test environment, install appropriate configuration +;; and start the agent, without any keys. +(define (setup-environment) + (create-gpghome) + (start-agent)) + +(define (create-legacy-gpghome) + (log "Creating sample data files") + (for-each + (lambda (size) + (make-test-data (string-append "data-" (number->string size)) + size)) + '(500 9000 32000 80000)) + + (log "Unpacking samples") + (for-each + (lambda (name) + (dearmor (in-srcdir (string-append name "o.asc")) name)) + '("plain-1" "plain-2" "plain-3" "plain-large")) + + (mkdir "private-keys-v1.d" "-rwx") + + (log "Storing private keys") + (for-each + (lambda (name) + (dearmor (in-srcdir (string-append "/privkeys/" name ".asc")) + (string-append "private-keys-v1.d/" name ".key"))) + '("50B2D4FA4122C212611048BC5FC31BD44393626E" + "7E201E28B6FEB2927B321F443205F4724EBE637E" + "13FDB8809B17C5547779F9D205C45F47CE0217CE" + "343D8AF79796EE107D645A2787A9D9252F924E6F" + "8B5ABF3EF9EB8D96B91A0B8C2C4401C91C834C34" + "0D6F6AD4C4C803B25470F9104E9F4E6A4CA64255" + "FD692BD59D6640A84C8422573D469F84F3B98E53" + "76F7E2B35832976B50A27A282D9B87E44577EB66" + "A0747D5F9425E6664F4FFBEED20FBCA79FDED2BD" + "00FE67F28A52A8AA08FFAED20AF832DA916D1985" + "1DF48228FEFF3EC2481B106E0ACA8C465C662CC5" + "A2832820DC9F40751BDCD375BB0945BA33EC6B4C" + "ADE710D74409777B7729A7653373D820F67892E0" + "CEFC51AF91F68A2904FBFF62C4F075A4785B803F" + "1E28F20E41B54C2D1234D896096495FF57E08D18" + "EB33B687EB8581AB64D04852A54453E85F3DF62D" + "C6A6390E9388CDBAD71EAEA698233FE5E04F001E" + "D69102E0F5AC6B6DB8E4D16DA8E18CF46D88CAE3")) + + (log "Importing public demo and test keys") + (for-each + (lambda (file) + (call-check `(,@GPG --yes --import ,(in-srcdir file)))) + (list "pubdemo.asc" "pubring.asc" key-file1)) + + (pipe:do + (pipe:open (in-srcdir "pubring.pkr.asc") (logior O_RDONLY O_BINARY)) + (pipe:spawn `(,@GPG --dearmor)) + (pipe:spawn `(,@GPG --yes --import)))) + +(define (preset-passphrases) + (log "Presetting passphrases") + ;; one@example.com + (call-check `(,(tool 'gpg-preset-passphrase) + --preset --passphrase def + "50B2D4FA4122C212611048BC5FC31BD44393626E")) + (call-check `(,(tool 'gpg-preset-passphrase) + --preset --passphrase def + "7E201E28B6FEB2927B321F443205F4724EBE637E")) + ;; alpha@example.net + (call-check `(,(tool 'gpg-preset-passphrase) + --preset --passphrase abc + "76F7E2B35832976B50A27A282D9B87E44577EB66")) + (call-check `(,(tool 'gpg-preset-passphrase) + --preset --passphrase abc + "A0747D5F9425E6664F4FFBEED20FBCA79FDED2BD"))) + +;; Initialize the test environment, install appropriate configuration +;; and start the agent, with the keys from the legacy test suite. +(define (setup-legacy-environment) + (setup-environment) + (if (member "--unpack-tarball" *args*) + (begin + (call-check `(,(tool 'gpgtar) --extract --directory=. ,(cadr *args*))) + (start-agent)) + (begin + (create-gpghome) + (start-agent) + (create-legacy-gpghome))) + (preset-passphrases)) + ;; Create the socket dir and start the agent. (define (start-agent) - (echo "Starting gpg-agent...") - (catch (echo "Warning: Creating socket directory failed:" (car *error*)) + (log "Starting gpg-agent...") + (atexit stop-agent) + (catch (log "Warning: Creating socket directory failed:" (car *error*)) (call-popen `(,(tool 'gpgconf) --create-socketdir) "")) (call-check `(,(tool 'gpg-connect-agent) --verbose ,(string-append "--agent-program=" (tool 'gpg-agent) @@ -158,8 +280,8 @@ ;; Stop the agent and remove the socket dir. (define (stop-agent) - (echo "Stopping gpg-agent...") - (catch (echo "Warning: Removing socket directory failed.") + (log "Stopping gpg-agent...") + (catch (log "Warning: Removing socket directory failed.") (call-popen `(,(tool 'gpgconf) --remove-socketdir) "")) (call-check `(,(tool 'gpg-connect-agent) --verbose --no-autostart killagent /bye))) diff --git a/tests/openpgp/detach.scm b/tests/openpgp/detach.scm index 375e92272..2180f78b3 100755 --- a/tests/openpgp/detach.scm +++ b/tests/openpgp/detach.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking detached signatures" diff --git a/tests/openpgp/detachm.scm b/tests/openpgp/detachm.scm index a4ebce03e..1de8da9df 100755 --- a/tests/openpgp/detachm.scm +++ b/tests/openpgp/detachm.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (define files (append plain-files data-files)) diff --git a/tests/openpgp/ecc.scm b/tests/openpgp/ecc.scm index 8f384949b..2190b9b89 100755 --- a/tests/openpgp/ecc.scm +++ b/tests/openpgp/ecc.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (define keygrips '("8E06A180EFFE4C65B812150CAF19BF30C0689A4C" "E4403F3FD7A443FAC29FEF288FA0D20AC212851E" diff --git a/tests/openpgp/encrypt-dsa.scm b/tests/openpgp/encrypt-dsa.scm index 5228e43a7..fccb8c9f9 100755 --- a/tests/openpgp/encrypt-dsa.scm +++ b/tests/openpgp/encrypt-dsa.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking encryption using DSA" diff --git a/tests/openpgp/encrypt.scm b/tests/openpgp/encrypt.scm index 7452fc5b5..ea97b4d90 100755 --- a/tests/openpgp/encrypt.scm +++ b/tests/openpgp/encrypt.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking encryption" diff --git a/tests/openpgp/encryptp.scm b/tests/openpgp/encryptp.scm index 2b010acd1..d93919089 100755 --- a/tests/openpgp/encryptp.scm +++ b/tests/openpgp/encryptp.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking encryption and decryption using pipes" diff --git a/tests/openpgp/export.scm b/tests/openpgp/export.scm index f7a23f4fd..a79411c87 100755 --- a/tests/openpgp/export.scm +++ b/tests/openpgp/export.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (define (check-for predicate lines message) (unless (any predicate lines) diff --git a/tests/openpgp/finish.scm b/tests/openpgp/finish.scm deleted file mode 100755 index 37845ae4c..000000000 --- a/tests/openpgp/finish.scm +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env gpgscm - -;; Copyright (C) 2016 g10 Code GmbH -;; -;; This file is part of GnuPG. -;; -;; GnuPG is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 3 of the License, or -;; (at your option) any later version. -;; -;; GnuPG 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, see <http://www.gnu.org/licenses/>. - -(load (with-path "defs.scm")) - -(stop-agent) diff --git a/tests/openpgp/genkey1024.scm b/tests/openpgp/genkey1024.scm index 9870f4624..e5008c363 100755 --- a/tests/openpgp/genkey1024.scm +++ b/tests/openpgp/genkey1024.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-environment) (define (genkey config) (pipe:do diff --git a/tests/openpgp/gpgtar.scm b/tests/openpgp/gpgtar.scm index 15f528f28..69206b409 100755 --- a/tests/openpgp/gpgtar.scm +++ b/tests/openpgp/gpgtar.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (catch (skip "gpgtar not built") (call-check `(,(tool 'gpgtar) --help))) diff --git a/tests/openpgp/gpgv-forged-keyring.scm b/tests/openpgp/gpgv-forged-keyring.scm index ebe4e404e..65d21c537 100755 --- a/tests/openpgp/gpgv-forged-keyring.scm +++ b/tests/openpgp/gpgv-forged-keyring.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (define msg_signed_asc " -----BEGIN PGP SIGNED MESSAGE----- diff --git a/tests/openpgp/import.scm b/tests/openpgp/import.scm index 98f3ad9d8..c3547533d 100755 --- a/tests/openpgp/import.scm +++ b/tests/openpgp/import.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-environment) (info "Checking bug 894: segv importing certain keys.") (call-check `(,(tool 'gpg) --import ,(in-srcdir "bug894-test.asc"))) diff --git a/tests/openpgp/issue2015.scm b/tests/openpgp/issue2015.scm index e51ece465..4f151aaf2 100755 --- a/tests/openpgp/issue2015.scm +++ b/tests/openpgp/issue2015.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-environment) (info "Checking passphrase cache (issue2015)...") (call-check `(,(tool 'gpg-preset-passphrase) diff --git a/tests/openpgp/issue2346.scm b/tests/openpgp/issue2346.scm index b33656608..cbe03f9b7 100755 --- a/tests/openpgp/issue2346.scm +++ b/tests/openpgp/issue2346.scm @@ -18,16 +18,11 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-environment) (define key (in-srcdir "samplekeys/issue2346.gpg")) -(define old-home (getenv "GNUPGHOME")) -(with-temporary-working-directory - (file-copy (path-join old-home "gpg.conf") "gpg.conf") - (file-copy (path-join old-home "gpg-agent.conf") "gpg-agent.conf") - (setenv "GNUPGHOME" "." #t) - - (info "Checking import statistics (issue2346)...") - (let ((status (call-popen `(,@GPG --status-fd=1 --import ,key) ""))) - (unless (string-contains? status "IMPORT_RES 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0") - (error "Unexpected number of keys imported" status)))) +(info "Checking import statistics (issue2346)...") +(let ((status (call-popen `(,@GPG --status-fd=1 --import ,key) ""))) + (unless (string-contains? status "IMPORT_RES 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0") + (error "Unexpected number of keys imported" status))) diff --git a/tests/openpgp/issue2417.scm b/tests/openpgp/issue2417.scm index 9079323fe..5f70e0872 100755 --- a/tests/openpgp/issue2417.scm +++ b/tests/openpgp/issue2417.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (define old-home (getenv "GNUPGHOME")) diff --git a/tests/openpgp/issue2419.scm b/tests/openpgp/issue2419.scm index 1f87d1b76..9b6785154 100755 --- a/tests/openpgp/issue2419.scm +++ b/tests/openpgp/issue2419.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-environment) (info "Checking iobuf_peek corner case (issue2419)...") (lettmp diff --git a/tests/openpgp/key-selection.scm b/tests/openpgp/key-selection.scm index 536f60773..93bd001d7 100644 --- a/tests/openpgp/key-selection.scm +++ b/tests/openpgp/key-selection.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) ;; This test assumes a fixed time of 2004-01-01. diff --git a/tests/openpgp/mds.scm b/tests/openpgp/mds.scm index 8ca6c7b31..bf598eb66 100755 --- a/tests/openpgp/mds.scm +++ b/tests/openpgp/mds.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-environment) (define empty-string-hashes `((1 "D41D8CD98F00B204E9800998ECF8427E" "MD5") diff --git a/tests/openpgp/multisig.scm b/tests/openpgp/multisig.scm index 31cdc776d..7f1c4c509 100755 --- a/tests/openpgp/multisig.scm +++ b/tests/openpgp/multisig.scm @@ -24,6 +24,7 @@ ;; not really needed because verify could do the same. We keep it anyway. (load (with-path "defs.scm")) +(setup-legacy-environment) (define sig-1ls1ls-valid " -----BEGIN PGP ARMORED FILE----- diff --git a/tests/openpgp/quick-key-manipulation.scm b/tests/openpgp/quick-key-manipulation.scm index b6411d0b7..457908177 100755 --- a/tests/openpgp/quick-key-manipulation.scm +++ b/tests/openpgp/quick-key-manipulation.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-environment) ;; XXX because of --always-trust, the trustdb is not created. ;; Therefore, we redefine GPG without --always-trust. diff --git a/tests/openpgp/run-tests.scm b/tests/openpgp/run-tests.scm index 0cee55908..ce0217b79 100644 --- a/tests/openpgp/run-tests.scm +++ b/tests/openpgp/run-tests.scm @@ -109,49 +109,40 @@ (define (report) (echo (string-append (status retcode) ":") name)))))) -(define (run-tests-parallel setup teardown . tests) +(define (run-tests-parallel setup tests) (lettmp (gpghome-tar) (setup::run-sync '--create-tarball gpghome-tar) (let loop ((pool (test-pool::new '())) (tests' tests)) (if (null? tests') (let ((results (pool::wait))) (for-each (lambda (t) - (let ((teardown' (teardown::set-directory - t::directory))) - (teardown'::run-sync-quiet)) (unlink-recursively t::directory) (t::report)) results::procs) (exit (results::report))) (let* ((wd (mkdtemp)) (test (car tests')) - (test' (test::set-directory wd)) - (setup' (setup::set-directory wd))) - (setup'::run-sync-quiet '--unpack-tarball gpghome-tar) - (loop (pool::add (test'::run-async)) (cdr tests'))))))) + (test' (test::set-directory wd))) + (loop (pool::add (test'::run-async '--unpack-tarball gpghome-tar)) + (cdr tests'))))))) -(define (run-tests-sequential setup teardown . tests) +(define (run-tests-sequential setup tests) (lettmp (gpghome-tar) (setup::run-sync '--create-tarball gpghome-tar) (let loop ((pool (test-pool::new '())) (tests' tests)) (if (null? tests') (let ((results (pool::wait))) (for-each (lambda (t) - (let ((teardown' (teardown::set-directory - t::directory))) - (teardown'::run-sync-quiet)) (unlink-recursively t::directory)) results::procs) (exit (results::report))) (let* ((wd (mkdtemp)) (test (car tests')) - (test' (test::set-directory wd)) - (setup' (setup::set-directory wd))) - (setup'::run-sync-quiet '--unpack-tarball gpghome-tar) - (loop (pool::add (test'::run-sync)) (cdr tests'))))))) + (test' (test::set-directory wd))) + (loop (pool::add (test'::run-sync '--unpack-tarball gpghome-tar)) + (cdr tests'))))))) (let* ((runner (if (member "--parallel" *args*) run-tests-parallel run-tests-sequential)) (tests (filter (lambda (arg) (not (string-prefix? arg "--"))) *args*))) - (apply runner (append (list (test::scm "setup.scm") (test::scm "finish.scm")) - (map test::scm tests)))) + (runner (test::scm "setup.scm") (map test::scm tests))) diff --git a/tests/openpgp/seat.scm b/tests/openpgp/seat.scm index aceeccac1..22a5a6716 100755 --- a/tests/openpgp/seat.scm +++ b/tests/openpgp/seat.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking encryption, signing, and producing armored output" diff --git a/tests/openpgp/setup.scm b/tests/openpgp/setup.scm index d3ce0d60c..d2e125e4e 100755 --- a/tests/openpgp/setup.scm +++ b/tests/openpgp/setup.scm @@ -19,116 +19,12 @@ (load (with-path "defs.scm")) -(define (make-test-data filename size) - (call-with-binary-output-file - filename - (lambda (port) - (display (make-random-string size) port)))) - -(define (create-gpghome) - (echo "Creating test environment...") - - (srandom (getpid)) - (make-test-data "random_seed" 600) - - (for-each-p - "Creating configuration files" - (lambda (name) - (file-copy (in-srcdir (string-append name ".tmpl")) name) - (let ((p (open-input-output-file name))) - (cond - ((string=? "gpg.conf" name) - (if have-opt-always-trust - (display "no-auto-check-trustdb\n" p)) - (display (string-append "agent-program " - (tool 'gpg-agent) - "|--debug-quick-random\n") p) - (display "allow-weak-digest-algos\n" p)) - ((string=? "gpg-agent.conf" name) - (display (string-append "pinentry-program " PINENTRY "\n") p))))) - '("gpg.conf" "gpg-agent.conf")) - - (for-each-p "Creating sample data files" - (lambda (size) - (make-test-data (string-append "data-" (number->string size)) - size)) - '(500 9000 32000 80000)) - - (for-each-p "Unpacking samples" - (lambda (name) - (dearmor (in-srcdir (string-append name "o.asc")) name)) - '("plain-1" "plain-2" "plain-3" "plain-large")) - - ;; XXX implement cleanup - (catch '() - (mkdir "private-keys-v1.d" "-rwx")) - - (define counter (make-counter)) - (for-each-p' "Storing private keys" - (lambda (name) - (dearmor (in-srcdir (string-append "/privkeys/" name ".asc")) - (string-append "private-keys-v1.d/" name ".key"))) - (lambda (name) (counter)) - '("50B2D4FA4122C212611048BC5FC31BD44393626E" - "7E201E28B6FEB2927B321F443205F4724EBE637E" - "13FDB8809B17C5547779F9D205C45F47CE0217CE" - "343D8AF79796EE107D645A2787A9D9252F924E6F" - "8B5ABF3EF9EB8D96B91A0B8C2C4401C91C834C34" - "0D6F6AD4C4C803B25470F9104E9F4E6A4CA64255" - "FD692BD59D6640A84C8422573D469F84F3B98E53" - "76F7E2B35832976B50A27A282D9B87E44577EB66" - "A0747D5F9425E6664F4FFBEED20FBCA79FDED2BD" - "00FE67F28A52A8AA08FFAED20AF832DA916D1985" - "1DF48228FEFF3EC2481B106E0ACA8C465C662CC5" - "A2832820DC9F40751BDCD375BB0945BA33EC6B4C" - "ADE710D74409777B7729A7653373D820F67892E0" - "CEFC51AF91F68A2904FBFF62C4F075A4785B803F" - "1E28F20E41B54C2D1234D896096495FF57E08D18" - "EB33B687EB8581AB64D04852A54453E85F3DF62D" - "C6A6390E9388CDBAD71EAEA698233FE5E04F001E" - "D69102E0F5AC6B6DB8E4D16DA8E18CF46D88CAE3")) - - (for-each-p - "Importing public demo and test keys" - (lambda (file) - (call-check `(,@GPG --yes --import ,(in-srcdir file)))) - (list "pubdemo.asc" "pubring.asc" key-file1)) - - (pipe:do - (pipe:open (in-srcdir "pubring.pkr.asc") (logior O_RDONLY O_BINARY)) - (pipe:spawn `(,@GPG --dearmor)) - (pipe:spawn `(,@GPG --yes --import)))) - -(define (preset-passphrases) - (info "Preset passphrases") - ;; one@example.com - (call-check `(,(tool 'gpg-preset-passphrase) - --preset --passphrase def - "50B2D4FA4122C212611048BC5FC31BD44393626E")) - (call-check `(,(tool 'gpg-preset-passphrase) - --preset --passphrase def - "7E201E28B6FEB2927B321F443205F4724EBE637E")) - ;; alpha@example.net - (call-check `(,(tool 'gpg-preset-passphrase) - --preset --passphrase abc - "76F7E2B35832976B50A27A282D9B87E44577EB66")) - (call-check `(,(tool 'gpg-preset-passphrase) - --preset --passphrase abc - "A0747D5F9425E6664F4FFBEED20FBCA79FDED2BD")) - (echo "All set up.")) - -(cond - ((member "--create-tarball" *args*) - (with-temporary-working-directory - (setenv "GNUPGHOME" (getcwd) #t) - (create-gpghome) - (stop-agent) - (call-check `(,(tool 'gpgtar) --create --output ,(cadr *args*) ".")))) - ((member "--unpack-tarball" *args*) - (call-check `(,(tool 'gpgtar) --extract --directory=. ,(cadr *args*))) - (start-agent) - (preset-passphrases)) - (else - (create-gpghome) - (start-agent) - (preset-passphrases))) +(unless (member "--create-tarball" *args*) + (error "Usage: setup.scm --create-tarball <file>")) + +(with-temporary-working-directory + (setenv "GNUPGHOME" (getcwd) #t) + (create-gpghome) + (create-legacy-gpghome) + (stop-agent) + (call-check `(,(tool 'gpgtar) --create --output ,(cadr *args*) "."))) diff --git a/tests/openpgp/shell.scm b/tests/openpgp/shell.scm index dadafff05..ea4b540d1 100644 --- a/tests/openpgp/shell.scm +++ b/tests/openpgp/shell.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-environment) ;; This is not a test, but can be used to inspect the test ;; environment. Simply execute diff --git a/tests/openpgp/signencrypt-dsa.scm b/tests/openpgp/signencrypt-dsa.scm index baf1def53..c969d2fa7 100755 --- a/tests/openpgp/signencrypt-dsa.scm +++ b/tests/openpgp/signencrypt-dsa.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking signing and encryption using DSA" diff --git a/tests/openpgp/signencrypt.scm b/tests/openpgp/signencrypt.scm index b138dce50..b4c3bd6df 100755 --- a/tests/openpgp/signencrypt.scm +++ b/tests/openpgp/signencrypt.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking signing and encryption" diff --git a/tests/openpgp/sigs-dsa.scm b/tests/openpgp/sigs-dsa.scm index bf5e41501..f909078ae 100755 --- a/tests/openpgp/sigs-dsa.scm +++ b/tests/openpgp/sigs-dsa.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking signing using DSA with the default hash algorithm" diff --git a/tests/openpgp/sigs.scm b/tests/openpgp/sigs.scm index c47823108..abdcd8fe7 100755 --- a/tests/openpgp/sigs.scm +++ b/tests/openpgp/sigs.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) (for-each-p "Checking signing with the default hash algorithm" diff --git a/tests/openpgp/ssh.scm b/tests/openpgp/ssh.scm index 1fe2e5dc6..a825409d6 100755 --- a/tests/openpgp/ssh.scm +++ b/tests/openpgp/ssh.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-environment) (define GNUPGHOME (getenv "GNUPGHOME")) (if (string=? "" GNUPGHOME) diff --git a/tests/openpgp/tofu.scm b/tests/openpgp/tofu.scm index 3cca189a1..91c9e78ea 100755 --- a/tests/openpgp/tofu.scm +++ b/tests/openpgp/tofu.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-environment) ;; Redefine GPG without --always-trust and a fixed time. (define GPG `(,(tool 'gpg) --no-permission-warning diff --git a/tests/openpgp/use-exact-key.scm b/tests/openpgp/use-exact-key.scm index bec537bb9..18851da65 100755 --- a/tests/openpgp/use-exact-key.scm +++ b/tests/openpgp/use-exact-key.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) ;; Import the sample key ;; diff --git a/tests/openpgp/verify.scm b/tests/openpgp/verify.scm index eb984b110..2c2c14a7f 100755 --- a/tests/openpgp/verify.scm +++ b/tests/openpgp/verify.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-legacy-environment) ;; ;; Two simple tests to check that verify fails for bad input data diff --git a/tests/openpgp/version.scm b/tests/openpgp/version.scm index 57efb937b..2b211d80d 100755 --- a/tests/openpgp/version.scm +++ b/tests/openpgp/version.scm @@ -18,6 +18,7 @@ ;; along with this program; if not, see <http://www.gnu.org/licenses/>. (load (with-path "defs.scm")) +(setup-environment) (info "Printing the GPG version") (assert (string-contains? (call-check `(,@GPG --version)) |