swank_spec.fnl
Branches > main > latest > files / nvim / pack / plugins / opt / conjure / fnl / conjure-spec / remote / swank_spec.fnl
(local {: describe : it} (require :plenary.busted))
(local assert (require :luassert.assert))
(local swank (require :conjure.remote.swank))
(describe "conjure.remote.swank"
(fn []
(describe "message-id"
(fn []
(it "reads the kind and id of requests and returns"
(fn []
(assert.same [":return" "12"]
[(swank.message-id "(:return (:ok (\"\" \"(1 2)\")) 12)")])
(assert.same [":emacs-rex" "3"]
[(swank.message-id "(:emacs-rex (swank:eval-and-grab-output \"1\") \"*package*\" t 3)")])))
(it "returns nil for events without an id"
(fn []
(assert.is_nil (swank.message-id "(:debug-activate 42 1 nil)"))))))
(describe "split-messages"
(fn []
(it "splits coalesced messages and keeps a partial one for later"
(fn []
(let [(msgs rest) (swank.split-messages "000003abc000002de00000")]
(assert.same ["abc" "de"] msgs)
(assert.are.equal "00000" rest))))
(it "waits for the rest of a message split across reads"
(fn []
(let [(msgs rest) (swank.split-messages "000005ab")]
(assert.same [] msgs)
(assert.are.equal "000005ab" rest))))))))