branch: master commit 1292cd263a63213ebcf65a3200ebcca16fe8bc36 Author: Noam Postavsky <npost...@users.sourceforge.net> Commit: Noam Postavsky <npost...@users.sourceforge.net>
Refactor undo tests * yasnippet-tests.el (yas-test-expand-and-undo): New helper function. (undo-indentation-1, undo-indentation-2, undo-indentation-multiline-1) (undo-indentation-multiline-2): Use it. --- yasnippet-tests.el | 82 +++++++++++++++++++----------------------------------- 1 file changed, 28 insertions(+), 54 deletions(-) diff --git a/yasnippet-tests.el b/yasnippet-tests.el index 13fff53..4101454 100644 --- a/yasnippet-tests.el +++ b/yasnippet-tests.el @@ -297,77 +297,51 @@ attention to case differences." ;; (should (string= (yas--buffer-contents) ;; "brother from another mother!")))) -(ert-deftest undo-indentation-1 () - "Check undoing works when only line of snippet is indented." - (let ((yas-also-auto-indent-first-line t)) - (yas-with-snippet-dirs - '((".emacs.d/snippets" ("emacs-lisp-mode" ("s" . "(setq $0)")))) - (with-temp-buffer - (emacs-lisp-mode) - (yas-reload-all) - (yas-minor-mode 1) - (insert "(let\n(while s") +(defun yas-test-expand-and-undo (mode snippet-entry initial-contents) + (yas-with-snippet-dirs + `((".emacs.d/snippets" (,(symbol-name mode) ,snippet-entry))) + (with-temp-buffer + (funcall mode) + (yas-reload-all) + (yas-minor-mode 1) + (yas-expand-snippet initial-contents) + (let ((pre-expand-string (buffer-string))) (setq buffer-undo-list ()) (ert-simulate-command '(yas-expand)) ;; Need undo barrier, I think command loop puts it normally. (push nil buffer-undo-list) - (should (string= (buffer-string) "(let\n (while (setq )")) (ert-simulate-command '(undo)) - (should (string= (buffer-string) "(let\n(while s")))))) + (should (string= (buffer-string) pre-expand-string)))))) + +(ert-deftest undo-indentation-1 () + "Check undoing works when only line of snippet is indented." + (let ((yas-also-auto-indent-first-line t)) + (yas-test-expand-and-undo + 'emacs-lisp-mode '("s" . "(setq $0)") "(let\n(while s$0"))) (ert-deftest undo-indentation-2 () "Check undoing works when only line of snippet is indented." (let ((yas-also-auto-indent-first-line t) (indent-tabs-mode nil)) - (yas-with-snippet-dirs - '((".emacs.d/snippets" ("emacs-lisp-mode" ("t" . "; TODO")))) - (with-temp-buffer - (emacs-lisp-mode) - (yas-reload-all) - (yas-minor-mode 1) - (insert "t") - (setq buffer-undo-list ()) - (ert-simulate-command '(yas-expand)) - ;; Need undo barrier, I think command loop puts it normally. - (push nil buffer-undo-list) - (should (string= (buffer-string) (concat (make-string comment-column ?\s) "; TODO"))) - (ert-simulate-command '(undo)) - (should (string= (buffer-string) "t")))))) + (yas-test-expand-and-undo + 'emacs-lisp-mode '("t" . "; TODO") "t$0"))) (ert-deftest undo-indentation-multiline-1 () "Check undoing works when 1st line of multi-line snippet is indented." - (yas-with-snippet-dirs - '((".emacs.d/snippets" ("js-mode" ("if" . "if ($1) {\n\n}\n")))) - (with-temp-buffer - (js-mode) - (yas-reload-all) - (yas-minor-mode 1) - (insert "if\nabc = 123456789 + abcdef;") - (setq buffer-undo-list ()) - (goto-char (point-min)) - (search-forward "if") - (ert-simulate-command '(yas-expand)) - (push nil buffer-undo-list) ; See test above. - (ert-simulate-command '(undo)) - (should (string= (buffer-string) "if\nabc = 123456789 + abcdef;"))))) + (let ((yas-also-auto-indent-first-line t) + (indent-tabs-mode nil)) + (yas-test-expand-and-undo + 'js-mode '("if" . "if ($1) {\n\n}\n") + "if$0\nabc = 123456789 + abcdef;"))) (ert-deftest undo-indentation-multiline-2 () "Check undoing works when 2nd line of multi-line snippet is indented." - (yas-with-snippet-dirs - '((".emacs.d/snippets" ("js-mode" ("if" . "if (true) {\n${1:foo};\n}\n")))) - (with-temp-buffer - (js-mode) - (yas-reload-all) - (yas-minor-mode 1) - (insert "if\nabc = 123456789 + abcdef;") - (setq buffer-undo-list ()) - (goto-char (point-min)) - (search-forward "if") - (ert-simulate-command '(yas-expand)) - (push nil buffer-undo-list) ; See test above. - (ert-simulate-command '(undo)) - (should (string= (buffer-string) "if\nabc = 123456789 + abcdef;"))))) + (let ((yas-also-auto-indent-first-line t) + (indent-tabs-mode nil)) + (yas-test-expand-and-undo + 'js-mode '("if" . "if (true) {\n${1:foo};\n}\n") + "if$0\nabc = 123456789 + abcdef;"))) (ert-deftest dont-clear-on-partial-deletion-issue-515 () "Ensure fields are not cleared when user doesn't really mean to."