From 50d12860ef21e8480474fd94a0b4465d0339086d Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 14 Sep 2022 11:58:35 +0200 Subject: [PATCH] tests: Restrict the use of gpgconf.ctl to make check. * common/homedir.c (unix_rootdir): Add ".enable" statement to gpgconf.ctl * tests/gpgconf.ctl.in: Use this statement. * tests/cms/Makefile.am (OLD_TESTS_ENVIRONMENT): Enable .enable. (TESTS_ENVIRONMENT): Ditto. * tests/gpgme/Makefile.am (TESTS_ENVIRONMENT): Ditto. * tests/migrations/Makefile.am (TESTS_ENVIRONMENT): Ditto. * tests/openpgp/Makefile.am (TESTS_ENVIRONMENT): Ditto. * tests/pkits/Makefile.am (TESTS_ENVIRONMENT): Ditto. * tests/tpm2dtests/Makefile.am (TESTS_ENVIRONMENT): Ditto. -- Without that it was required to delete the gpgconf.ctl to run manual tests. What a hack. --- common/homedir.c | 30 +++++++++++++++++++++++++++++- tests/cms/Makefile.am | 2 ++ tests/gpgconf.ctl.in | 3 +++ tests/gpgme/Makefile.am | 1 + tests/migrations/Makefile.am | 1 + tests/openpgp/Makefile.am | 1 + tests/pkits/Makefile.am | 1 + tests/tpm2dtests/Makefile.am | 1 + 8 files changed, 39 insertions(+), 1 deletion(-) diff --git a/common/homedir.c b/common/homedir.c index dd4963c32..67bbde8f1 100644 --- a/common/homedir.c +++ b/common/homedir.c @@ -473,6 +473,7 @@ unix_rootdir (int want_sysconfdir) char *rootdir; char *sysconfdir; const char *name; + int ignoreall = 0; for (;;) { @@ -590,6 +591,16 @@ unix_rootdir (int want_sysconfdir) name = "sysconfdir"; p = line + 12; } + else if (!strncmp (line, ".enable=", 8)) + { + name = ".enable"; + p = line + 8; + } + else if (!strncmp (line, ".enable =", 9)) + { + name = ".enable"; + p = line + 9; + } else continue; trim_spaces (p); @@ -600,6 +611,17 @@ unix_rootdir (int want_sysconfdir) log_info ("error getting %s from gpgconf.ctl: %s\n", name, gpg_strerror (err)); } + else if (!strcmp (name, ".enable")) + { + if (atoi (p) + || !ascii_strcasecmp (p, "yes") + || !ascii_strcasecmp (p, "true") + || !ascii_strcasecmp (p, "fact")) + ; /* Yes, this file shall be used. */ + else + ignoreall = 1; /* No, this file shall be ignored. */ + xfree (p); + } else if (!strcmp (name, "sysconfdir")) { xfree (sysconfdir); @@ -627,7 +649,13 @@ unix_rootdir (int want_sysconfdir) xfree (buffer); xfree (line); - if (!rootdir || !*rootdir || *rootdir != '/') + if (ignoreall) + { + xfree (rootdir); + xfree (sysconfdir); + sdir = dir = NULL; + } + else if (!rootdir || !*rootdir || *rootdir != '/') { log_info ("invalid rootdir '%s' specified in gpgconf.ctl\n", rootdir); xfree (rootdir); diff --git a/tests/cms/Makefile.am b/tests/cms/Makefile.am index 24ce985a5..999bd4fb8 100644 --- a/tests/cms/Makefile.am +++ b/tests/cms/Makefile.am @@ -33,6 +33,7 @@ AM_CFLAGS = # pwd which handles symlinks differently. OLD_TESTS_ENVIRONMENT = GNUPGHOME=`/bin/pwd` GPG_AGENT_INFO= LC_ALL=C \ GNUPG_BUILD_ROOT="$(abs_top_builddir)" \ + GNUPG_IN_TEST_SUITE=fact \ GPGSM="$(GPGSM)" "$(srcdir)/runtest" TESTS_ENVIRONMENT = LC_ALL=C \ @@ -41,6 +42,7 @@ TESTS_ENVIRONMENT = LC_ALL=C \ abs_top_srcdir="$(abs_top_srcdir)" \ objdir="$(abs_top_builddir)" \ GNUPG_BUILD_ROOT="$(abs_top_builddir)" \ + GNUPG_IN_TEST_SUITE=fact \ GPGSCM_PATH="$(abs_top_srcdir)/tests/gpgscm" XTESTS = \ diff --git a/tests/gpgconf.ctl.in b/tests/gpgconf.ctl.in index fa3e988ac..95cb0e528 100644 --- a/tests/gpgconf.ctl.in +++ b/tests/gpgconf.ctl.in @@ -11,5 +11,8 @@ # variables are substituted in standard shell manner, the final value # must start with a slash, trailing slashes are stripped. +# This file is only considered if the given envvar evaluates to true. +.enable = $GNUPG_IN_TEST_SUITE + sysconfdir = $GNUPG_BUILD_ROOT/etc rootdir = $GNUPG_BUILD_ROOT/ diff --git a/tests/gpgme/Makefile.am b/tests/gpgme/Makefile.am index 489ecea09..fe3d58007 100644 --- a/tests/gpgme/Makefile.am +++ b/tests/gpgme/Makefile.am @@ -34,6 +34,7 @@ TESTS_ENVIRONMENT = LC_ALL=C \ abs_top_srcdir=$(abs_top_srcdir) \ objdir=$(abs_top_builddir) \ GNUPG_BUILD_ROOT="$(abs_top_builddir)" \ + GNUPG_IN_TEST_SUITE=fact \ GPGSCM_PATH=$(abs_top_srcdir)/tests/gpgscm # XXX: Currently, one cannot override automake's 'check' target. As a diff --git a/tests/migrations/Makefile.am b/tests/migrations/Makefile.am index 90aab3a51..c4085fa90 100644 --- a/tests/migrations/Makefile.am +++ b/tests/migrations/Makefile.am @@ -34,6 +34,7 @@ TESTS_ENVIRONMENT = GPG_AGENT_INFO= LC_ALL=C \ abs_top_srcdir="$(abs_top_srcdir)" \ objdir="$(abs_top_builddir)" \ GNUPG_BUILD_ROOT="$(abs_top_builddir)/tests" \ + GNUPG_IN_TEST_SUITE=fact \ GPGSCM_PATH="$(abs_top_srcdir)/tests/gpgscm" XTESTS = from-classic.scm \ diff --git a/tests/openpgp/Makefile.am b/tests/openpgp/Makefile.am index 5c99a045c..58e1c2a7d 100644 --- a/tests/openpgp/Makefile.am +++ b/tests/openpgp/Makefile.am @@ -39,6 +39,7 @@ TESTS_ENVIRONMENT = LC_ALL=C \ abs_top_srcdir="$(abs_top_srcdir)" \ objdir="$(abs_top_builddir)" \ GNUPG_BUILD_ROOT="$(abs_top_builddir)" \ + GNUPG_IN_TEST_SUITE=fact \ GPGSCM_PATH="$(abs_top_srcdir)/tests/gpgscm" XTESTS = \ diff --git a/tests/pkits/Makefile.am b/tests/pkits/Makefile.am index 65db8bb1e..0b90f86ba 100644 --- a/tests/pkits/Makefile.am +++ b/tests/pkits/Makefile.am @@ -22,6 +22,7 @@ GPGSM = ../../sm/gpgsm TESTS_ENVIRONMENT = GNUPGHOME=`/bin/pwd` GPG_AGENT_INFO= LC_ALL=C \ GNUPG_BUILD_ROOT="$(abs_top_builddir)" \ + GNUPG_IN_TEST_SUITE=fact \ GPGSM=$(GPGSM) silent=yes diff --git a/tests/tpm2dtests/Makefile.am b/tests/tpm2dtests/Makefile.am index 36d1685ba..72ad11d9b 100644 --- a/tests/tpm2dtests/Makefile.am +++ b/tests/tpm2dtests/Makefile.am @@ -38,6 +38,7 @@ TESTS_ENVIRONMENT = LC_ALL=C \ SWTPM="$(SWTPM)" \ SWTPM_IOCTL="$(SWTPM_IOCTL)" \ GNUPG_BUILD_ROOT="$(abs_top_builddir)/tests" \ + GNUPG_IN_TEST_SUITE=fact \ GPGSCM_PATH="$(abs_top_srcdir)/tests/gpgscm" XTESTS = \