-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathevil-textobj-tree-sitter-query-test.el
119 lines (91 loc) · 4.06 KB
/
evil-textobj-tree-sitter-query-test.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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
;;; Code:
(require 'tree-sitter-langs)
(require 'evil-textobj-tree-sitter)
(require 'ert)
(defun evil-textobj-tree-sitter--test-loading-with-comment-prefix (lang comment-prefix)
"Try loading grammar for `LANG' and test with comment using `COMMENT-PREFIX'."
(evil-textobj-tree-sitter--test-loading-with-comment
lang
(concat comment-prefix " howdy!")))
(defun evil-textobj-tree-sitter--test-loading-with-comment (lang text &optional region)
"Try loading grammar for `LANG'.
And test with comment provided in `TEXT' optionally passing in `REGION'."
(let* ((bufname (make-temp-name "evil-textobj-tree-sitter-test--"))
(filename (concat "/tmp/" bufname)))
(find-file filename)
(fundamental-mode)
(with-current-buffer bufname
(setq-local tree-sitter-major-mode-language-alist `((fundamental-mode . ,lang)))
(setq-local evil-textobj-tree-sitter-major-mode-language-alist `((fundamental-mode . ,(symbol-name lang))))
(insert text)
(tree-sitter-mode)
(goto-char 0)
(should (equal
(evil-textobj-tree-sitter--range
1
(list (intern "comment.outer")))
(if region region (cons 1 (+ 1 (length text)))))))
(set-buffer-modified-p nil)
(kill-buffer bufname)))
;; TODO: Simplify code using macros and dolist
;; bash
(ert-deftest evil-textobj-tree-sitter-try-bash ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'bash "#"))
;; c
(ert-deftest evil-textobj-tree-sitter-try-c ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'c "//"))
;; cpp
(ert-deftest evil-textobj-tree-sitter-try-cpp ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'cpp "//"))
;; elixir
(ert-deftest evil-textobj-tree-sitter-try-elixir ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'elixir "#"))
;; elm
(ert-deftest evil-textobj-tree-sitter-try-elm ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'elm "--"))
;; go
(ert-deftest evil-textobj-tree-sitter-try-go ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'go "//"))
;; haskell
(ert-deftest evil-textobj-tree-sitter-try-haskell ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'haskell "--"))
;; hcl
(ert-deftest evil-textobj-tree-sitter-try-hcl ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'hcl "#"))
;; html <!--
(ert-deftest evil-textobj-tree-sitter-try-html ()
(evil-textobj-tree-sitter--test-loading-with-comment 'html "<!-- howdy -->"))
;; java
(ert-deftest evil-textobj-tree-sitter-try-java ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'java "//"))
;; javascript
(ert-deftest evil-textobj-tree-sitter-try-javascript ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'javascript "//"))
;; julia TODO: Needs grammar update
;; (ert-deftest evil-textobj-tree-sitter-try-julia ()
;; (evil-textobj-tree-sitter--test-loading-with-comment-prefix 'julia "#"))
;; php
(ert-deftest evil-textobj-tree-sitter-try-php ()
(evil-textobj-tree-sitter--test-loading-with-comment 'php "<?php\n// howdy\n?>" (cons 7 15)))
;; python
(ert-deftest evil-textobj-tree-sitter-try-python ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'python "#"))
;; r
(ert-deftest evil-textobj-tree-sitter-try-r ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'r "#"))
;; ruby
(ert-deftest evil-textobj-tree-sitter-try-ruby ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'ruby "#"))
;; rust
(ert-deftest evil-textobj-tree-sitter-try-rust ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'rust "//"))
;; typescript
(ert-deftest evil-textobj-tree-sitter-try-typescript ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'typescript "//"))
;; verilog
(ert-deftest evil-textobj-tree-sitter-try-verilog ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'verilog "//"))
;; zig
(ert-deftest evil-textobj-tree-sitter-try-zig ()
(evil-textobj-tree-sitter--test-loading-with-comment-prefix 'zig "//"))
;;; evil-textobj-tree-sitter-query-test.el ends here