emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/buttercup c61a69a 066/340: A rudimentary interactive repor


From: ELPA Syncer
Subject: [nongnu] elpa/buttercup c61a69a 066/340: A rudimentary interactive reporter.
Date: Thu, 16 Dec 2021 14:59:05 -0500 (EST)

branch: elpa/buttercup
commit c61a69ab62d10d6673893917162a0f2b44f1f82b
Author: Jorgen Schaefer <contact@jorgenschaefer.de>
Commit: Jorgen Schaefer <contact@jorgenschaefer.de>

    A rudimentary interactive reporter.
---
 buttercup.el | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/buttercup.el b/buttercup.el
index ce23743..4bfc769 100644
--- a/buttercup.el
+++ b/buttercup.el
@@ -686,7 +686,7 @@ Do not change the global value.")
 ;;;;;;;;;;;;;
 ;;; Reporters
 
-(defvar buttercup-reporter #'buttercup-reporter-batch
+(defvar buttercup-reporter #'buttercup-reporter-adaptive
   "The reporter function for buttercup test runs.
 
 During a run of buttercup, the value of this variable is called
@@ -711,6 +711,15 @@ suite-done -- A suite has finished. The argument is the 
spec.
 
 buttercup-done -- All suites have run, the test run is over.")
 
+(defun buttercup-reporter-adaptive (event arg)
+  "A reporter that handles both interactive and noninteractive sessions.
+
+Calls either `buttercup-reporter-batch' or
+`buttercup-reporter-interactive', depending."
+  (if noninteractive
+      (buttercup-reporter-batch event arg)
+    (buttercup-reporter-interactive event arg)))
+
 (defvar buttercup-reporter-batch--start-time nil
   "The time the last batch report started.")
 
@@ -790,6 +799,25 @@ buttercup-done -- All suites have run, the test run is 
over.")
 (defun buttercup--print (fmt &rest args)
   (send-string-to-terminal (apply #'format fmt args)))
 
+(defun buttercup-reporter-interactive (event arg)
+  "Reporter for interactive uses."
+  ;; This is a bit rudimentary ...
+  (with-current-buffer (get-buffer-create "*Buttercup*")
+    (when (eq event 'buttercup-started)
+      (erase-buffer)
+      (view-mode 1)
+      (display-buffer (current-buffer)))
+    (let ((old-print (symbol-function 'buttercup--print))
+          (buf (current-buffer)))
+      (fset 'buttercup--print (lambda (fmt &rest args)
+                                (with-current-buffer buf
+                                  (let ((inhibit-read-only t))
+                                    (goto-char (point-max))
+                                    (insert (apply 'format fmt args))))))
+      (unwind-protect
+          (buttercup-reporter-batch event arg)
+        (fset 'buttercup--print old-print)))))
+
 ;;;;;;;;;;;;;
 ;;; Utilities
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]