All notable changes to volley are recorded here. The format follows Keep a Changelog, and volley uses semantic versioning once it leaves alpha.
Second alpha: random test order, in-process runs for short JVM suites,
and watch mode that follows changes to tests.edn, deps.edn and
bb.edn.
--randomize, the vars inside each namespace run in an order shuffled
from the run seed and the namespace's name, so babashka and JVM workers
agree on it. --seed N reproduces that order, a failed run prints
Randomized with --seed N as Kaocha does, and load hooks see the vars
in run order. Namespaces still start slowest first. The warning that
volley does not randomize is gone. (volley#4).volley/, it writes a .gitignore containing *
inside it, so git and jj ignore the cache without a project entry.
(volley#1)deps.edn or bb.edn changes
and computes the workers' classpath again. Removed dependencies and
paths stay on the classpath until a restart. (volley#10).volley/history.edn, so a first run still
starts workers.--workers, :workers, --isolate and --watch turn this off, and
so does a namespace with no source file on the parent's classpath or
under a test path.System/exit ends the whole run. volley reports
the call on stderr and exits with code 1.println from a thread that does not carry bindings over (a raw
Thread, an executor, core.async) reaches the terminal instead of
the test's output.System/setOut that a test never undoes stays in place for the
rest of the run.ClassLoader/getSystemResource) does not see the added test
paths..volley/ns-infos.edn
and parses only the files that changed. (volley#2)--no-randomize, or
:kaocha.plugin.randomize/randomize? false in tests.edn, brings the
name order back. (volley#4)--runtime jvm classpath cache key also covers the deps.edn of
every :local/root dependency, including those in :default-deps, and
the user-level deps.edn. (volley#10)defplugin with a keyword id counts, and
a -register method that dispatches on a var, as Kaocha's own plugins
do, is taken to define the plugin. (volley#7)post-run hooks. A namespace whose first var
had not started runs no :once fixtures. (volley#8, volley#22)wrap-run hooks wrap each var's run as well as each namespace's, as in
Kaocha. A suite-level wrap-run is called once per worker process
rather than once per run. (volley#9)wrap-run hook that throws is reported by name, and the vars it kept
from running are listed as not run. (volley#18)tests.edn runs on the defaults with no warning.
volley warns only when --config-file names a missing file other than
tests.edn.--reporter documentation lists a namespace's tests in the order they
ran, pending ones first, so a random order shows. It used to sort them
by name.▲ FAIL (or ▲ ERROR) line
with the failure's file and line marks where it happened.~n, and becomes exact as each namespace
loads. With --preload it is exact from the first test.t filter now runs matching tests that a macro defines;
the worker applies the pattern after loading the namespace. Failures of
a namespace the filter skips stay counted. (volley#5):once fixtures, as in
Kaocha. A ^:kaocha/pending namespace still runs none. (volley#6)t filter skips some vars of a namespace, their earlier
failures stay counted instead of disappearing. (volley#13)tests.edn updates the randomize setting and
the seed for later runs. (volley#14)tests.edn decides (workers, fail-fast,
output capture, isolation, bindings, the JUnit report and hooks) comes
from the reloaded config. The reporter and colour keep their startup
values. (volley#16)tests.edn with post-summary hooks puts its
test paths on the parent's classpath, so a hook in a newly added test
path resolves. (volley#19):dev/test keeps its namespace when volley
computes the --runtime jvm classpath. It used to become -A:test,
and :a/test and :b/test shared one cached classpath.:hook keyword in its data is no
longer reported as a failed hook.:kaocha.plugin.randomize/seed in tests.edn that is not an integer
stops the run (exit 250). It used to turn random order off without a
word..volley/ in one move, so a run killed
while writing the cached classpath can no longer leave it cut short.clojure.test suites. No ClojureScript, no coverage.System/exit in a test, fail-fast inside a test, load order, random
order, the --print-* maps). See "Deliberate divergences from Kaocha"
in doc/design.md.First alpha. volley is a clojure.test runner that reads Kaocha's
tests.edn and command-line flags.
--workers N overrides it, and --isolate starts a fresh
worker for each namespace.--runtime bb|jvm chooses the other one. From a babashka parent,
--aliases picks the deps.edn aliases for the JVM classpath, which is
cached in .volley/. A JVM parent forwards its own JVM options to its
workers. A worker loads no source-parsing code, so a JVM worker is
ready in about 0.4s. Workers frame each protocol event with newlines and
a per-worker nonce, so a child process a test starts can write to the
inherited stdout without hiding an event or passing for one.defspec properties show the
seed and the shrunk input. The run ends with a summary, the slowest
tests, and a command that reruns the failures (keeping
--config-file). Output printed outside capture is shown in full, and
load-time output that several workers print appears once. Output costs
time linear in the number of namespaces.--watch). volley polls the test and source paths, works out
which test namespaces depend on a changed file from their ns forms,
and reruns only those in fresh workers. Keys rerun everything, rerun
failures, or filter by namespace or test name. Each run ends with the
counts line of the summary.tests.edn with #kaocha/v1 and the reader tags
#profile, #env, #envf, #hostname and #user; suite ids;
--focus, --skip, --focus-meta, --skip-meta, --fail-fast,
--config-file, --[no-]color, --[no-]capture-output, --reporter,
--print-config, --print-test-plan, --print-result; Kaocha's exit
codes, including 248 for a plugin that cannot be loaded and 252 for a
config that fails Kaocha's spec; :kaocha/bindings; ^:kaocha/pending
and :kaocha.testable/skip. Values volley cannot use, such as
:preload? "yes" or a :kaocha/bindings vector, stop the run with
exit 250.--print-config, --print-test-plan and --print-result print
Kaocha's shapes, with volley's own settings under :volley/* keys.post-summary in the
parent), and kaocha.plugin/junit-xml built in. A hook that fails is
named in the report, and a post-run hook that fails in several
workers counts once.--reporter my.app/report) runs in the workers and gets every
clojure.test event. A reporter that does not resolve exits 254.:volley/worker-setup in tests.edn: functions each worker calls before
it loads its first test namespace, for per-process isolation.--preload, which makes each worker load every test namespace first, as
Kaocha does, setting up each suite before loading its namespaces.^:synchronized and ^:volley/serial namespaces, which run alone after
the parallel batch..volley/timings.edn so the next run starts with the
slowest namespaces.bin/volley, a binstub for babashka projects.bb test:diff) that runs Kaocha 1.91.1392 and
volley on the fixture projects in dev-resources/projects and compares
executed vars, outcomes, assertion counts, test and pending totals, and
exit codes.clojure.test suites. No ClojureScript, no coverage.--randomize and --seed are accepted with a warning; volley does not
randomize test order.System/exit in a test, fail-fast inside a test, load order, the
--print-* maps). See "Deliberate divergences from Kaocha" in
doc/design.md.Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |