summaryrefslogtreecommitdiff
path: root/rust-mode-tests.el
diff options
context:
space:
mode:
Diffstat (limited to 'rust-mode-tests.el')
-rw-r--r--rust-mode-tests.el34
1 files changed, 34 insertions, 0 deletions
diff --git a/rust-mode-tests.el b/rust-mode-tests.el
index a22e43a..ac81d03 100644
--- a/rust-mode-tests.el
+++ b/rust-mode-tests.el
@@ -3137,6 +3137,40 @@ impl Two<'a> {
(let ((default-directory test-dir))
(should (equal (expand-file-name (rust-buffer-project)) manifest-file))))))
+(ert-deftest compilation-regexp-dashes ()
+ (with-temp-buffer
+ ;; should match
+ (insert "error found a -> b\n --> file1.rs:12:34\n\n")
+ (insert "error[E1234]: found a -> b\n --> file2.rs:12:34\n\n")
+ (insert "warning found a -> b\n --> file3.rs:12:34\n\n")
+ ;; should not match
+ (insert "werror found a -> b\n --> file4.rs:12:34\n\n")
+
+ (goto-char (point-min))
+ (let ((matches nil))
+ (while (re-search-forward (car rustc-compilation-regexps) nil t)
+ (push
+ (mapcar (lambda (r)
+ (let ((match-pos
+ (nth (cdr r) rustc-compilation-regexps)))
+ (if (eq :is-warning (car r))
+ (compilation-face match-pos)
+ (match-string match-pos))))
+ ;; see compilation-error-regexp-alist
+ '((:file . 1)
+ (:line . 2)
+ (:column . 3)
+ (:is-warning . 4)
+ (:mouse-highlight . 5)))
+ matches))
+ (setq matches (reverse matches))
+
+ (should (equal
+ '(("file1.rs" "12" "34" compilation-error "file1.rs:12:34")
+ ("file2.rs" "12" "34" compilation-error "file2.rs:12:34")
+ ("file3.rs" "12" "34" compilation-warning "file3.rs:12:34"))
+ matches)))))
+
;; If electric-pair-mode is available, load it and run the tests that use it. If not,
;; no error--the tests will be skipped.
(require 'elec-pair nil t)