diff --git a/tests/openpgp/README b/tests/openpgp/README index d85ff3f07..b7ec6f784 100644 --- a/tests/openpgp/README +++ b/tests/openpgp/README @@ -94,14 +94,14 @@ data files. **** GPGSCM_PATH Used to locate the Scheme library as well as code used by the test suite. -**** BIN_PREFIX -The test suite does not hardcode any paths to tools. If set it is -used to locate the tools to test, otherwise the test suite assumes to -be run from the build directory. -**** GPG_PRESET_PASSPHRASE -This tool is not installed by 'make install', hence we need to -explicitly override its position. In fact, the location of any tool -used by the test suite can be overridden this way. See defs.scm. +**** GNUPG_BUILD_ROOT +To locate the actual binaries under test the test suite requires that +those binaries and associate files are installed to a test location. +This envvar gives the root directory of the install tree. See +tests/gpgconf.ctl for the way we tell the GnuPG components this +location. Note that we can't use that envvar directlyr because this +would allow user scripts and other software to accidently mess up the +used components. **** argv[0] run-tests.scm depends on being able to re-exec gpgscm. It uses argv[0] for that. Therefore you must use an absolute path to invoke diff --git a/tests/openpgp/defs.scm b/tests/openpgp/defs.scm index 86d312f82..61e3fdbda 100644 --- a/tests/openpgp/defs.scm +++ b/tests/openpgp/defs.scm @@ -111,26 +111,27 @@ (assert (equal? (percent-encode "%61") "%2561")) (assert (equal? (percent-encode "foob%61r") "foob%2561r")) +;; Note that the entry for pinentry relies on the fact that +;; GNUPG_BUILD_ROOT has the bin,libexec,share directories (where we +;; have installed versions of the tools under test) as well as the +;; openpgp directory. The second element in each list is an envvar which +;; can be used to specifiy a different tool than the installed one. (define tools - '((gpgv "GPGV" "g10/gpgv") - (gpg-connect-agent "GPG_CONNECT_AGENT" "tools/gpg-connect-agent") - (gpgconf "GPGCONF" "tools/gpgconf") + '((gpgv "GPGV" "bin/gpgv") + (gpg-connect-agent "GPG_CONNECT_AGENT" "bin/gpg-connect-agent") + (gpgconf "GPGCONF" "bin/gpgconf") (gpg-preset-passphrase "GPG_PRESET_PASSPHRASE" - "agent/gpg-preset-passphrase") - (gpgtar "GPGTAR" "tools/gpgtar") - (gpg-zip "GPGZIP" "tools/gpg-zip") - (pinentry "PINENTRY" "tests/openpgp/fake-pinentry"))) - -(define bin-prefix (getenv "BIN_PREFIX")) -(define installed? (not (string=? "" bin-prefix))) -(define with-valgrind? (not (string=? (getenv "with_valgrind") ""))) + "libexec/gpg-preset-passphrase") + (gpgtar "GPGTAR" "bin/gpgtar") + (pinentry "PINENTRY" "openpgp/fake-pinentry"))) (define (tool-hardcoded which) (let ((t (assoc which tools))) (getenv' (cadr t) - (qualify (if installed? - (string-append bin-prefix "/" (basename (caddr t))) - (string-append (getenv "objdir") "/" (caddr t))))))) + (qualify (string-append (getenv "GNUPG_BUILD_ROOT") + "/" (caddr t)))))) + +(define with-valgrind? (not (string=? (getenv "with_valgrind") ""))) ;; You can splice VALGRIND into your argument vector to run programs ;; under valgrind. For example, to run valgrind on gpg, you may want @@ -142,15 +143,10 @@ '("/usr/bin/valgrind" -q --leak-check=no --track-origins=yes --error-exitcode=154 --exit-on-first-error=yes)) -(unless installed? - (setenv "GNUPG_BUILDDIR" (getenv "objdir") #t)) - (define (gpg-conf . args) (gpg-conf' "" args)) (define (gpg-conf' input args) (let ((s (call-popen `(,(tool-hardcoded 'gpgconf) - ,@(if installed? '() - (list '--build-prefix (getenv "objdir"))) ,@args) input))) (map (lambda (line) (map percent-decode (string-split line #\:))) (string-split-newlines s)))) diff --git a/tests/tpm2dtests/defs.scm b/tests/tpm2dtests/defs.scm index 2a0910945..eb840206f 100644 --- a/tests/tpm2dtests/defs.scm +++ b/tests/tpm2dtests/defs.scm @@ -61,26 +61,22 @@ (assert (equal? (percent-encode "foob%61r") "foob%2561r")) (define tools - '((gpgv "GPGV" "g10/gpgv") - (gpg-connect-agent "GPG_CONNECT_AGENT" "tools/gpg-connect-agent") - (gpgconf "GPGCONF" "tools/gpgconf") + '((gpgv "GPGV" "bin/gpgv") + (gpg-connect-agent "GPG_CONNECT_AGENT" "bin/gpg-connect-agent") + (gpgconf "GPGCONF" "bin/gpgconf") (gpg-preset-passphrase "GPG_PRESET_PASSPHRASE" - "agent/gpg-preset-passphrase") - (gpgtar "GPGTAR" "tools/gpgtar") - (gpg-zip "GPGZIP" "tools/gpg-zip") - (pinentry "PINENTRY" "tests/openpgp/fake-pinentry") - (tpm2daemon "TPM2DAEMON" "tpm2d/tpm2daemon"))) + "libexec/gpg-preset-passphrase") + (gpgtar "GPGTAR" "bin/gpgtar") + (tpm2daemon "TPM2DAEMON" "libexec/tpm2daemon") + (pinentry "PINENTRY" "openpgp/fake-pinentry"))) -(define bin-prefix (getenv "BIN_PREFIX")) -(define installed? (not (string=? "" bin-prefix))) (define with-valgrind? (not (string=? (getenv "with_valgrind") ""))) (define (tool-hardcoded which) (let ((t (assoc which tools))) (getenv' (cadr t) - (qualify (if installed? - (string-append bin-prefix "/" (basename (caddr t))) - (string-append (getenv "objdir") "/" (caddr t))))))) + (qualify (string-append (getenv "GNUPG_BUILD_ROOT") + "/" (caddr t)))))) ;; You can splice VALGRIND into your argument vector to run programs ;; under valgrind. For example, to run valgrind on gpg, you may want @@ -92,15 +88,10 @@ '("/usr/bin/valgrind" -q --leak-check=no --track-origins=yes --error-exitcode=154 --exit-on-first-error=yes)) -(unless installed? - (setenv "GNUPG_BUILDDIR" (getenv "objdir") #t)) - (define (gpg-conf . args) (gpg-conf' "" args)) (define (gpg-conf' input args) (let ((s (call-popen `(,(tool-hardcoded 'gpgconf) - ,@(if installed? '() - (list '--build-prefix (getenv "objdir"))) ,@args) input))) (map (lambda (line) (map percent-decode (string-split line #\:))) (string-split-newlines s))))