Skip to content

Commit

Permalink
feat: Update done-test-interceptor to place/unplace signs
Browse files Browse the repository at this point in the history
  • Loading branch information
liquidz committed Feb 18, 2024
1 parent 0aef287 commit bc481c6
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 59 deletions.
3 changes: 3 additions & 0 deletions plugin/elin.vim
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ function! s:init() abort
call elin#server#connect(g:elin_server_port)
endif

" FIXME this should be configurable by .elin.edn
exe ':sign define elin_error text=🔥 texthl=ErrorMsg'

aug elin_autocmd_group
au!
au BufRead *.clj,*.cljs,*.cljc call elin#intercept('BufRead')
Expand Down
74 changes: 15 additions & 59 deletions src/elin/interceptor/test.clj
Original file line number Diff line number Diff line change
Expand Up @@ -4,62 +4,11 @@
[elin.constant.interceptor :as e.c.interceptor]
[elin.function.nrepl.cider.test :as e.f.n.c.test]
[elin.function.vim.info-buffer :as e.f.v.info-buffer]
[elin.function.vim.sign :as e.f.v.sign]
[elin.log :as e.log]
[elin.util.map :as e.u.map]))

;; function! iced#nrepl#test#done(parsed_response) abort
;; if empty(a:parsed_response) | return | endif
;;
;; let errors = a:parsed_response['errors']
;; let summary = a:parsed_response['summary']
;; let expected_and_actuals = []
;; let sign = iced#system#get('sign')
;;
;; if has_key(a:parsed_response, 'passes')
;; let passes = a:parsed_response['passes']
;; for passed_var in uniq(map(copy(passes), {_, v -> v['var']}))
;; call sign.unplace_by({'group': passed_var})
;; endfor
;; else
;; call sign.unplace_by({'name': s:sign_name, 'group': '*'})
;; endif
;;
;; for err in errors
;; let lnum = ''
;;
;; if has_key(err, 'lnum')
;; call sign.place(s:sign_name, err['lnum'], err['filename'], err['var'])
;; let lnum = printf(' (Line: %s)', err['lnum'])
;; endif
;;
;; if has_key(err, 'actual') && !empty(err['actual'])
;; if has_key(err, 'expected') && !empty(err['expected'])
;; let expected_and_actuals = expected_and_actuals + []
;; \ printf(');; %s%s', err['text'], lnum),
;; \ s:__dict_to_str(err, ['expected', 'actual', 'diffs']),
;; \ ''
;; else
;; let expected_and_actuals = expected_and_actuals + []
;; \ printf(');; %s%s', err['text'], lnum),
;; \ err['actual'],
;; \ ''
;; endif
;; endif
;; endfor
;;
;; call iced#buffer#error#show(join(expected_and_actuals, "\n"))
;; call iced#qf#set(errors)
;;
;; if summary['is_success']
;; call iced#message#info_str(summary['summary'])
;; else
;; call iced#message#error_str(summary['summary'])
;; endif
;;
;; call iced#hook#run('test_finished', {})
;; \ 'result': summary['is_success'] ? 'succeeded' : 'failed',
;; \ 'summary': summary['summary']
;; endfunction
(def ^:private sign-name "error")

(def done-test-interceptor
{:name ::done-test-interceptor
Expand All @@ -68,13 +17,18 @@
(let [{:keys [passed failed]} (->> (e.f.n.c.test/collect-results nrepl response)
(group-by :result))]
;; unsign
(when (seq passed)
(e.log/debug "TODO unsign"))

(if (seq passed)
(doseq [var-str (distinct (map :var passed))]
(e.f.v.sign/unplace-by host {:group var-str}))
(e.f.v.sign/unplace-by host {:group "*"}))
;; sign
(when (seq failed)
(e.log/debug "TODO sign"))

(doseq [{:as result :keys [lnum]} failed
:when lnum]
(e.f.v.sign/place host {:name sign-name
:lnum lnum
:file (:filename result)
:group (:var result)}))
;; append results to info buffer
(->> failed
(mapcat (fn [{:as failed-result :keys [text lnum expected actual]}]
(if (empty? actual)
Expand All @@ -87,8 +41,10 @@
(str/join "\n")
(e.f.v.info-buffer/append host))
;; TODO quickfix
;; call iced#qf#set(errors)
(comment nil))

;; show summary
(let [{:keys [succeeded? summary]} (e.f.n.c.test/summary response)]
(if succeeded?
(e.log/info host summary)
Expand Down

0 comments on commit bc481c6

Please sign in to comment.