babashka/test/babashka/test_utils.clj

46 lines
1.2 KiB
Clojure
Raw Normal View History

2019-08-09 12:51:42 +00:00
(ns babashka.test-utils
(:require
[babashka.main :as main]
[me.raynes.conch :refer [let-programs] :as sh]))
(set! *warn-on-reflection* true)
(defn bb-jvm [input & args]
(let [es (java.io.StringWriter.)
os (java.io.StringWriter.)]
(binding [*err* es
*out* os]
(let [res (if input
2019-08-15 04:28:00 +00:00
(with-in-str input
(apply main/main args))
(apply main/main args))]
(if (zero? res)
(str os)
(throw (ex-info (str es)
{:stdout (str os)
:stderr (str es)})))))))
2019-08-09 12:51:42 +00:00
(defn bb-native [input & args]
(let-programs [bb "./bb"]
2019-08-15 04:28:00 +00:00
(try (if input
(apply bb (conj (vec args)
{:in input}))
2019-08-17 21:44:17 +00:00
(apply bb args))
2019-08-15 04:28:00 +00:00
(catch Exception e
(let [d (ex-data e)
err-msg (or (:stderr (ex-data e)) "")]
(throw (ex-info err-msg d)))))))
2019-08-09 12:51:42 +00:00
(def bb
2019-08-09 21:08:49 +00:00
(case (System/getenv "BABASHKA_TEST_ENV")
2019-08-09 12:51:42 +00:00
"jvm" #'bb-jvm
"native" #'bb-native
#'bb-jvm))
2019-08-28 21:42:15 +00:00
(def jvm? (= bb #'bb-jvm))
(def native? (not jvm?))
(if jvm?
2019-08-09 12:51:42 +00:00
(println "==== Testing JVM version")
(println "==== Testing native version"))