X-Git-Url: https://jxself.org/git/?p=8sync.git;a=blobdiff_plain;f=tests%2Futils.scm;h=e20b5b872cd04057c29e6b6af446f5ef10876293;hp=9eb6d7aea74ae4d9d24c2f2a35880d73289829e4;hb=17830fd9912894b6a30a5c4a4a83722a74c01ccd;hpb=5ad09886e8c3a1282c4f73e814085d545ef3ffae diff --git a/tests/utils.scm b/tests/utils.scm index 9eb6d7a..e20b5b8 100644 --- a/tests/utils.scm +++ b/tests/utils.scm @@ -1,19 +1,18 @@ ;;; Copyright © 2015 David Thompson - -;; This library is free software; you can redistribute it and/or -;; modify it under the terms of the GNU Lesser General Public -;; License as published by the Free Software Foundation; either -;; version 3 of the License, or (at your option) any later version. -;; -;; This library 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 -;; Lesser General Public License for more details. -;; -;; You should have received a copy of the GNU Lesser General Public -;; License along with this library; if not, write to the Free Software -;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -;; 02110-1301 USA +;;; +;;; This library is free software; you can redistribute it and/or +;;; modify it under the terms of the GNU Lesser General Public +;;; License as published by the Free Software Foundation; either +;;; version 3 of the License, or (at your option) any later version. +;;; +;;; This library 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 +;;; Lesser General Public License for more details. +;;; +;;; You should have received a copy of the GNU Lesser General Public +;;; License along with this program. If not, see +;;; . ;; Thanks for giving permission to license this under LGPL for ;; consistency, David! @@ -21,7 +20,36 @@ (define-module (tests utils) #:use-module (srfi srfi-64) - #:export (test-exit)) + #:export (test-exit + + speak get-spoken with-fresh-speaker)) (define (test-exit) (exit (= (test-runner-fail-count (test-runner-current)) 0))) + + + + +;;; display-like helpers +;;; ==================== + +(define (speak-it) + (let ((messages '())) + (lambda* (#:optional message) + (if message (set! messages (append messages (list message)))) + messages))) + +(define %speaker (make-parameter (speak-it))) + +(define (speak message) + "Speak a message into the %speaker parameter" + ((%speaker) message)) + +(define (get-spoken) + "Get what's been spoken in the %speaker parameter" + ((%speaker))) + +(define-syntax-rule (with-fresh-speaker body ...) + "Run body with a fresh %speaker" + (parameterize ((%speaker (speak-it))) + body ...))