Skip to content

Commit 4475e8c

Browse files
committed
Fix truncation bug in etest-update
1 parent c887773 commit 4475e8c

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

test/etest/etest.el

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,10 @@ keywords."
230230
(error "Can't find any result keyword"))
231231
(re-search-forward etest--result-re end t)
232232
(let ((result-beg (1- (point)))
233-
(result-end (progn (backward-up-list -1 t) (point)))
233+
(result-end (progn
234+
(etest--backward-up-strings)
235+
(etest--forward-sexp)
236+
(point)))
234237
(result-str (prin1-to-string (pop results))))
235238
(goto-char result-beg)
236239
(delete-region result-beg result-end)
@@ -251,17 +254,24 @@ keywords."
251254
(buffer-end N))))
252255
(error nil)))
253256

257+
(defun etest--backward-up-strings ()
258+
(let ((syntax (syntax-ppss (point))))
259+
(while (nth 3 syntax)
260+
(goto-char (nth 8 syntax))
261+
(setq syntax (syntax-ppss (point))))))
262+
254263
(defun etest--climb-deftest ()
255264
;; Climb one character when point is in front of a parenthesis.
256265
;; This puts the cursor inside the `etest-deftest` when it is in
257266
;; front.
267+
(etest--backward-up-strings)
258268
(unless (looking-at "(")
259-
(backward-char 1)
269+
(ignore-errors (backward-char 1))
260270
(unless (looking-at ")")
261-
(forward-char 1)))
271+
(ignore-errors (forward-char 1))))
262272
;; Climb enclosing lists until we find the `test-deftest`
263273
(while (and (not (looking-at "(etest-deftest"))
264-
(ignore-errors (prog1 t (backward-up-list nil t)))))
274+
(ignore-errors (prog1 t (backward-up-list nil t t)))))
265275
(point))
266276

267277

test/etest/test-etest.el

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,3 +273,18 @@ bar"
273273
"Default mode is fundamental.
274274
Also tests local config test is cleaned up properly."
275275
(should (eq major-mode 'fundamental-mode)))
276+
277+
278+
(etest-deftest etest-truncation-test ()
279+
"`backward-up-list' isn't confused by syntax in strings."
280+
:case "
281+
(etest-deftest test ()
282+
:result \"\")
283+
\")\"
284+
"
285+
(etest-update)
286+
:result "
287+
(etest-deftest test ()
288+
:result \"\")
289+
\")\"
290+
")

0 commit comments

Comments
 (0)