-
Notifications
You must be signed in to change notification settings - Fork 4
/
skoarcery.el
92 lines (77 loc) · 2.41 KB
/
skoarcery.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
(require 'json)
(make-face 'skoarcery-sanity-fail)
(set-face-foreground 'skoarcery-sanity-fail "black")
(set-face-background 'skoarcery-sanity-fail "lightred")
(make-face 'skoarcery-sanity-pass)
(set-face-foreground 'skoarcery-sanity-pass "black")
(set-face-background 'skoarcery-sanity-pass "lightgreen")
(defun re-seq (regexp string group)
"Get a list of all regexp matches in a string"
(save-match-data
(let ((pos 0)
matches)
(while (string-match regexp string pos)
(push (match-string group string) matches)
(setq pos (match-end 0))
)
matches)
)
)
(defun skoar-build ()
(interactive)
(let ((default-directory "~/Documents/GitHub/Skoarcery/"))
(let ((result (shell-command-to-string "python build.py")))
(with-current-buffer (get-buffer-create "*skoar build*")
(erase-buffer)
(insert "--- skoar build ---")
(insert result)
)
)
)
(skoar-sanity)
)
(defun skoar-sanity ()
(interactive)
(let ((default-directory "~/Documents/GitHub/Skoarcery/"))
(let ((result (shell-command-to-string "python sanity.py"))
(outbuf (get-buffer-create "*skoar tests*"))
)
(with-current-buffer (get-buffer-create "*skoar sanity*")
(erase-buffer)
(insert "\n--- skoar sanity ---\n")
(insert result)
)
;; clear output buffer and turn on colours
(with-current-buffer outbuf
(font-lock-mode)
(erase-buffer)
)
(dolist (jsrc (re-seq "JSON: \\(.*\\)" result 1))
(with-current-buffer outbuf
(let ((json-object-type 'plist)
(json-array-type 'list))
(let ((o (json-read-from-string jsrc)))
(setq test-name (nth 0 (re-seq ".*/testing/\\(.*\\)\\.scd" (plist-get o :test) 1)))
(insert (propertize test-name 'font-lock-face '(:foreground "black" :background "red")))
(insert "\n")
;; make it red
(dolist (failure-line (plist-get o :failures))
(setq failure (nth 0 (re-seq ".*test_do - \\(.*\\)" failure-line 1)))
(insert (propertize failure 'font-lock-face '(:foreground "red" :background "black")))
(insert "\n")
)
)
)
)
)
(dolist (yay (re-seq "Sanity Tests: . OK ." result 0))
(with-current-buffer outbuf
(insert (propertize yay 'font-lock-face '(:foreground "black" :background "green")))
(insert "\n")
)
)
)
)
)
(provide 'skoarcery)