babashka/test/babashka/test_test.clj
2020-01-29 23:22:26 +01:00

71 lines
2.2 KiB
Clojure

(ns babashka.test-test
(:require
[babashka.test-utils :as tu]
[clojure.string :as str]
[clojure.test :as t :refer [deftest is]]
[clojure.java.io :as io]))
(defn bb [& args]
(apply tu/bb nil (map str args)))
(deftest deftest-test
(is (str/includes?
(bb "(require '[clojure.test :as t]) (t/deftest foo (t/is (= 4 5))) (foo)")
"expected: (= 4 5)\n actual: (not (= 4 5))\n")))
(deftest run-tests-test
(let [output (bb "(require '[clojure.test :as t]) (t/deftest foo (t/is (= 4 5))) (t/run-tests)")]
(is (str/includes? output "Testing user"))
(is (str/includes? output "{:test 1, :pass 0, :fail 1, :error 0, :type :summary}"))))
(deftest run-all-tests-test
(let [output (bb "
(require '[clojure.test :as t])
(t/deftest foo (t/is (= 4 5)))
(ns foobar)
(require '[clojure.test :as t])
(t/run-all-tests)")]
(is (str/includes? output "Testing user"))
(is (str/includes? output "Testing foobar"))
(is (str/includes? output "{:test 1, :pass 0, :fail 1, :error 0, :type :summary}"))))
(deftest fixtures-test
(let [output (bb "
(require '[clojure.test :as t])
(defn once [f] (prn :once-before) (f) (prn :once-after))
(defn each [f] (prn :each-before) (f) (prn :each-after))
(t/use-fixtures :once once)
(t/use-fixtures :each each)
(t/deftest foo)
(t/deftest bar)
(t/run-tests)")]
(is (str/includes? output (str/trim "
:once-before
:each-before
:each-after
:each-before
:each-after
:once-after")))))
(deftest with-test
(let [output (bb "
(require '[clojure.test :as t])
(t/with-test
(defn my-function [x y]
(+ x y))
(t/is (= 4 (my-function 2 2)))
(t/is (= 7 (my-function 3 4))))
(t/run-tests)")]
(is (str/includes? output "Ran 1 tests containing 2 assertions."))))
(deftest testing-test
(is (str/includes? (bb "(require '[clojure.test :as t]) (t/testing \"foo\" (t/is (= 4 5)))")
"foo")))
(deftest are-test
(is (str/includes? (bb "(require '[clojure.test :as t]) (t/are [x y] (= x y) 2 (+ 1 2))")
"expected: (= 2 (+ 1 2))")))
(deftest assert-expr-test
(is (str/includes? (bb (.getPath (io/file "test-resources" "babashka" "assert_expr.clj")))
"3.14 should be roughly 3.141592653589793")))