]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow running Flymake tests from interactive sessions
authorJoão Távora <joaotavora@gmail.com>
Sun, 20 Aug 2017 11:19:45 +0000 (12:19 +0100)
committerJoão Távora <joaotavora@gmail.com>
Tue, 3 Oct 2017 12:51:05 +0000 (13:51 +0100)
* test/lisp/progmodes/flymake-tests.el (flymake-tests-data-directory):
Expand to reasonable value if no
EMACS_TEST_DIRECTORY. (flymake-tests--current-face): Work around
"weirdness" of bug 17647 with read-event.

test/lisp/progmodes/flymake-tests.el

index a018f11efd2fa20f2979170bd8ecd38b4a4c6169..338e8e0f07448fa5858b3d958fc6ad6242ecbccb 100644 (file)
 (require 'flymake)
 
 (defvar flymake-tests-data-directory
-  (expand-file-name "lisp/progmodes/flymake-resources" (getenv "EMACS_TEST_DIRECTORY"))
+  (expand-file-name "lisp/progmodes/flymake-resources"
+                    (or (getenv "EMACS_TEST_DIRECTORY")
+                        (expand-file-name "../../.."
+                                          (or load-file-name
+                                              buffer-file-name))))
   "Directory containing flymake test data.")
 
 \f
           (setq-local flymake-proc-warning-predicate predicate)
           (goto-char (point-min))
           (flymake-mode 1)
-          ;; Weirdness here...  https://debbugs.gnu.org/17647#25
+          ;; Weirdness here...  http://debbugs.gnu.org/17647#25
+          ;; ... meaning `sleep-for', and even
+          ;; `accept-process-output', won't suffice as ways to get
+          ;; process filters and sentinels to run, though they do work
+          ;; fine in a non-interactive batch session. The only thing
+          ;; that will indeed unblock pending process output is
+          ;; reading an input event, so, as a workaround, use a dummy
+          ;; `read-event' with a very short timeout.
+          (unless noninteractive (read-event "" nil 0.1))
           (while (and flymake-is-running (< (setq i (1+ i)) 10))
+            (unless noninteractive (read-event "" nil 0.1))
             (sleep-for (+ 0.5 flymake-no-changes-timeout)))
           (flymake-goto-next-error)
           (face-at-point))
@@ -59,7 +72,7 @@
   (skip-unless (and (executable-find "gcc") (executable-find "make")))
   (should (eq 'flymake-warning
               (flymake-tests--current-face "test.c"
-               (lambda (msg) (string-match "^[Ww]arning" msg))))))
+                                           (lambda (msg) (string-match "^[Ww]arning" msg))))))
 
 (ert-deftest warning-predicate-rx-perl ()
   "Test perl warning via regular expression predicate."