testdoc

Yet another doctest implementation in Clojure


License
EPL-1.0

Documentation

testdoc

GitHub Actions for test workflow GitHub Actions for babashka test workflow GitHub Actions for lint workflow Dependencies Status Clojars Project

Yet another doctest implementation in Clojure

Usage

testdoc extends clojure.test/is macro.

REPL style

=> (require '[clojure.test :as t]
=>          'testdoc.core)
nil

=> (defn myplus
=>   "Add a and b
=>
=>   => (myplus 1 2)
=>   3
=>   => (myplus 2
=>   =>         3)
=>   5"
=>   [a b]
=>   (+ a b))
var?

=> (t/deftest myplus-test
=>   (t/is (testdoc #'myplus)))
var?

=> (t/test-var *1)
nil

;; Other examples
=> (hash-map :multiple "lines")
{:multiple
 "lines"}

Code-first style

(defn mymulti
  "Multiply a and b

  (mymulti 1 2)
  ;; => 2
  (mymulti 2
           3)
  ;; => 6"
  [a b]
  (* a b))
;; => var?

(t/deftest mymulti-test
  (t/is (testdoc #'mymulti)))
;; => var?

(t/test-var *1)
;; => nil

;; Other examples
(hash-map :multiple "lines")
;; => {:multiple
;; =>  "lines"}

Testing external documents

This document is tested by this library, of course!

(require '[clojure.java.io :as io])
;; => nil

(t/deftest external-document-test
  (t/is (testdoc (slurp (io/file "test/resources/README.adoc")))))
;; => var?

(t/test-var *1)
;; => nil

Test error

testdoc will add a line number information to a error message text.

For example, you have a test code like below:

(t/deftest error-test
  (t/is (testdoc "=> (unresolved-symbol)
                  :failure")))

Then, lein test will show you errors like below:

(= (unresolved-symbol) :failure), [line: 1]

Other works

License

Copyright © 2018-2020 Masashi Iizuka

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.