Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 70 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ Anyone with Clojure knowledge can help out!
Check out the latest progress and the steps for helping out here: https://github.com/jank-lang/clojure.core-test/issues/1

## Running the tests

Note: You can also run tests with Babashka tasks. See below.

For a one-off run, you can use the following:

```bash
Expand Down Expand Up @@ -70,3 +73,70 @@ separated.
```bash
npx nodemon -w target/js taget/js/node-tests.js --test=clojure.core-test.int-questionmark
```

## Babashka Tasks

You can see which Babashka tasks are available with:
```bash
~$ bb tasks
The following tasks are available:

test-jvm Runs JVM tests
test-cljs Runs CLJS tests
new-test Creates new test for the Clojure symbols named by <args>

```

Currently, there are tasks to run the Clojure JVM and Clojurescript test suites.

Another task, `new-test`, allows you to easily create new test files
that have all the standard naming conventions already applied. If you
wanted to test a function named `clojure.core/foo`, for instance, you
would type:

```bash
bb new-test foo
```

will create a new file named `foo.cljc` in the test namespace. The
test file will look like the following:

```
(ns clojure.core-test.{{ns-name}}
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

(when-var-exists clojure.core/{{sym-name}}
(deftest test-{{sym-name}}
;; `testing` sections are optional, depending on how you want to
;; structure your tests. If you have a lot of tests and they group
;; together in subgroups, then use `testing`. The `testing` form
;; can also be a nice way to group tests that only apply to a
;; subset of Clojure implementations. These can then be guarded by
;; reader conditionals.
(testing "section name"
(is (= 1 0)))))
```

Simply fill in test assertions and you're off and running.

Note: `new-test` takes care of converting various characters that
might be problematic in file names to expanded versions. For instance
"?" is converted to "questionmark" and "*" is converted to
"star". Thus, you should always provide the name of the `clojure.core`
symbol you want to test, not the file name or other name. You may need
to quote or escape special characters when executing the command in
the shell, however, to prevent the shell from interpreting them before
they are passed to the Babashka task.

The complete set of conversions of characters to names is:
- "*" -> "star"
- "+" -> "plus
- "!" -> "bang"
- "'" -> "squote"
- "?" -> "qmark"
- "<" -> "lt"
- ">" -> "gt"
- "=" -> "eq"
- "%" -> "percent"))

10 changes: 10 additions & 0 deletions bb.edn
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{:min-bb-version "0.4.0"
:paths ["bb"]
:tasks
{test-jvm {:doc "Runs JVM tests"
:task (shell "lein test")}
test-cljs {:doc "Runs CLJS tests"
:task (shell "npx shadow-cljs compile test")}
new-test {:doc "Creates new test for the Clojure symbols named by <args>"
:requires ([new-test])
:task (new-test/new-test *command-line-args*)}}}
56 changes: 56 additions & 0 deletions bb/new_test.clj
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
(ns new-test
"Creates a new test from a template"
(:require [babashka.fs :as fs]
[clojure.string :as str]
[selmer.parser :as s]
[selmer.util :as util]))

;;; *, +, !, -, _, ', ?, <, > and =
(defn sym-name->ns-name
"Replace special characters in symbol name to make an ns-name."
[sym]
(let [n (name sym)
ns-sym (-> (if (str/starts-with? n "-")
(str/replace-first n "-" "minus")
n)
(str/replace "*" "-star")
(str/replace "+" "-plus")
(str/replace "!" "-bang")
(str/replace "'" "-squote")
(str/replace "?" "-qmark")
(str/replace "<" "-lt")
(str/replace ">" "-gt")
(str/replace "=" "-eq")
(str/replace "%" "-percent"))]
(if (str/starts-with? ns-sym "-")
(subs ns-sym 1)
ns-sym)))

(defn ns-name->file-name
"Replace hyphens with underscores to create the file name."
[ns-name]
(str/replace ns-name "-" "_"))

(defn new-test
"Create a new test file for the symbol which is the first command line argument."
[args]
(if (zero? (count args))
(println "Please supply one or more Clojure symbols corresponding to the new tests.")
(loop [[sym-name & args] args]
(when sym-name
(let [ns-name (sym-name->ns-name sym-name)
file-name (ns-name->file-name ns-name)
dest-file-name (str "test/clojure/core_test/" file-name ".cljc")]
(if (fs/exists? dest-file-name)
(println dest-file-name "already exists. No action taken.")
(do (println "Creating" dest-file-name)
(let [template (slurp "templates/test-template.cljc")]
(spit dest-file-name
(util/without-escaping
(s/render template {:sym-name sym-name
:ns-name ns-name
:file-name file-name})))))))
(recur args)))))



14 changes: 14 additions & 0 deletions templates/test-template.cljc
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
(ns clojure.core-test.{{ns-name}}
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

(when-var-exists clojure.core/{{sym-name}}
(deftest test-{{sym-name}}
;; `testing` sections are optional, depending on how you want to
;; structure your tests. If you have a lot of tests and they group
;; together in subgroups, then use `testing`. The `testing` form
;; can also be a nice way to group tests that only apply to a
;; subset of Clojure implementations. These can then be guarded by
;; reader conditionals.
(testing "section name"
(is (= 1 0)))))
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.any-questionmark
(ns clojure.core-test.any-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.char-questionmark
(ns clojure.core-test.char-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.decimal-questionmark
(ns clojure.core-test.decimal-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.double-questionmark
(ns clojure.core-test.double-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.even-questionmark
(ns clojure.core-test.even-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.false-questionmark
(ns clojure.core-test.false-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.float-questionmark
(ns clojure.core-test.float-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.ident-questionmark
(ns clojure.core-test.ident-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.identical-questionmark
(ns clojure.core-test.identical-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.int-questionmark
(ns clojure.core-test.int-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.integer-questionmark
(ns clojure.core-test.integer-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.keyword-questionmark
(ns clojure.core-test.keyword-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.nan-questionmark
(ns clojure.core-test.nan-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.neg-int-questionmark
(ns clojure.core-test.neg-int-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.neg-questionmark
(ns clojure.core-test.neg-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.nil-questionmark
(ns clojure.core-test.nil-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.number-questionmark
(ns clojure.core-test.number-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.odd-questionmark
(ns clojure.core-test.odd-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.plus-singlequote
(ns clojure.core-test.plus-squote
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.pos-int-questionmark
(ns clojure.core-test.pos-int-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.pos-questionmark
(ns clojure.core-test.pos-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.qualified-ident-questionmark
(ns clojure.core-test.qualified-ident-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.qualified-keyword-questionmark
(ns clojure.core-test.qualified-keyword-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.qualified-symbol-questionmark
(ns clojure.core-test.qualified-symbol-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.ratio-questionmark
(ns clojure.core-test.ratio-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.rational-questionmark
(ns clojure.core-test.rational-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.simple-ident-questionmark
(ns clojure.core-test.simple-ident-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.simple-keyword-questionmark
(ns clojure.core-test.simple-keyword-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.simple-symbol-questionmark
(ns clojure.core-test.simple-symbol-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.some-questionmark
(ns clojure.core-test.some-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.star-singlequote
(ns clojure.core-test.star-squote
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.string-questionmark
(ns clojure.core-test.string-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.symbol-questionmark
(ns clojure.core-test.symbol-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.true-questionmark
(ns clojure.core-test.true-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
(ns clojure.core-test.zero-questionmark
(ns clojure.core-test.zero-qmark
(:require [clojure.test :as t :refer [deftest testing is are]]
[clojure.core-test.number-range :as r]
[clojure.core-test.portability #?(:cljs :refer-macros :default :refer) [when-var-exists]]))
Expand Down
Loading