diff --git a/tests/gpgscm/tests.scm b/tests/gpgscm/tests.scm index d89a96f88..72afa9913 100644 --- a/tests/gpgscm/tests.scm +++ b/tests/gpgscm/tests.scm @@ -38,6 +38,10 @@ (apply echo msg) (flush-stdio)) +(define (log . msg) + (if (> (*verbose*) 0) + (apply info msg))) + (define (error . msg) (apply info msg) (exit 1)) 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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . - -(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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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)))) +(unless (member "--create-tarball" *args*) + (error "Usage: setup.scm --create-tarball ")) -(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))) +(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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (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 . (load (with-path "defs.scm")) +(setup-environment) (info "Printing the GPG version") (assert (string-contains? (call-check `(,@GPG --version))