diff --git a/tests/gpgscm/lib.scm b/tests/gpgscm/lib.scm index e4ab48303..316eacf87 100644 --- a/tests/gpgscm/lib.scm +++ b/tests/gpgscm/lib.scm @@ -42,6 +42,24 @@ ((not (p (car l))) #f) (else (all p (cdr l))))) +;; Return the first element of a list. +(define first car) + +;; Return the last element of a list. +(define (last lst) + (if (null? (cdr lst)) + (car lst) + (last (cdr lst)))) + +;; Compute the powerset of a list. +(define (powerset set) + (if (null? set) + '(()) + (let ((rst (powerset (cdr set)))) + (append (map (lambda (x) (cons (car set) x)) + rst) + rst)))) + ;; Is PREFIX a prefix of S? (define (string-prefix? s prefix) (and (>= (string-length s) (string-length prefix)) diff --git a/tests/gpgscm/tests.scm b/tests/gpgscm/tests.scm index 8986a705a..d89a96f88 100644 --- a/tests/gpgscm/tests.scm +++ b/tests/gpgscm/tests.scm @@ -481,3 +481,11 @@ (catch (list tmpfiles source *error*) (apply function `(,(call-with-input-file source read-all) ,@args))) (list tmpfiles source #f))) + +;; +;; Developing and debugging tests. +;; + +;; Spawn an os shell. +(define (interactive-shell) + (call-with-fds `(,(getenv "SHELL")) 0 1 2)) diff --git a/tests/openpgp/Makefile.am b/tests/openpgp/Makefile.am index bb9b2f4db..5725e110c 100644 --- a/tests/openpgp/Makefile.am +++ b/tests/openpgp/Makefile.am @@ -188,7 +188,7 @@ sample_msgs = samplemsgs/issue2419.asc EXTRA_DIST = defs.scm $(XTESTS) $(TEST_FILES) \ mkdemodirs signdemokey $(priv_keys) $(sample_keys) \ $(sample_msgs) ChangeLog-2011 run-tests.scm \ - setup.scm finish.scm + setup.scm finish.scm shell.scm CLEANFILES = prepared.stamp x y yy z out err $(data_files) \ plain-1 plain-2 plain-3 trustdb.gpg *.lock .\#lk* \ diff --git a/tests/openpgp/README b/tests/openpgp/README index 8845afd34..75d818e9e 100644 --- a/tests/openpgp/README +++ b/tests/openpgp/README @@ -110,7 +110,10 @@ You can also get an interactive repl by dropping (interactive-repl (current-environment)) -anywhere you like. +anywhere you like. Or, if you want to examine the environment from an +operating system shell, use + + (interactive-shell) ** Interfacing with gpg diff --git a/tests/openpgp/shell.scm b/tests/openpgp/shell.scm new file mode 100644 index 000000000..dadafff05 --- /dev/null +++ b/tests/openpgp/shell.scm @@ -0,0 +1,32 @@ +#!/usr/bin/env gpgscm + +;; 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 . + +(load (with-path "defs.scm")) + +;; This is not a test, but can be used to inspect the test +;; environment. Simply execute +;; +;; make -Ctests/openpgp check XTESTS=shell.scm +;; +;; to run it. + +(echo "Note that gpg.conf includes 'batch'. If you want to use gpg") +(echo "interactively you should drop that.") +(echo) +(interactive-shell)