diff options
Diffstat (limited to 'test/lisp/electric-tests.el')
-rw-r--r-- | test/lisp/electric-tests.el | 137 |
1 files changed, 79 insertions, 58 deletions
diff --git a/test/lisp/electric-tests.el b/test/lisp/electric-tests.el index 62a42b7fe44..c5124aca5ee 100644 --- a/test/lisp/electric-tests.el +++ b/test/lisp/electric-tests.el @@ -47,10 +47,11 @@ (defmacro save-electric-modes (&rest body) (declare (indent defun) (debug t)) - `(call-with-saved-electric-modes #'(lambda () ,@body))) + `(call-with-saved-electric-modes (lambda () ,@body))) (defun electric-pair-test-for (fixture where char expected-string - expected-point mode bindings fixture-fn) + expected-point mode bindings + fixture-fn &optional doc-string) (with-temp-buffer (funcall mode) (insert fixture) @@ -63,6 +64,14 @@ (mapcar #'car bindings) (mapcar #'cdr bindings) (call-interactively (key-binding `[,last-command-event]))))) + (when + (and doc-string + (not + (and + (equal (buffer-substring-no-properties (point-min) (point-max)) + expected-string) + (equal (point) expected-point)))) + (message "\n%s\n" doc-string)) (should (equal (buffer-substring-no-properties (point-min) (point-max)) expected-string)) (should (equal (point) @@ -109,14 +118,9 @@ (fixture (format "%s%s%s" prefix fixture suffix)) (expected-string (format "%s%s%s" prefix expected-string suffix)) (expected-point (+ (length prefix) expected-point)) - (pos (+ (length prefix) pos))) - `(ert-deftest ,(intern (format "electric-pair-%s-at-point-%s-in-%s%s" - name - (1+ pos) - mode - extra-desc)) - () - ,(format "Electricity test in a `%s' buffer.\n + (pos (+ (length prefix) pos)) + (doc-string + (format "Electricity test in a `%s' buffer.\n Start with point at %d in a %d-char-long buffer like this one: @@ -142,8 +146,15 @@ The buffer's contents should %s: "") char (if (string= fixture expected-string) "stay" "become") - (replace-regexp-in-string "\n" "\\\\n" expected-string) - expected-point) + (string-replace "\n" "\\n" expected-string) + expected-point))) + `(ert-deftest ,(intern (format "electric-pair-%s-at-point-%s-in-%s%s" + name + (1+ pos) + mode + extra-desc)) + () + ,doc-string (electric-pair-test-for ,fixture ,(1+ pos) ,char @@ -151,7 +162,8 @@ The buffer's contents should %s: ,expected-point ',mode ,bindings - ,fixture-fn))))) + ,fixture-fn + ,doc-string))))) (cl-defmacro define-electric-pair-test (name fixture @@ -347,7 +359,7 @@ baz\"\"" # \" # baz\"\"" - :fixture-fn #'(lambda () (goto-char (point-min)) (search-forward "bar"))) + :fixture-fn (lambda () (goto-char (point-min)) (search-forward "bar"))) (define-electric-pair-test inhibit-in-mismatched-string-inside-c-comments "foo\"\"/* @@ -366,7 +378,7 @@ baz\"\"" \" \" \" */baz\"\"" - :fixture-fn #'(lambda () (goto-char (point-min)) (search-forward "bar"))) + :fixture-fn (lambda () (goto-char (point-min)) (search-forward "bar"))) ;;; More quotes, but now don't bind `electric-pair-text-syntax-table' @@ -508,8 +520,8 @@ baz\"\"" (define-electric-pair-test js-mode-braces "" "{" :expected-string "{}" :expected-point 2 :modes '(js-mode) - :fixture-fn #'(lambda () - (electric-pair-mode 1))) + :fixture-fn (lambda () + (electric-pair-mode 1))) (define-electric-pair-test js-mode-braces-with-layout @@ -517,29 +529,29 @@ baz\"\"" :modes '(js-mode) :test-in-comments nil :test-in-strings nil - :fixture-fn #'(lambda () - (electric-layout-mode 1) - (electric-pair-mode 1))) + :fixture-fn (lambda () + (electric-layout-mode 1) + (electric-pair-mode 1))) (define-electric-pair-test js-mode-braces-with-layout-and-indent "" "{" :expected-string "{\n \n}" :expected-point 7 :modes '(js-mode) :test-in-comments nil :test-in-strings nil - :fixture-fn #'(lambda () - (electric-pair-mode 1) - (electric-indent-mode 1) - (electric-layout-mode 1))) + :fixture-fn (lambda () + (electric-pair-mode 1) + (electric-indent-mode 1) + (electric-layout-mode 1))) (define-electric-pair-test js-mode-braces-with-layout-and-indent "" "{" :expected-string "{\n \n}" :expected-point 7 :modes '(js-mode) :test-in-comments nil :test-in-strings nil - :fixture-fn #'(lambda () - (electric-pair-mode 1) - (electric-indent-mode 1) - (electric-layout-mode 1))) + :fixture-fn (lambda () + (electric-pair-mode 1) + (electric-indent-mode 1) + (electric-layout-mode 1))) ;;; Backspacing @@ -575,6 +587,7 @@ baz\"\"" ;;; Electric newlines between pairs ;;; TODO: better tests (ert-deftest electric-pair-open-extra-newline () + (skip-unless (not (getenv "EMACS_HYDRA_CI"))) (save-electric-modes (with-temp-buffer (c-mode) @@ -594,55 +607,55 @@ baz\"\"" ;;; (define-electric-pair-test autowrapping-1 "foo" "(" :expected-string "(foo)" :expected-point 2 - :fixture-fn #'(lambda () - (electric-pair-mode 1) - (mark-sexp 1))) + :fixture-fn (lambda () + (electric-pair-mode 1) + (mark-sexp 1))) (define-electric-pair-test autowrapping-2 "foo" ")" :expected-string "(foo)" :expected-point 6 - :fixture-fn #'(lambda () - (electric-pair-mode 1) - (mark-sexp 1))) + :fixture-fn (lambda () + (electric-pair-mode 1) + (mark-sexp 1))) (define-electric-pair-test autowrapping-3 "foo" ")" :expected-string "(foo)" :expected-point 6 - :fixture-fn #'(lambda () - (electric-pair-mode 1) - (goto-char (point-max)) - (skip-chars-backward "\"") - (mark-sexp -1))) + :fixture-fn (lambda () + (electric-pair-mode 1) + (goto-char (point-max)) + (skip-chars-backward "\"") + (mark-sexp -1))) (define-electric-pair-test autowrapping-4 "foo" "(" :expected-string "(foo)" :expected-point 2 - :fixture-fn #'(lambda () - (electric-pair-mode 1) - (goto-char (point-max)) - (skip-chars-backward "\"") - (mark-sexp -1))) + :fixture-fn (lambda () + (electric-pair-mode 1) + (goto-char (point-max)) + (skip-chars-backward "\"") + (mark-sexp -1))) (define-electric-pair-test autowrapping-5 "foo" "\"" :expected-string "\"foo\"" :expected-point 2 - :fixture-fn #'(lambda () - (electric-pair-mode 1) - (mark-sexp 1))) + :fixture-fn (lambda () + (electric-pair-mode 1) + (mark-sexp 1))) (define-electric-pair-test autowrapping-6 "foo" "\"" :expected-string "\"foo\"" :expected-point 6 - :fixture-fn #'(lambda () - (electric-pair-mode 1) - (goto-char (point-max)) - (skip-chars-backward "\"") - (mark-sexp -1))) + :fixture-fn (lambda () + (electric-pair-mode 1) + (goto-char (point-max)) + (skip-chars-backward "\"") + (mark-sexp -1))) (define-electric-pair-test autowrapping-7 "foo" "\"" :expected-string "``foo''" :expected-point 8 :modes '(tex-mode) :test-in-comments nil - :fixture-fn #'(lambda () - (electric-pair-mode 1) - (goto-char (point-max)) - (skip-chars-backward "\"") - (mark-sexp -1))) + :fixture-fn (lambda () + (electric-pair-mode 1) + (goto-char (point-max)) + (skip-chars-backward "\"") + (mark-sexp -1))) ;;; Electric quotes @@ -859,12 +872,14 @@ baz\"\"" (defun electric-layout-for-c-style-du-jour (inserted) "A function to use in `electric-layout-rules'" - (when (memq inserted '(?{ ?})) + (when (memq inserted '(?\{ ?\})) (save-excursion (backward-char 2) (c-point-syntax) (forward-char) ; silly, but needed (c-brace-newlines (c-point-syntax))))) (ert-deftest electric-layout-plainer-c-mode-use-c-style () + ;; FIXME hangs since c4d34d2 + (skip-unless (not (getenv "EMACS_HYDRA_CI"))) (ert-with-test-buffer () (plainer-c-mode) (electric-layout-local-mode 1) @@ -878,6 +893,7 @@ baz\"\"" (should (equal (buffer-string) "int main ()\n{\n \n}\n")))) (ert-deftest electric-layout-int-main-kernel-style () + (skip-unless (not (getenv "EMACS_HYDRA_CI"))) (ert-with-test-buffer () (plainer-c-mode) (electric-layout-local-mode 1) @@ -894,6 +910,7 @@ baz\"\"" (ert-deftest electric-layout-control-reindentation () "Same as `emacs-lisp-int-main-kernel-style', but checking Bug#35254." + (skip-unless (not (getenv "EMACS_HYDRA_CI"))) (ert-with-test-buffer () (plainer-c-mode) (electric-layout-local-mode 1) @@ -912,6 +929,7 @@ Bug#35254." (should (equal (buffer-string) "int main () {\n\n \n}")))) (ert-deftest electric-modes-int-main-allman-style () + (skip-unless (not (getenv "EMACS_HYDRA_CI"))) (ert-with-test-buffer () (plainer-c-mode) (electric-layout-local-mode 1) @@ -926,6 +944,7 @@ Bug#35254." (should (equal (buffer-string) "int main ()\n{\n \n}")))) (ert-deftest electric-pair-mode-newline-between-parens () + (skip-unless (not (getenv "EMACS_HYDRA_CI"))) (ert-with-test-buffer () (plainer-c-mode) (electric-layout-local-mode -1) ;; ensure e-l-m mode is off @@ -937,6 +956,7 @@ Bug#35254." (should (equal (buffer-string) "int main () {\n \n}")))) (ert-deftest electric-layout-mode-newline-between-parens-without-e-p-m () + (skip-unless (not (getenv "EMACS_HYDRA_CI"))) (ert-with-test-buffer () (plainer-c-mode) (electric-layout-local-mode 1) @@ -958,6 +978,7 @@ Bug#35254." (should (equal (buffer-string) "int main () {\n \n}")))) (ert-deftest electric-layout-mode-newline-between-parens-without-e-p-m-2 () + (skip-unless (not (getenv "EMACS_HYDRA_CI"))) (ert-with-test-buffer () (plainer-c-mode) (electric-layout-local-mode 1) |