diff --git a/tests/tpm2dtests/Makefile.am b/tests/tpm2dtests/Makefile.am index 72ad11d9b..6048d201c 100644 --- a/tests/tpm2dtests/Makefile.am +++ b/tests/tpm2dtests/Makefile.am @@ -1,82 +1,82 @@ # Makefile.am - For tests/openpgp # Copyright (C) 1998, 1999, 2000, 2001, 2003, # 2010 Free Software Foundation, Inc. # # 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 . # Process this file with automake to create Makefile.in # Programs required before we can run these tests. required_pgms = ../../g10/gpg$(EXEEXT) ../../agent/gpg-agent$(EXEEXT) \ ../../tools/gpg-connect-agent$(EXEEXT) \ ../gpgscm/gpgscm$(EXEEXT) ../openpgp/fake-pinentry$(EXEEXT) AM_CPPFLAGS = -I$(top_srcdir)/common include $(top_srcdir)/am/cmacros.am AM_CFLAGS = TESTS_ENVIRONMENT = LC_ALL=C \ EXEEXT=$(EXEEXT) \ PATH="../gpgscm:$(PATH)" \ abs_top_srcdir="$(abs_top_srcdir)" \ objdir="$(abs_top_builddir)" \ - TPMSERVER="$(TPMSERVER)" \ + TPMSERVER="$(TPMSERVER)" TSSSTARTUP="$(TSSSTARTUP)" \ SWTPM="$(SWTPM)" \ SWTPM_IOCTL="$(SWTPM_IOCTL)" \ - GNUPG_BUILD_ROOT="$(abs_top_builddir)/tests" \ + GNUPG_BUILD_ROOT="$(abs_top_builddir)" \ GNUPG_IN_TEST_SUITE=fact \ GPGSCM_PATH="$(abs_top_srcdir)/tests/gpgscm" XTESTS = \ rsa.scm \ ecc.scm \ longpassphrase.scm \ unimportable.scm # XXX: Currently, one cannot override automake's 'check' target. As a # workaround, we avoid defining 'TESTS', thus automake will not emit # the 'check' target. For extra robustness, we merely define a # dependency on 'xcheck', so this hack should also work even if # automake would emit the 'check' target, as adding dependencies to # targets is okay. check: xcheck .PHONY: xcheck xcheck: tpm_server_found $(TESTS_ENVIRONMENT) $(abs_top_builddir)/tests/gpgscm/gpgscm \ $(abs_srcdir)/run-tests.scm $(TESTFLAGS) $(TESTS) tpm_server_found: @if [ -z "$(TPMSERVER)" -a -z "$(SWTPM)" -a -z "$(FORCE)" ]; then echo "ERROR: No Software TPM has been found, cannot run TPM tests. Set FORCE=1 to force using the physical TPM"; exit 1; fi EXTRA_DIST = defs.scm shell.scm all-tests.scm run-tests.scm $(XTESTS) \ start_sw_tpm.sh setup.scm CLEANFILES = gpg.conf gpg-agent.conf S.gpg-agent \ pubring.gpg pubring.gpg~ pubring.kbx pubring.kbx~ \ secring.gpg pubring.pkr secring.skr \ gnupg-test.stop random_seed gpg-agent.log tofu.db \ passphrases sshcontrol S.gpg-agent.ssh report.xml \ msg.txt *.log clean-local: -rm -rf private-keys-v1.d openpgp-revocs.d # We need to depend on a couple of programs so that the tests don't # start before all programs are built. all-local: $(required_pgms) diff --git a/tests/tpm2dtests/all-tests.scm b/tests/tpm2dtests/all-tests.scm index bf7a981ca..8934f01f2 100644 --- a/tests/tpm2dtests/all-tests.scm +++ b/tests/tpm2dtests/all-tests.scm @@ -1,81 +1,84 @@ ;; Copyright (C) 2017 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 . (export all-tests ;; Parse the Makefile.am to find all tests. (load (with-path "makefile.scm")) (define (expander filename port key) (parse-makefile port key)) (define (parse filename key) (parse-makefile-expand filename expander key)) (define setup (make-environment-cache (test::scm #f - (path-join "tests" "openpgp" "setup.scm") - (in-srcdir "tests" "openpgp" "setup.scm")))) + #f + (path-join "tests" "tpm2dtests" "setup.scm") + (in-srcdir "tests" "tpm2dtests" "setup.scm")))) (define (qualify path variant) (string-append "<" variant ">" path)) (define (setup* variant) (make-environment-cache (test::scm #f - (qualify (path-join "tests" "openpgp" "setup.scm") variant) - (in-srcdir "tests" "openpgp" "setup.scm") + variant + (path-join "tests" "tpm2dtests" "setup.scm") + (in-srcdir "tests" "tpm2dtests" "setup.scm") (string-append "--" variant)))) (define setup-use-keyring (setup* "use-keyring")) (define setup-use-keyboxd (setup* "use-keyboxd")) (define all-tests (parse-makefile-expand "Makefile" (lambda (filename port key) (parse-makefile port key)) "XTESTS")) (define tests (map (lambda (name) (test::scm setup - (qualify (path-join "tests" "tpm2dtests" name) "standard") + "standards" + (path-join "tests" "tpm2dtests" name) (in-srcdir "tests" "tpm2dtests" name))) all-tests)) (when *run-all-tests* (set! tests (append tests ;; The second pass uses the keyboxd (map (lambda (name) (test::scm setup-use-keyboxd - (qualify (path-join "tests" "tpm2dtests" name) - "keyboxd") + "keyboxd" + (path-join "tests" "tpm2dtests" name) (in-srcdir "tests" "tpm2dtests" name) "--use-keyboxd")) all-tests) ;; The third pass uses the legact pubring.gpg (map (lambda (name) (test::scm setup-use-keyring - (qualify (path-join "tests" "tpm2dtests" name) - "keyring") + "keyring" + (path-join "tests" "tpm2dtests" name) (in-srcdir "tests" "tpm2dtests" name) "--use-keyring")) all-tests) ))) tests) diff --git a/tests/tpm2dtests/run-tests.scm b/tests/tpm2dtests/run-tests.scm index fdf1859a8..638d3a8a1 100644 --- a/tests/tpm2dtests/run-tests.scm +++ b/tests/tpm2dtests/run-tests.scm @@ -1,43 +1,45 @@ ;; Test-suite runner. ;; ;; 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 . (if (string=? "" (getenv "abs_top_srcdir")) (begin (echo "Environment variable 'abs_top_srcdir' not set. Please point it to" "tests/tpm2dtests.") (exit 2))) ;; Set objdir so that the tests can locate built programs. (setenv "objdir" (getcwd) #f) (define setup (make-environment-cache (test::scm #f + #f (path-join "tests" "tpm2dtests" "setup.scm") (in-srcdir "tests" "tpm2dtests" "setup.scm")))) (define tests (filter (lambda (arg) (not (string-prefix? arg "--"))) *args*)) (run-tests (if (null? tests) (load-tests "tests" "tpm2dtests") (map (lambda (name) (test::scm setup + #f (path-join "tests" "tpm2dtests" name) (in-srcdir "tests" "tpm2dtests" name) "--use-keyring")) tests)))