summaryrefslogtreecommitdiff
path: root/test/lisp/progmodes/flymake-tests.el
diff options
context:
space:
mode:
authorJoão Távora <joaotavora@gmail.com>2017-09-21 14:57:20 +0100
committerJoão Távora <joaotavora@gmail.com>2017-10-03 13:52:24 +0100
commit0d26e45ab47d781e561bb415e28aab8cb166ced2 (patch)
tree5e080e212454eb35f7a6be226873ae2ba9d08f9f /test/lisp/progmodes/flymake-tests.el
parent7787988587eacb9aa77bbfb830a885fab8edd828 (diff)
downloademacs-0d26e45ab47d781e561bb415e28aab8cb166ced2.tar.gz
Add a new Flymake test for multiple errors and warnings
* test/lisp/progmodes/flymake-tests.el (flymake-tests--call-with-fixture): Save excursion. (errors-and-warnings): New test. * test/lisp/progmodes/flymake-resources/errors-and-warnings.c: New test fixture.
Diffstat (limited to 'test/lisp/progmodes/flymake-tests.el')
-rw-r--r--test/lisp/progmodes/flymake-tests.el48
1 files changed, 32 insertions, 16 deletions
diff --git a/test/lisp/progmodes/flymake-tests.el b/test/lisp/progmodes/flymake-tests.el
index c626aec04bd..5e76f3136ea 100644
--- a/test/lisp/progmodes/flymake-tests.el
+++ b/test/lisp/progmodes/flymake-tests.el
@@ -49,23 +49,24 @@ SEVERITY-PREDICATE is used to setup
(i 0))
(unwind-protect
(with-current-buffer buffer
- (when sev-pred-supplied-p
- (setq-local flymake-proc-warning-predicate severity-predicate))
- (goto-char (point-min))
- (flymake-mode 1)
- ;; 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))
+ (save-excursion
+ (when sev-pred-supplied-p
+ (setq-local flymake-proc-warning-predicate severity-predicate))
+ (goto-char (point-min))
+ (flymake-mode 1)
+ ;; 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))
- (sleep-for (+ 0.5 flymake-no-changes-timeout)))
- (funcall fn))
+ (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)))
+ (funcall fn)))
(and buffer
(not visiting)
(let (kill-buffer-query-functions) (kill-buffer buffer))))))
@@ -114,6 +115,21 @@ SEVERITY-PREDICATE is used to setup
(should (eq 'flymake-warning
(face-at-point)))))
+(ert-deftest errors-and-warnings ()
+ "Test GCC warning via function predicate."
+ (skip-unless (and (executable-find "gcc") (executable-find "make")))
+ (flymake-tests--with-flymake
+ ("errors-and-warnings.c")
+ (flymake-goto-next-error)
+ (should (eq 'flymake-error (face-at-point)))
+ (flymake-goto-next-error)
+ (should (eq 'flymake-warning (face-at-point)))
+ (flymake-goto-next-error)
+ (should (eq 'flymake-warning (face-at-point)))
+ (flymake-goto-next-error)
+ (should (eq 'flymake-error (face-at-point)))
+ (should-error (flymake-goto-next-error nil t)) ))
+
(provide 'flymake-tests)
;;; flymake.el ends here