Mercurial > dotfiles
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 |
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 |