@@ -55,4 +55,56 @@ attention to case differences."
55
55
(let ((case-fold-search ignore-case))
56
56
(string-match-p (regexp-quote needle) s)))
57
57
58
+ (defmacro when-refactoring-it (description before after &rest body )
59
+ " Return a buttercup spec.
60
+
61
+ Insert BEFORE into a buffer, evaluate BODY and compare the resulting buffer to
62
+ AFTER.
63
+
64
+ BODY should contain the refactoring that transforms BEFORE into AFTER.
65
+
66
+ DESCRIPTION is the description of the spec."
67
+ (declare (indent 1 ))
68
+ `(it , description
69
+ (with-clojure-ts-buffer , before
70
+ ,@body
71
+ (expect (buffer-string ) :to-equal , after ))))
72
+
73
+ (defmacro when-refactoring-with-point-it (description before after &rest body )
74
+ " Return a buttercup spec.
75
+
76
+ Like when-refactor-it but also checks whether point is moved to the expected
77
+ position.
78
+
79
+ BEFORE is the buffer string before refactoring, where a pipe (|) represents
80
+ point.
81
+
82
+ AFTER is the expected buffer string after refactoring, where a pipe (|)
83
+ represents the expected position of point.
84
+
85
+ DESCRIPTION is a string with the description of the spec."
86
+ (declare (indent 1 ))
87
+ `(it , description
88
+ (let* ((after , after )
89
+ (expected-cursor-pos (1+ (clojure-ts--s-index-of " |" after)))
90
+ (expected-state (delete ?| after)))
91
+ (with-clojure-ts-buffer , before
92
+ (goto-char (point-min ))
93
+ (search-forward " |" )
94
+ (delete-char -1 )
95
+ ,@body
96
+ (expect (buffer-string ) :to-equal expected-state)
97
+ (expect (point ) :to-equal expected-cursor-pos)))))
98
+
99
+
100
+ ; ; https://emacs.stackexchange.com/a/55031
101
+ (defmacro with-temp-dir (temp-dir &rest body )
102
+ " Create a temporary directory and bind its to TEMP-DIR while evaluating BODY.
103
+ Removes the temp directory at the end of evaluation."
104
+ `(let ((, temp-dir (make-temp-file " " t )))
105
+ (unwind-protect
106
+ (progn
107
+ ,@body )
108
+ (delete-directory , temp-dir t ))))
109
+
58
110
; ;; test-helper.el ends here
0 commit comments