X-Git-Url: https://jxself.org/git/?p=8sync.git;a=blobdiff_plain;f=tests%2Futils.scm;fp=tests%2Futils.scm;h=e20b5b872cd04057c29e6b6af446f5ef10876293;hp=5d4e3cfc260966a78b5cbb969bf0f2614b63eb92;hb=f0863bf36133288ed55eb97a3732d581be45c231;hpb=39be3a1d4f667eae7dc31b7677721692aab3a319 diff --git a/tests/utils.scm b/tests/utils.scm index 5d4e3cf..e20b5b8 100644 --- a/tests/utils.scm +++ b/tests/utils.scm @@ -20,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 ...))