pods/test/babashka/pods/sci_test.clj
Wes Morgan 842ff34739
Fix tests, remove accidental babashka code dependency, & add CI config (#45)
* Update clojure CLI flags in script/test

* Throw error when not one of version or path

...with qualified symbol pod-spec

* Fix some minor formatting issues

* Check for new error message in pod-registry test

* Add a test for resolve fn in edn data readers

* Add CI config

* Try using clojure tools-deps image in CI

* Check for new error message in sci pod-registry test

* Use latest version of buddy in pod-registry test

...for more platform support

* Stop depending on babashka

Instead accept an arg for the thing we were getting from it (location of the bb.edn file)

* Save maven deps in cache in CI
2022-03-23 16:57:56 +01:00

39 lines
1.8 KiB
Clojure

(ns babashka.pods.sci-test
(:require [babashka.pods.sci :as pods]
[babashka.pods.test-common :refer [test-program assertions pod-registry]]
[clojure.string :as str]
[clojure.test :refer [deftest is]]
[sci.core :as sci]))
(deftest sci-test
(let [out (java.io.StringWriter.)
err (java.io.StringWriter.)
ctx-ref (volatile! nil)
ctx (sci/init {:namespaces {'babashka.pods
{'load-pod (fn [& args]
(apply pods/load-pod @ctx-ref args))
'invoke pods/invoke
'unload-pod pods/unload-pod
'add-transit-read-handler! pods/add-transit-read-handler!
'add-transit-write-handler! pods/add-transit-write-handler!
'set-default-transit-write-handler! pods/set-default-transit-write-handler!}}
:classes {'System System
'java.time.LocalDateTime java.time.LocalDateTime
'java.lang.Class Class}})
_ (vreset! ctx-ref ctx)
ret (sci/binding [sci/out out
sci/err err]
(sci/eval-string* ctx test-program))]
(assertions out err ret)))
(deftest pod-registry-test
(let [out (java.io.StringWriter.)
err (java.io.StringWriter.)
ex (binding [*out* out
*err* err]
(try (load-string
pod-registry)
(catch Exception e
e)))]
(is (str/includes? (str out) "c3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2"))
(is (str/includes? (pr-str ex) "Version or path must be provided"))))