From 2f61aa0ff11b194d20307751ab686c87cd47dd56 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Thu, 7 Jul 2016 16:18:10 +0200 Subject: [PATCH] gpgscm: Capture output of spawned processes. * tests/gpgscm/tests.scm (call-check): Capture stdout and stderr, and return stdout if the child exited successfully, or include stderr in the error. * tests/openpgp/version.scm: Demonstrate this by checking the stdout. Signed-off-by: Justus Winter --- tests/gpgscm/tests.scm | 9 ++++++--- tests/openpgp/version.scm | 5 ++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/tests/gpgscm/tests.scm b/tests/gpgscm/tests.scm index 272881757..c32e2fa5e 100644 --- a/tests/gpgscm/tests.scm +++ b/tests/gpgscm/tests.scm @@ -94,9 +94,6 @@ CLOSED_FD (if (< *verbose* 0) STDOUT_FILENO CLOSED_FD) (if (< *verbose* 0) STDERR_FILENO CLOSED_FD))) -(define (call-check what) - (if (not (= 0 (call what))) - (throw (list what "failed")))) ;; Accessor functions for the results of 'spawn-process'. (define :stdin car) @@ -119,6 +116,12 @@ ;; ':stderr' can also be used. (define :retcode car) +(define (call-check what) + (let ((result (call-with-io what ""))) + (if (= 0 (:retcode result)) + (:stdout result) + (throw (list what "failed:" (:stderr result)))))) + (define (call-popen command input-string) (let ((result (call-with-io command input-string))) (if (= 0 (:retcode result)) diff --git a/tests/openpgp/version.scm b/tests/openpgp/version.scm index dbcb484e8..57efb937b 100755 --- a/tests/openpgp/version.scm +++ b/tests/openpgp/version.scm @@ -20,6 +20,5 @@ (load (with-path "defs.scm")) (info "Printing the GPG version") -(assert (= 0 (call `(,@GPG --version)))) - -;; fixme: check that the output is as expected +(assert (string-contains? (call-check `(,@GPG --version)) + "gpg (GnuPG) 2."))