emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master 4473b4e 112/177: New test for cc-mode's fontification func


From: João Távora
Subject: [elpa] master 4473b4e 112/177: New test for cc-mode's fontification functions
Date: Sat, 28 Mar 2015 15:41:18 +0000

branch: master
commit 4473b4ede5b9fb4736ef78482511349d2fe171eb
Author: Noam Postavsky <address@hidden>
Commit: Noam Postavsky <address@hidden>

    New test for cc-mode's fontification functions
    
    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 |   74 ++++++++++++++++++++++++---------------------------
 1 files changed, 35 insertions(+), 39 deletions(-)

diff --git a/yasnippet-tests.el b/yasnippet-tests.el
index 02bf10c..f87b3d4 100644
--- a/yasnippet-tests.el
+++ b/yasnippet-tests.el
@@ -204,60 +204,56 @@
       (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 ()



reply via email to

[Prev in Thread] Current Thread [Next in Thread]