summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2021-10-01 15:05:01 +0200
committerWerner Koch <wk@gnupg.org>2021-10-01 15:05:01 +0200
commit84fcd8e6eb7e0786399e1f6461c3f60b0db2d070 (patch)
treed83132397e795540609d96e502a49e9a1fda61b1
parentbuild: Prepare for using installed versions for tests. (diff)
downloadgnupg2-84fcd8e6eb7e0786399e1f6461c3f60b0db2d070.tar.xz
gnupg2-84fcd8e6eb7e0786399e1f6461c3f60b0db2d070.zip
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.
-rw-r--r--tests/openpgp/README16
-rw-r--r--tests/openpgp/defs.scm34
-rw-r--r--tests/tpm2dtests/defs.scm29
3 files changed, 33 insertions, 46 deletions
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")))
-
-(define bin-prefix (getenv "BIN_PREFIX"))
-(define installed? (not (string=? "" bin-prefix)))
+ "libexec/gpg-preset-passphrase")
+ (gpgtar "GPGTAR" "bin/gpgtar")
+ (tpm2daemon "TPM2DAEMON" "libexec/tpm2daemon")
+ (pinentry "PINENTRY" "openpgp/fake-pinentry")))
+
(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))))