init_spec.fnl

Branches > main > latest > files / nvim / pack / plugins / opt / conjure / fnl / conjure-spec / client / clojure / nrepl / init_spec.fnl

(local {: describe : it} (require :plenary.busted))
(local assert (require :luassert.assert))
(local clj (require :conjure.client.clojure.nrepl))

(describe "client.clojure.nrepl.init"
  (fn []
    (describe "context"
      (fn []

        (it "isn't a namespace"
          (fn []
            (assert.are.equals nil (clj.context "not a namespace"))))
        (it "simplest form"
          (fn []
            (assert.are.equals "foo" (clj.context "(ns foo)"))))
        (it "missing closing paren"
          (fn []
            (assert.are.equals "foo" (clj.context "(ns foo"))))
        (it "short meta"
          (fn []
            (assert.are.equals "foo" (clj.context "(ns ^:bar foo baz)"))))
        (it "short meta missing closing paren"
          (fn []
            (assert.are.equals "foo" (clj.context "(ns ^:bar foo baz"))))
        (it "long meta"
          (fn []
            (assert.are.equals "foo" (clj.context "(ns ^{:bar true} foo baz)"))))
        (it "newlines and docs"
          (fn []
            (assert.are.equals "foo" (clj.context "(ns \n^{:bar true} foo\n \"some docs\"\n baz"))))
        (it "strip shebang"
          (fn []
            (assert.are.equals "foo" (clj.context "#!/usr/bin/env bb\n(ns ^:bar foo)\n(def foo1 1)"))))

        (it "namespace metadata doesn't break evaluation"
          (fn []
            ;; https://github.com/Olical/conjure/issues/204
            (assert.are.equals "foo" (clj.context "(ns ^{:clj-kondo/config {:lint-as '{my-awesome/defn-like-macro clojure.core/defn}}} foo)"))
            (assert.are.equals "foo" (clj.context "(ns ^{:clj-kondo/config {:lint-as (quote {my-awesome/defn-like-macro clojure.core/defn})}} foo)"))))
        (it ") before namespace"
          (fn []
            ;; https://github.com/Olical/conjure/issues/207
            (assert.are.equals "foo" (clj.context "(ns ;)\n  foo)"))
            (assert.are.equals "foo" (clj.context "(ns ^{:doc \"...... (....) (..)))...\"}\n  foo)" b))))))))