]> code.delx.au - gnu-emacs-elpa/commitdiff
New test for cc-mode's fontification functions
authorNoam Postavsky <npostavs@users.sourceforge.net>
Sat, 26 Apr 2014 23:09:57 +0000 (19:09 -0400)
committerNoam Postavsky <npostavs@users.sourceforge.net>
Sun, 27 Apr 2014 18:49:02 +0000 (14:49 -0400)
This issue requires font locking to trigger. This can be be done by
let-binding noninteractive to nil and using a buffer name that doesn't
start with a space, instead of the external emacs hack which is now
redundant.

* yasnippet-tests.el (yas--with-font-locked-temp-buffer): new macro
similar to with-temp-buffer but enables font-lock-mode even in -batch
mode.
(example-for-issue-474): new test
(example-for-issue-404, example-for-issue-404-c-mode): use new macro
(example-for-issue-404-external-emacs): removed

yasnippet-tests.el

index 02bf10c642ce0ccccfb093e54ebaf44087cce3ae..f87b3d4cef4ef19dc6db00be9ec2f76778eaeb28 100644 (file)
       (ert-simulate-command `(yas-mock-insert "bbb"))
       (should (string= (yas--buffer-contents) "if condition\naaa\nelse\nbbb\nend")))))
 
+(defmacro yas--with-font-locked-temp-buffer (&rest body)
+  "Like `with-temp-buffer', but ensure `font-lock-mode'."
+  (declare (indent 0) (debug t))
+  (let ((temp-buffer (make-symbol "temp-buffer")))
+    ;; NOTE: buffer name must not start with a space, otherwise
+    ;; `font-lock-mode' doesn't turn on.
+    `(let ((,temp-buffer (generate-new-buffer "*yas-temp*")))
+       (with-current-buffer ,temp-buffer
+         ;; pretend we're interactive so `font-lock-mode' turns on
+         (let ((noninteractive nil)
+               ;; turn on font locking after major mode change
+               (change-major-mode-after-body-hook #'font-lock-mode))
+           (unwind-protect
+               (progn (require 'font-lock)
+                      ;; turn on font locking before major mode change
+                      (font-lock-mode +1)
+                      ,@body)
+             (and (buffer-name ,temp-buffer)
+                  (kill-buffer ,temp-buffer))))))))
+
+(ert-deftest example-for-issue-474 ()
+  (yas--with-font-locked-temp-buffer
+    (c-mode)
+    (yas-minor-mode 1)
+    (insert "#include <foo>\n")
+    (let ((yas-good-grace nil)) (yas-expand-snippet "`(insert \"TODO: \")`"))
+    (should (string= (yas--buffer-contents) "#include <foo>\nTODO: "))))
+
 (ert-deftest example-for-issue-404 ()
-  (with-temp-buffer
+  (yas--with-font-locked-temp-buffer
     (c++-mode)
     (yas-minor-mode 1)
     (insert "#include <foo>\n")
-    (let ((snippet "main"))
-      (let ((yas-good-grace nil)) (yas-expand-snippet snippet))
-      (should (string= (yas--buffer-contents) "#include <foo>\nmain")))))
+    (let ((yas-good-grace nil)) (yas-expand-snippet "main"))
+    (should (string= (yas--buffer-contents) "#include <foo>\nmain"))))
 
 (ert-deftest example-for-issue-404-c-mode ()
-  (with-temp-buffer
+  (yas--with-font-locked-temp-buffer
     (c-mode)
     (yas-minor-mode 1)
     (insert "#include <foo>\n")
-    (let ((snippet "main"))
-      (let ((yas-good-grace nil)) (yas-expand-snippet snippet))
-      (should (string= (yas--buffer-contents) "#include <foo>\nmain")))))
-
-(ert-deftest example-for-issue-404-external-emacs ()
-  :tags '(:external)
-  (let ((fixture-el-file (make-temp-file "yas-404-fixture" nil ".el")))
-    (with-temp-buffer
-      (insert (pp-to-string
-               `(condition-case _
-                    (progn
-                      (require 'yasnippet-tests)
-                      (yas-with-snippet-dirs
-                        '((".emacs.d/snippets"
-                           ("c-mode"
-                            ("main" . "int main ()"))))
-                        (yas-global-mode)
-                        (switch-to-buffer "foo.c")
-                        (c-mode)
-                        (insert "#include <iostream>\nmain")
-                        (setq yas-good-grace nil)
-                        (yas-expand)
-                        (should (string= (buffer-string)
-                                         "#include <iostream>\nint main ()"))
-                        (kill-emacs 0)))
-                  (error (kill-emacs -1)))))
-      (write-file fixture-el-file))
-    (should (= 0
-               (call-process (concat invocation-directory invocation-name)
-                             nil nil nil
-                             "-Q"  "--batch"
-                             "-L" "." "-l" fixture-el-file)))))
+    (let ((yas-good-grace nil)) (yas-expand-snippet "main"))
+    (should (string= (yas--buffer-contents) "#include <foo>\nmain"))))
 
 (ert-deftest middle-of-buffer-snippet-insertion ()
   (with-temp-buffer
     (yas-minor-mode 1)
     (insert "beginning")
     (save-excursion (insert "end"))
-    (let ((snippet "-middle-"))
-      (yas-expand-snippet snippet))
+    (yas-expand-snippet "-middle-")
     (should (string= (yas--buffer-contents) "beginning-middle-end"))))
 
 (ert-deftest another-example-for-issue-271 ()