Skip to content

Commit b08cb28

Browse files
committed
Add test tree mouse support
1 parent cdb41f7 commit b08cb28

File tree

3 files changed

+41
-8
lines changed

3 files changed

+41
-8
lines changed

lsp-dart-test-support.el

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@
2626

2727
(require 'lsp-dart-protocol)
2828
(require 'lsp-dart-utils)
29-
(require 'lsp-dart-test-output)
30-
(require 'lsp-dart-test-tree)
3129
(require 'lsp-dart-dap)
3230

3331

lsp-dart-test-tree.el

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
(require 'lsp-treemacs)
2525

2626
(require 'lsp-dart-protocol)
27+
(require 'lsp-dart-test-support)
2728

2829
(defcustom lsp-dart-test-tree-on-run t
2930
"Enable the test tree when running tests."
@@ -232,15 +233,44 @@ Defaults to side following treemacs default."
232233
(car (last (append group-ids nil)))
233234
test))))
234235

235-
(defun lsp-dart-test-tree--ret-action (uri position)
236+
(defun lsp-dart-test-tree--ret-action (uri &optional position)
236237
"Build the ret action for an item in the test tree view.
237238
URI is the test uri.
238239
POSITION is the test start position."
239-
(interactive)
240240
(lsp-treemacs--open-file-in-mru (lsp--uri-to-path uri))
241-
(goto-char (lsp--position-to-point position))
241+
(when position
242+
(goto-char (lsp--position-to-point position)))
242243
(run-hooks 'xref-after-jump-hook))
243244

245+
(defun lsp-dart-test-tree--run-test (uri &optional position)
246+
"Run test from POSITION and URI from tree."
247+
(lsp-treemacs--open-file-in-mru (lsp--uri-to-path uri))
248+
(if position
249+
(progn
250+
(goto-char (lsp--position-to-point position))
251+
(lsp-dart-test--run (lsp-dart-test--test-at-point)))
252+
(lsp-dart-test--run (list :file-name (lsp--uri-to-path uri)))))
253+
254+
(defun lsp-dart-test-tree--build-suite-actions (suite)
255+
"Build the action options for SUITE in test tree view."
256+
(let ((uri (plist-get suite :path)))
257+
`(["Go to file" (lsp-dart-test-tree--ret-action ,uri)]
258+
["Run file tests again" (lsp-dart-test-tree--run-test ,uri)])))
259+
260+
(defun lsp-dart-test-tree--build-group-actions (group)
261+
"Build the action options for GROUP in test tree view."
262+
(let ((uri (plist-get group :uri))
263+
(position (plist-get group :position)))
264+
`(["Go to group" (lsp-dart-test-tree--ret-action ,uri ,position)]
265+
["Run group tests again" (lsp-dart-test-tree--run-test ,uri ,position)])))
266+
267+
(defun lsp-dart-test-tree--build-test-actions (test)
268+
"Build the action options for TEST in test tree view."
269+
(let ((uri (plist-get test :uri))
270+
(position (plist-get test :position)))
271+
`(["Go to test" (lsp-dart-test-tree--ret-action ,uri ,position)]
272+
["Run test again" (lsp-dart-test-tree--run-test ,uri ,position)])))
273+
244274
(defun lsp-dart-test-tree--suite->tree (suite-or-group)
245275
"Map SUITE-OR-GROUP to treemacs tree items."
246276
(let ((tests (seq-map
@@ -251,7 +281,8 @@ POSITION is the test start position."
251281
(plist-get test :time))
252282
:icon (plist-get test :status)
253283
:ret-action (lambda (&rest _) (lsp-dart-test-tree--ret-action (plist-get test :uri)
254-
(plist-get test :position)))))
284+
(plist-get test :position)))
285+
:actions (lsp-dart-test-tree--build-test-actions test)))
255286
(plist-get suite-or-group :tests)))
256287
(groups (seq-map
257288
(-lambda ((group-id . group))
@@ -262,13 +293,15 @@ POSITION is the test start position."
262293
(plist-get group :status))
263294
:children (lsp-dart-test-tree--suite->tree group)
264295
:ret-action (lambda (&rest _) (lsp-dart-test-tree--ret-action (plist-get group :uri)
265-
(plist-get group :position))))
296+
(plist-get group :position)))
297+
:actions (lsp-dart-test-tree--build-group-actions group))
266298
(list :key (concat "suite-" (number-to-string (plist-get suite-or-group :id)))
267299
:label (lsp-dart-test-tree--colorize-name (f-filename (plist-get suite-or-group :path))
268300
(plist-get suite-or-group :status))
269301
:icon (plist-get suite-or-group :status)
270302
:children (lsp-dart-test-tree--suite->tree group)
271-
:ret-action (lambda (&rest _) (lsp-treemacs--open-file-in-mru (plist-get suite-or-group :path))))))
303+
:ret-action (lambda (&rest _) (lsp-dart-test-tree--ret-action (plist-get group :uri)))
304+
:actions (lsp-dart-test-tree--build-suite-actions suite-or-group))))
272305
(plist-get suite-or-group :groups))))
273306
(when (or tests groups)
274307
(append tests groups))))

lsp-dart.el

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
(require 'lsp-dart-closing-labels)
3636
(require 'lsp-dart-dap)
3737
(require 'lsp-dart-test-support)
38+
(require 'lsp-dart-test-output)
39+
(require 'lsp-dart-test-tree)
3840
(require 'lsp-dart-code-lens)
3941
(require 'lsp-dart-outline)
4042
(require 'lsp-dart-flutter-fringe-colors)

0 commit comments

Comments
 (0)