Strengthen js-mode indentation tests
Test not only that the indentation engine is idempotent but that it will indent a file to the expected shape from scratch. * test/lisp/progmodes/js-tests.el (js-tests--remove-indentation): New. (js-deftest-indent): Extend test.
This commit is contained in:
parent
b7dfae3a81
commit
9bc5c016a1
1 changed files with 13 additions and 0 deletions
|
@ -199,6 +199,14 @@ if (!/[ (:,='\"]/.test(value)) {
|
|||
|
||||
;;;; Indentation tests.
|
||||
|
||||
(defun js-tests--remove-indentation ()
|
||||
"Remove all indentation in the current buffer."
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward (rx bol (+ (in " \t"))) nil t)
|
||||
(let ((syntax (save-match-data (syntax-ppss))))
|
||||
(unless (nth 3 syntax) ; Avoid multiline string literals.
|
||||
(replace-match "")))))
|
||||
|
||||
(defmacro js-deftest-indent (file)
|
||||
`(ert-deftest ,(intern (format "js-indent-test/%s" file)) ()
|
||||
:tags '(:expensive-test)
|
||||
|
@ -206,6 +214,11 @@ if (!/[ (:,='\"]/.test(value)) {
|
|||
(unwind-protect
|
||||
(with-current-buffer buf
|
||||
(let ((orig (buffer-string)))
|
||||
(js-tests--remove-indentation)
|
||||
;; Indent and check that we get the original text.
|
||||
(indent-region (point-min) (point-max))
|
||||
(should (equal (buffer-string) orig))
|
||||
;; Verify idempotency.
|
||||
(indent-region (point-min) (point-max))
|
||||
(should (equal (buffer-string) orig))))
|
||||
(kill-buffer buf)))))
|
||||
|
|
Loading…
Add table
Reference in a new issue