summaryrefslogtreecommitdiff
path: root/cider-test.el
diff options
context:
space:
mode:
authorBozhidar Batsov <bozhidar@batsov.com>2016-10-08 14:11:12 +0300
committerBozhidar Batsov <bozhidar@batsov.com>2016-10-08 14:11:12 +0300
commit3a83d58dfc546b79c3e5284e1d59b83969bc4a88 (patch)
tree78f5883c756b7f860321535fe7c3d927576960b6 /cider-test.el
parent167a708e2803426b0b60cde9d4dd31a7cd1a530d (diff)
[Fix #1851] Add a command to re-run the last test that was ran
Diffstat (limited to 'cider-test.el')
-rw-r--r--cider-test.el29
1 files changed, 27 insertions, 2 deletions
diff --git a/cider-test.el b/cider-test.el
index 3bf9fdae..72c4a765 100644
--- a/cider-test.el
+++ b/cider-test.el
@@ -122,6 +122,7 @@
;; Duplicates of keys below with C- for convenience
(define-key map (kbd "C-r") #'cider-test-rerun-failed-tests)
(define-key map (kbd "C-t") #'cider-test-run-test)
+ (define-key map (kbd "C-g") #'cider-test-rerun-test)
(define-key map (kbd "C-n") #'cider-test-run-ns-tests)
(define-key map (kbd "C-l") #'cider-test-run-loaded-tests)
(define-key map (kbd "C-p") #'cider-test-run-project-tests)
@@ -129,6 +130,7 @@
;; Single-key bindings defined last for display in menu
(define-key map (kbd "r") #'cider-test-rerun-failed-tests)
(define-key map (kbd "t") #'cider-test-run-test)
+ (define-key map (kbd "g") #'cider-test-rerun-test)
(define-key map (kbd "n") #'cider-test-run-ns-tests)
(define-key map (kbd "l") #'cider-test-run-loaded-tests)
(define-key map (kbd "p") #'cider-test-run-project-tests)
@@ -648,6 +650,18 @@ current ns."
(unless silent
(message "No namespace to test in current context")))))
+(defvar cider-test-last-test-ns nil
+ "The ns of the last test ran with `cider-test-run-test'.")
+(defvar cider-test-last-test-var nil
+ "The var of the last test ran with `cider-test-run-test'.")
+
+(defun cider-test-update-last-test (ns var)
+ "Update the last test by setting NS and VAR.
+
+See `cider-test-rerun-test'."
+ (setq cider-test-last-test-ns ns
+ cider-test-last-test-var var))
+
(defun cider-test-run-test ()
"Run the test at point.
The test ns/var exist as text properties on report items and on highlighted
@@ -657,13 +671,24 @@ is searched."
(let ((ns (get-text-property (point) 'ns))
(var (get-text-property (point) 'var)))
(if (and ns var)
- (cider-test-execute ns (list var))
+ (progn
+ (cider-test-update-last-test ns var)
+ (cider-test-execute ns (list var)))
(let ((ns (clojure-find-ns))
(def (clojure-find-def)))
(if (and ns (member (car def) '("deftest" "defspec")))
- (cider-test-execute ns (cdr def))
+ (progn
+ (cider-test-update-last-test ns (cdr def))
+ (cider-test-execute ns (cdr def)))
(message "No test at point"))))))
+(defun cider-test-rerun-test ()
+ "Re-run the test that was previously ran."
+ (interactive)
+ (if (and cider-test-last-test-ns cider-test-last-test-var)
+ (cider-test-execute cider-test-last-test-ns cider-test-last-test-var)
+ (user-error "No test to re-run")))
+
;;; Auto-test mode
(defun cider--test-silently ()
"Like `cider-test-run-tests', but with less feedback.