annotate .elisp/settings/50.compilation-tweaks.el @ 478:6bcdbe7b8e42

emacs: fix up hg test output regular expressions Includes some unit tests cribbed from compilation-mode's own tests.
author Augie Fackler <raf@durin42.com>
date Wed, 20 Feb 2019 16:27:47 -0500
parents b0264224e2ec
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
212
4716b238db2e emacs: add compilation-mode regexp for hg test tracebacks
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
1 (require 'compile)
4716b238db2e emacs: add compilation-mode regexp for hg test tracebacks
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
2
478
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
3 (setq af--hg-test-traceback "^\\+ File ['\"]\\([^'\"]+\\)['\"], line \\([0-9]+\\),")
212
4716b238db2e emacs: add compilation-mode regexp for hg test tracebacks
Augie Fackler <durin42@gmail.com>
parents:
diff changeset
4
445
b0264224e2ec compilation tweaks: tried and failed to fix hg compilation stuff
Augie Fackler <raf@durin42.com>
parents: 242
diff changeset
5 (setq compilation-error-regexp-alist-alist
478
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
6 (cons `(mercurial-test-output-tb ,af--hg-test-traceback 1 2)
445
b0264224e2ec compilation tweaks: tried and failed to fix hg compilation stuff
Augie Fackler <raf@durin42.com>
parents: 242
diff changeset
7 (assq-delete-all 'mercurial-test-output-tb
b0264224e2ec compilation tweaks: tried and failed to fix hg compilation stuff
Augie Fackler <raf@durin42.com>
parents: 242
diff changeset
8 compilation-error-regexp-alist-alist)))
b0264224e2ec compilation tweaks: tried and failed to fix hg compilation stuff
Augie Fackler <raf@durin42.com>
parents: 242
diff changeset
9
478
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
10 (setq af--hg-check-code-error-re " \\([^:\n]+\\):\\([0-9]+\\):$")
445
b0264224e2ec compilation tweaks: tried and failed to fix hg compilation stuff
Augie Fackler <raf@durin42.com>
parents: 242
diff changeset
11
b0264224e2ec compilation tweaks: tried and failed to fix hg compilation stuff
Augie Fackler <raf@durin42.com>
parents: 242
diff changeset
12 (setq compilation-error-regexp-alist-alist
478
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
13 (cons `(mercurial-check-code-output ,af--hg-check-code-error-re 1 2)
445
b0264224e2ec compilation tweaks: tried and failed to fix hg compilation stuff
Augie Fackler <raf@durin42.com>
parents: 242
diff changeset
14 (assq-delete-all 'mercurial-check-code-output
b0264224e2ec compilation tweaks: tried and failed to fix hg compilation stuff
Augie Fackler <raf@durin42.com>
parents: 242
diff changeset
15 compilation-error-regexp-alist-alist)))
b0264224e2ec compilation tweaks: tried and failed to fix hg compilation stuff
Augie Fackler <raf@durin42.com>
parents: 242
diff changeset
16
b0264224e2ec compilation tweaks: tried and failed to fix hg compilation stuff
Augie Fackler <raf@durin42.com>
parents: 242
diff changeset
17 (add-to-list 'compilation-error-regexp-alist 'mercurial-test-output-tb)
b0264224e2ec compilation tweaks: tried and failed to fix hg compilation stuff
Augie Fackler <raf@durin42.com>
parents: 242
diff changeset
18 (add-to-list 'compilation-error-regexp-alist 'mercurial-check-code-output)
b0264224e2ec compilation tweaks: tried and failed to fix hg compilation stuff
Augie Fackler <raf@durin42.com>
parents: 242
diff changeset
19
b0264224e2ec compilation tweaks: tried and failed to fix hg compilation stuff
Augie Fackler <raf@durin42.com>
parents: 242
diff changeset
20 ;; to debug:
478
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
21 ;;(setq compilation-error-regexp-alist '(mercurial-check-code-output
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
22 ;; mercurial-test-output-tb))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
23
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
24
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
25 ;; stolen from compile-tests.el
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
26 (defun af--compile--test-error-line (test)
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
27 (erase-buffer)
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
28 (setq compilation-locs (make-hash-table))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
29 (insert (car test))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
30 (compilation-parse-errors (point-min) (point-max))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
31 (let ((msg (get-text-property (nth 1 test) 'compilation-message)))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
32 (should msg)
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
33 (let ((loc (compilation--message->loc msg))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
34 (col (nth 2 test))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
35 (line (nth 3 test))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
36 (file (nth 4 test))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
37 (type (nth 5 test))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
38 end-col end-line)
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
39 (if (consp col)
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
40 (setq end-col (cdr col) col (car col)))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
41 (if (consp line)
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
42 (setq end-line (cdr line) line (car line)))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
43 (should (equal (compilation--loc->col loc) col))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
44 (should (equal (compilation--loc->line loc) line))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
45 (when file
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
46 (should (equal (caar (compilation--loc->file-struct loc)) file)))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
47 (when end-col
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
48 (should (equal (car (cadr (nth 2 (compilation--loc->file-struct loc))))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
49 end-col)))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
50 (should (equal (car (nth 2 (compilation--loc->file-struct loc)))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
51 (or end-line line)))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
52 (when type
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
53 (should (equal type (compilation--message->type msg)))))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
54 msg))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
55
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
56 (defvar af--compile-tests--test-regexps-data
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
57 ;; The computed column numbers are zero-indexed, so subtract 1 from
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
58 ;; what's reported in the string. The end column numbers are for
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
59 ;; the character after, so it matches what's reported in the string.
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
60 '(;;hg test-check-code
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
61 ("+ contrib/debugshell.py:37:" 1 nil 37 "contrib/debugshell.py")
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
62 ("+ File \"/tmp/hg/mercurial/commands.py\", line 3115, in help_"
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
63 1 nil 3115 "/tmp/hg/mercurial/commands.py")
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
64 ))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
65
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
66 (require 'ert)
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
67 (ert-deftest af--hg-error-cases ()
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
68 "Test hg-specific compilation-mode regular expressions"
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
69 (with-temp-buffer
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
70 (font-lock-mode -1)
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
71 (mapc #'af--compile--test-error-line af--compile-tests--test-regexps-data)))
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
72
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
73 ;; To run tests:
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
74 ;;
6bcdbe7b8e42 emacs: fix up hg test output regular expressions
Augie Fackler <raf@durin42.com>
parents: 445
diff changeset
75 ;; emacs -batch -l .elisp/settings/50.compilation-tweaks.el -f ert-run-tests-batch-and-exit