tests: Use the new gpgconf.ctl based method.

* tests/openpgp/defs.scm:  We expect that stuff is now installed.
(tools): Fix the names.
(intsalled?, bin-prefix): Remove.
(tool-hardcoded): Simplify.
(gpg-conf'): Simplify.
(GNUPG_BUILDDIR): Do not anymore set this envvar.
* tests/tpm2dtests/defs.scm: Ditto.
--

This simplifies things a bit.
This commit is contained in:
Werner Koch 2021-10-01 15:05:01 +02:00
parent 399ebf6d87
commit 84fcd8e6eb
No known key found for this signature in database
GPG Key ID: E3FDFF218E45B72B
3 changed files with 32 additions and 45 deletions

View File

@ -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

View File

@ -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))))

View File

@ -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))))