starting new job...
→ running command: dir='/etc/byggsteg/job-clone//veritas/trunk'
branch='trunk'
if ! command -v git >/dev/null 2>&1; then
echo 'byggsteg: git is not on this deployment PATH, so the clone cannot be updated' >&2
exit 1
fi
if ! cd "$dir"; then
echo "byggsteg: cannot enter the clone $dir" >&2
exit 1
fi
root=$(git rev-parse --show-toplevel 2>/dev/null)
if [ "$root" != "$(pwd -P)" ]; then
echo "byggsteg: $dir is not a git checkout; remove it and the next run clones it again" >&2
exit 1
fi
if ! origin=$(git remote get-url origin 2>/dev/null); then
echo "byggsteg: $dir has no origin remote to fetch $branch from" >&2
exit 1
fi
before=$(git rev-parse --short HEAD 2>/dev/null) || before=none
attempt=1
while :; do
if GIT_TERMINAL_PROMPT=0 git fetch --quiet origin "+refs/heads/$branch:refs/remotes/origin/$branch"; then
break
fi
if [ "$attempt" -ge 3 ]; then
echo "byggsteg: could not fetch $branch from $origin after 3 attempts; is the branch still there, and is the remote reachable?" >&2
exit 1
fi
echo "byggsteg: fetching $branch from $origin failed; retrying in $((attempt * 2))s" >&2
sleep $((attempt * 2))
attempt=$((attempt + 1))
done
if ! git checkout --quiet --force -B "$branch" FETCH_HEAD; then
echo "byggsteg: fetched $branch from $origin but could not check it out" >&2
exit 1
fi
after=$(git rev-parse --short HEAD)
if [ "$before" = "$after" ]; then
echo "byggsteg: $branch was already at $after"
else
echo "byggsteg: $branch moved from $before to $after"
fi
byggsteg: trunk moved from c3c283d to 1389b84
→ running command: cd /etc/byggsteg/job-clone/veritas/trunk && uname -a
Linux wolk-jjba 7.2.11-gnu #1 SMP PREEMPT_DYNAMIC 1 x86_64 GNU/Linux
→ running command: cd /etc/byggsteg/job-clone/veritas/trunk && git log --name-status HEAD^..HEAD
commit 1389b8492be39de3d90fc62c0f6395ff181df497
Author: Josep Bigorra <jjbigorra@gmail.com>
Date: Wed Nov 4 23:10:29 2026 +0100
docs: Update visual identity
M README.org
A logo.svg
→ running command: cd /etc/byggsteg/job-clone/veritas/trunk && maak test
removed 'reports/lcov/veritas.info'
removed 'reports/lcov/coverage-summary.json'
removed 'reports/lcov/cobertura.xml'
removed 'reports/lcov/jacoco.xml'
removed directory 'reports/lcov'
--------------------------------------------------------------
Maak 0.14.0: the infinitely extensible command runner
Loading tasks from Maak file: /etc/byggsteg/job-clone/veritas/trunk/maak.scm
Executing Maak tasks: test
--------------------------------------------------------------
=> Running Maak task: test
Run the test suite with coverage of the sources.
Executing: rm -rfv reports/lcov
removed 'reports/html/index.html'
removed directory 'reports/html'
scanning directories for unit tests...
scanning present working directory for unit tests...
shuffled the files with seed 672163891 (replay with VERITAS_SEED=672163891)
found unit tests: (counts.scm generator/simple.scm introduction.scm coverage.scm lists.scm cli.scm jobs.scm simple.scm batteries.scm partition.scm references.scm generator/bounds.scm retries.scm determinism.scm snapshot.scm container.scm flexible-bodies.scm table.scm mock.scm matchers.scm numeric/a/num.scm shuffle.scm nesting.scm bdd.scm assertions.scm timeout.scm impact.scm traces.scm rerun.scm)
running unit tests from file: counts.scm, entrypoint: spec
ℹ️ info - Code coverage: 13.8% of 3070 lines (425 covered) in 11 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] Global counts
[🧪 test] a test that passed on a retry is counted as flaky
✅ got: 1
✅ got: 0
✅ got: flaky
[🧪 test] the summary reads as one line
✅ got: 1 file, 2 suites, 3 tests and 4 assertions
[🧪 test] counts survive a trip through a file
✅ got: ((files . 1) (suites . 2) (tests . 3) (assertions . 4) (flaky . 0))
[🧪 test] a benchmark and a task that raised are counted as nothing
✅ got: ((files . 0) (suites . 0) (tests . 0) (assertions . 0) (flaky . 0))
✅ got: ((files . 0) (suites . 0) (tests . 0) (assertions . 0) (flaky . 0))
[🧪 test] the run of a single file counts that file
✅ got: 1
[🧪 test] counts add up
✅ got: ((files . 0) (suites . 4) (tests . 6) (assertions . 8) (flaky . 0))
[🧪 test] a nested tree counts its suites, its tests and its assertions
✅ got: 2
✅ got: 3
✅ got: 4
✅ got: 0
ℹ️ info - ran 1 tasks in: 1 seconds, -86379 microseconds
ℹ️ info - counted 1 file, 1 suite, 7 tests and 13 assertions
running unit tests from file: generator/simple.scm, entrypoint: spec
ℹ️ info - shuffled with seed 672163891 (replay with VERITAS_SEED=672163891)
ℹ️ info - Code coverage: 15.1% of 3072 lines (464 covered) in 11 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] Basic Suite
[🧪 test] Basic Generation
(i @ b 7 S ' f a k K x b ;)
(Z $ M W * ] ] O j * h C W % C f 0 u " ? S / ` I / e - e = G | C B j ' . k * : U)
✅ success running without errors
()
(19 26 7 26 19)
✅ success running without errors
16
21
✅ success running without errors
")Gd!L9)w2G9m8| {_-Z.!jeB:[Z[<sx}IqBp:#@^~v +Re{|BJAz>UBcq}\\10bHT"
"%[z{s0o4%p"
✅ success running without errors
ℹ️ info - ran 1 tasks in: 0 seconds, 475922 microseconds
ℹ️ info - counted 1 file, 1 suite, 1 test and 4 assertions
running unit tests from file: introduction.scm, entrypoint: spec
ℹ️ info - shuffled with seed 672163891 (replay with VERITAS_SEED=672163891)
ℹ️ info - Code coverage: 16.7% of 3075 lines (512 covered) in 11 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] Error and Exception Handling
[🧪 test] Summing a list with non-numeric elements;;; note: source file ./src/veritas/runner.scm
;;; newer than compiled /gnu/store/0w0f5c8hqiz5a524gzhhs6gakyqsjbd3-profile/lib/guile/3.0/site-ccache/veritas/runner.go
;;; note: source file ./src/veritas/runner.scm
;;; newer than compiled /run/current-system/profile/lib/guile/3.0/site-ccache/veritas/runner.go
;;; found fresh local cache at /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/src/veritas/runner.scm.go
;;; note: source file ./src/veritas/prelude.scm
;;; newer than compiled /gnu/store/0w0f5c8hqiz5a524gzhhs6gakyqsjbd3-profile/lib/guile/3.0/site-ccache/veritas/prelude.go
;;; note: source file ./src/veritas/prelude.scm
;;; newer than compiled /run/current-system/profile/lib/guile/3.0/site-ccache/veritas/prelude.go
;;; found fresh local cache at /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/src/veritas/prelude.scm.go
;;; note: source file ./src/veritas/model.scm
;;; newer than compiled /gnu/store/0w0f5c8hqiz5a524gzhhs6gakyqsjbd3-profile/lib/guile/3.0/site-ccache/veritas/model.go
;;; note: source file ./src/veritas/model.scm
;;; newer than compiled /run/current-system/profile/lib/guile/3.0/site-ccache/veritas/model.go
;;; found fresh local cache at /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/src/veritas/model.scm.go
;;; note: source file ./src/veritas/reporter.scm
;;; newer than compiled /gnu/store/0w0f5c8hqiz5a524gzhhs6gakyqsjbd3-profile/lib/guile/3.0/site-ccache/veritas/reporter.go
;;; note: source file ./src/veritas/reporter.scm
;;; newer than compiled /run/current-system/profile/lib/guile/3.0/site-ccache/veritas/reporter.go
;;; found fresh local cache at /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/src/veritas/reporter.scm.go
;;; note: source file ./src/veritas/veritas.scm
;;; newer than compiled /gnu/store/0w0f5c8hqiz5a524gzhhs6gakyqsjbd3-profile/lib/guile/3.0/site-ccache/veritas/veritas.go
;;; note: source file ./src/veritas/veritas.scm
;;; newer than compiled /run/current-system/profile/lib/guile/3.0/site-ccache/veritas/veritas.go
;;; found fresh local cache at /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/src/veritas/veritas.scm.go
;;; note: source file ./src/veritas/assert.scm
;;; newer than compiled /gnu/store/0w0f5c8hqiz5a524gzhhs6gakyqsjbd3-profile/lib/guile/3.0/site-ccache/veritas/assert.go
;;; note: source file ./src/veritas/assert.scm
;;; newer than compiled /run/current-system/profile/lib/guile/3.0/site-ccache/veritas/assert.go
;;; found fresh local cache at /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/src/veritas/assert.scm.go
;;; note: source file ./src/veritas/shuffle.scm
;;; newer than compiled /gnu/store/0w0f5c8hqiz5a524gzhhs6gakyqsjbd3-profile/lib/guile/3.0/site-ccache/veritas/shuffle.go
;;; note: source file ./src/veritas/shuffle.scm
;;; newer than compiled /run/current-system/profile/lib/guile/3.0/site-ccache/veritas/shuffle.go
;;; found fresh local cache at /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/src/veritas/shuffle.scm.go
;;; note: source file ./src/veritas/generator.scm
;;; newer than compiled /gnu/store/0w0f5c8hqiz5a524gzhhs6gakyqsjbd3-profile/lib/guile/3.0/site-ccache/veritas/generator.go
;;; note: source file ./src/veritas/generator.scm
;;; newer than compiled /run/current-system/profile/lib/guile/3.0/site-ccache/veritas/generator.go
;;; found fresh local cache at /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/src/veritas/generator.scm.go
;;; note: source file ./src/veritas/coverage.scm
;;; newer than compiled /gnu/store/0w0f5c8hqiz5a524gzhhs6gakyqsjbd3-profile/lib/guile/3.0/site-ccache/veritas/coverage.go
;;; found fresh local cache at /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/src/veritas/coverage.scm.go
[⚙️ assert] Should fail when list contains non-numbers
✅ success catching error: wrong-type-arg: (+ Wrong type argument in position ~A: ~S (2 a) (a))
[🧪 test] Valid summation should not throw an error
[⚙️ assert] Should not fail with a valid list of numbers
✅ success running without errors
+----------------------------------------------+
[📑 suite] Getting Started with Assertions
[🧪 test] Basic String and Predicate Tests
[⚙️ assert] Greeting should be personalized
✅ got: Hello, Veritas!
[⚙️ assert] 10 should be greater than 5
✅ got: #t
[⚙️ assert] String comparison should be case-sensitive
✅ got: #f
[⚙️ assert] Greeting should contain the provided name
✅ got: #t
+----------------------------------------------+
[📑 suite] Testing Logic and List Operations
[🧪 test] Number Classification Logic
[⚙️ assert] 99 should be classified as positive
✅ got: positive
[⚙️ assert] -1 should be classified as negative
✅ got: negative
[⚙️ assert] 0 should be classified as zero
✅ got: zero
[🧪 test] List Summation
[⚙️ assert] Sum of elements 1 through 5 should be 15
✅ got: 15
[⚙️ assert] Sum of an empty list should be 0
✅ got: 0
+----------------------------------------------+
[📑 suite] Advanced Veritas Features
ℹ️ info - TRANSIRE RUBICONEM
ℹ️ info - ALEA IACTA EST
[🧪 test] Addition ValidationInitializing...
✅ got: 4
[🧪 test] A test with a complex computation block
ℹ️ info - before test runs
ℹ️ info - after test runs
[⚙️ assert] Complex computation inside an assertion
✅ got: 144
+----------------------------------------------+
[📑 suite] Lifecycle hooks bracket their assertions
[🧪 test] a #:before hook prepares state its own cases can see
[⚙️ assert] #:before has already run
✅ got: (suite-before-all test-before)
[🧪 test] the #:after of the test before it already ran
✅ got: (suite-before-all test-before test-after)
+----------------------------------------------+
[🚄 benchmark]
Computation of the factorial of 10000
[🏃 run #0]
% cumulative self
time seconds seconds procedure
100.00 0.03 0.03 ice-9/popen.scm:182:0:reap-pipes
0.00 59.04 0.00 veritas/unit/introduction.scm:186:0:factorial
0.00 0.03 0.00 %after-gc-thunk
0.00 0.03 0.00 veritas/veritas.scm:992:93
0.00 0.03 0.00 anon #x3ef1d850
---
Sample count: 2
Total time: 0.034808608 seconds (0.018179011 seconds in GC)
[🏃 run #1]
% cumulative self
time seconds seconds procedure
100.00 0.08 0.08 ice-9/popen.scm:182:0:reap-pipes
0.00 218.20 0.00 veritas/unit/introduction.scm:186:0:factorial
0.00 0.08 0.00 %after-gc-thunk
0.00 0.08 0.00 veritas/veritas.scm:992:93
0.00 0.08 0.00 anon #x3ef1d850
---
Sample count: 4
Total time: 0.082346254 seconds (0.068135155 seconds in GC)
ℹ️ info - ran 6 tasks in: 1 seconds, 409150 microseconds
ℹ️ info - counted 1 file, 5 suites, 9 tests and 15 assertions
running unit tests from file: coverage.scm, entrypoint: spec
ℹ️ info - shuffled with seed 672163891 (replay with VERITAS_SEED=672163891)
ℹ️ info - Code coverage: 40.8% of 3075 lines (1254 covered) in 11 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] Coverage reports
[🧪 test] an LCOV file survives a round trip
✅ got: TN:
SF:/project/a.scm
DA:1,2
DA:2,0
LH:1
LF:2
end_of_record
SF:/project/b.scm
DA:5,1
LH:1
LF:1
end_of_record
✅ got: 2
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: 0
[🧪 test] reports merge by taking the highest count
✅ got: 5
✅ got: 0
✅ got: 1
✅ got: 2
✅ got: 1
✅ got: 2
[🧪 test] the Cobertura document describes packages, classes and lines
✅ got: 0.6667
✅ got: 2
✅ got: 3
✅ got: 0.0
✅ got: #t
✅ got: src
✅ got: src/a.scm
✅ got: 3
✅ got: 2
✅ got: 0
[🧪 test] the JSON summary holds the totals and the uncovered lines
✅ got: #t
✅ got: 3
✅ got: 2
✅ got: 66.67
✅ got: /project/a.scm
✅ got: #(2)
[🧪 test] the JaCoCo document carries per-line and per-class counters
✅ got: veritas
✅ got: src
✅ got: src/a
✅ got: a.scm
✅ got: 3
✅ got: 0
✅ got: 1
✅ got: 1
✅ got: 0
✅ got: 1
✅ got: 2
[🧪 test] the HTML report is one page with every file in it
✅ got: /tmp/veritas-coverage-zB7MTq/html/index.html
✅ got: #t
✅ got: 3
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #f
[🧪 test] the reports of one run add up
✅ got: 2
✅ got: 1
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: 3
+----------------------------------------------+
[📑 suite] Coverage measurement
[🧪 test] lines that ran are counted, lines that did not are zero
✅ got: 1
✅ got: /tmp/veritas-coverage-qda7EN/veritas-coverage-fixture-22371.scm
✅ got: #t
✅ got: 0
✅ got: 0
✅ got: #t
✅ got: #t
✅ got: #t
[🧪 test] collecting coverage leaves the VM engine as it found it
✅ got: debug
✅ got: debug
[🧪 test] an empty collection is an empty report, not a covered one
✅ got: 0
✅ got: 0.0
+----------------------------------------------+
[📑 suite] Coverage filtering
[🧪 test] the include filter is what keeps dependencies out
✅ got: #t
✅ got: #f
✅ got: #f
✅ got: #t
✅ got: #t
✅ got: #t
[🧪 test] an explicit refusal beats a file that asks for coverage
✅ got: #t
✅ got: #t
✅ got: #f
✅ got: #f
✅ got: #t
✅ got: #t
✅ got: #f
✅ got: #f
[🧪 test] a recorded path becomes an absolute one
✅ got: /tmp/veritas/x.scm
✅ got: /tmp/veritas/sub/x.scm
✅ got: /tmp/veritas/x.scm
✅ got: /tmp/veritas-coverage-JtHbQp/resolved.scm
+----------------------------------------------+
[📑 suite] Coverage from a run
[🧪 test] veritas-run writes the coverage of what its tests exercise
ℹ️ info - Code coverage: 42.9% of 7 lines (3 covered) in 1 file
ℹ️ info - Coverage reports written to /tmp/veritas-coverage-sEleY0/lcov/veritas.info, /tmp/veritas-coverage-sEleY0/html/index.html, /tmp/veritas-coverage-sEleY0/lcov/coverage-summary.json, /tmp/veritas-coverage-sEleY0/lcov/cobertura.xml, /tmp/veritas-coverage-sEleY0/lcov/jacoco.xml
[🧪 test] calls the fixture
✅ got: pos
ℹ️ info - ran 1 tasks in: 26 seconds, 128174 microseconds
ℹ️ info - counted 1 file, 0 suites, 1 test and 1 assertion
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
ℹ️ info - ran 4 tasks in: 107 seconds, 318209 microseconds
ℹ️ info - counted 1 file, 4 suites, 14 tests and 14 assertions
running unit tests from file: lists.scm, entrypoint: spec
ℹ️ info - shuffled with seed 672163891 (replay with VERITAS_SEED=672163891)
ℹ️ info - Code coverage: 40.8% of 3075 lines (1254 covered) in 11 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] List Manipulation Tests
[🧪 test] Get First Element
[⚙️ assert] First element of a number list
✅ got: 1
[⚙️ assert] First element of a symbol list
✅ got: a
[⚙️ assert] First element of an empty list should be #f
✅ got: #f
[🧪 test] List Length
[⚙️ assert] Length of empty list
✅ got: 0
[⚙️ assert] Length of list with 3 elements
✅ got: 3
[⚙️ assert] Length of list with one element
✅ got: 1
[🧪 test] List Concatenation
[⚙️ assert] Concatenate two non-empty lists
✅ got: (1 2 3 4 5)
[⚙️ assert] Concatenate empty list with non-empty
✅ got: (a b)
[⚙️ assert] Concatenate non-empty list with empty
✅ got: (x y)
[⚙️ assert] Concatenate two empty lists
✅ got: ()
ℹ️ info - ran 1 tasks in: 1 seconds, -211429 microseconds
ℹ️ info - counted 1 file, 1 suite, 3 tests and 10 assertions
running unit tests from file: cli.scm, entrypoint: spec
ℹ️ info - shuffled with seed 672163891 (replay with VERITAS_SEED=672163891)
ℹ️ info - Code coverage: 39.0% of 3296 lines (1286 covered) in 12 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] CLI metadata
[🧪 test] version and man page name are present
✅ got: 0.10.0
✅ got: veritas(1)
[🧪 test] help text documents every flag
[⚙️ assert] help mentions --scan-dir
✅ got: --scan-dir
[⚙️ assert] help mentions --test-top-dir
✅ got: --test-top-dir
[⚙️ assert] help mentions --test-type
✅ got: --test-type
[⚙️ assert] help mentions --entrypoint
✅ got: --entrypoint
[⚙️ assert] help mentions --test-module
✅ got: --test-module
[⚙️ assert] help mentions --reporter
✅ got: --reporter
[⚙️ assert] help mentions --only-test
✅ got: --only-test
[⚙️ assert] help mentions --only-suite
✅ got: --only-suite
[⚙️ assert] help mentions --only-tag
✅ got: --only-tag
[⚙️ assert] help mentions --only-failed
✅ got: --only-failed
[⚙️ assert] help mentions --no-only-failed
✅ got: --no-only-failed
[⚙️ assert] help mentions --seed
✅ got: --seed
[⚙️ assert] help mentions --partition
✅ got: --partition
[⚙️ assert] help mentions --jobs
✅ got: --jobs
[⚙️ assert] help mentions --coverage
✅ got: --coverage
[⚙️ assert] help mentions --no-coverage
✅ got: --no-coverage
[⚙️ assert] help mentions --coverage-dir
✅ got: --coverage-dir
[⚙️ assert] help mentions --coverage-html-dir
✅ got: --coverage-html-dir
[⚙️ assert] help mentions --coverage-include
✅ got: --coverage-include
[⚙️ assert] help mentions --coverage-exclude
✅ got: --coverage-exclude
[⚙️ assert] help mentions --shuffle
✅ got: --shuffle
[⚙️ assert] help mentions --no-shuffle
✅ got: --no-shuffle
[⚙️ assert] help mentions --benchmarks
✅ got: --benchmarks
[⚙️ assert] help mentions --no-benchmarks
✅ got: --no-benchmarks
[⚙️ assert] help mentions --help
✅ got: --help
[⚙️ assert] help mentions --version
✅ got: --version
[🧪 test] option grammar declares the expected options
[⚙️ assert] scan-dir is a known option
✅ got: #t
[⚙️ assert] test-top-dir is a known option
✅ got: #t
[⚙️ assert] test-type is a known option
✅ got: #t
[⚙️ assert] entrypoint is a known option
✅ got: #t
[⚙️ assert] test-module is a known option
✅ got: #t
[⚙️ assert] reporter is a known option
✅ got: #t
[⚙️ assert] only-test is a known option
✅ got: #t
[⚙️ assert] only-suite is a known option
✅ got: #t
[⚙️ assert] only-tag is a known option
✅ got: #t
[⚙️ assert] only-failed is a known option
✅ got: #t
[⚙️ assert] no-only-failed is a known option
✅ got: #t
[⚙️ assert] seed is a known option
✅ got: #t
[⚙️ assert] partition is a known option
✅ got: #t
[⚙️ assert] jobs is a known option
✅ got: #t
[⚙️ assert] coverage is a known option
✅ got: #t
[⚙️ assert] no-coverage is a known option
✅ got: #t
[⚙️ assert] coverage-dir is a known option
✅ got: #t
[⚙️ assert] coverage-html-dir is a known option
✅ got: #t
[⚙️ assert] coverage-include is a known option
✅ got: #t
[⚙️ assert] coverage-exclude is a known option
✅ got: #t
[⚙️ assert] shuffle is a known option
✅ got: #t
[⚙️ assert] no-shuffle is a known option
✅ got: #t
[⚙️ assert] benchmarks is a known option
✅ got: #t
[⚙️ assert] no-benchmarks is a known option
✅ got: #t
[⚙️ assert] help is a known option
✅ got: #t
[⚙️ assert] version is a known option
✅ got: #t
+----------------------------------------------+
[📑 suite] CLI driver
[🧪 test] --version exits successfully
✅ got: 0
[🧪 test] --help exits successfully
✅ got: 0
ℹ️ info - ran 2 tasks in: 2 seconds, 201345 microseconds
ℹ️ info - counted 1 file, 2 suites, 5 tests and 56 assertions
running unit tests from file: jobs.scm, entrypoint: spec
ℹ️ info - Code coverage: 48.8% of 3309 lines (1615 covered) in 15 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] worker processes
[🧪 test] a job count is a whole number of processes
✅ got: 4
✅ got: 1
✅ got: #f
✅ got: #t
✅ got: #t
✅ got: #t
[🧪 test] the records of several runs merge into one
✅ got: (a b)
✅ got: ()
✅ got: #f
✅ got: (a)
[🧪 test] a record can be written where a worker puts it
✅ got: (the failing one)
✅ got: (the failing one)
✅ got: ()
✅ got: #t
[🧪 test] JUnit data merges by summing and concatenating
✅ got: 5
✅ got: 1
✅ got: 0
✅ got: 0
✅ got: <testsuite name="s2"/>
<testsuite name="s3"/>
[🧪 test] JUnit data written by a worker can be read back and merged
✅ got: 1
✅ got: #f
✅ got: #f
[🧪 test] a JUnit document is written from merged data
✅ got: tests="5" failures="1" errors="0" skipped="0" time="0.5"
✅ got: <testsuite name="s2"/>
<testsuite name="s3"/>
[🧪 test] a file that passes is reported as passed
running probe tests from file: pass.scm, entrypoint: spec
✅ got: #t
[🧪 test] a file that exits is reported as failed, not as the end of the run
running probe tests from file: exit-one.scm, entrypoint: spec
the file exit-one.scm failed
✅ got: #f
[🧪 test] a file that raises is reported as failed
running probe tests from file: raise.scm, entrypoint: spec
the file raise.scm raised misc-error: (#f "the fixture raised" () #f)
✅ got: #f
[🧪 test] the files after a failing one still run
running probe tests from file: pass.scm, entrypoint: spec
running probe tests from file: exit-one.scm, entrypoint: spec
the file exit-one.scm failed
running probe tests from file: pass.scm, entrypoint: spec
✅ got: (exit-one.scm)
✅ got: 2
+----------------------------------------------+
[📑 suite] JUnit reports and CI annotations
[🧪 test] the step summary gets a row per file and one header
✅ got: | test/a.scm | 2 | 3 | 4 |
✅ got: | test/b.scm | 0 | 0 | 0 |
✅ got: 6
[🧪 test] GitHub annotations name the failing test and its file
✅ got: ::error file=test/cart.scm,title=cart > pays%2C twice::totals differ
[🧪 test] the JUnit document places a test in its file and times it
✅ got: <testsuite name="test/cart.scm" tests="2" failures="1" errors="0" skipped="0" time="0.750">
<testcase name="pays" classname="test/cart.scm" file="test/cart.scm" suite="checkout" time="0.250"/>
<testcase name="refuses <&>" classname="test/cart.scm" file="test/cart.scm" suite="checkout" time="0.500">
<failure message="refused">
<no>
</failure>
</testcase>
</testsuite>
<testsuite name="veritas" tests="1" failures="0" errors="1" skipped="0" time="0.000">
<testcase name="veritas" classname="veritas" time="0.000">
<error message="boom"/>
</testcase>
</testsuite>
✅ got: 3
✅ got: 1
✅ got: 1
✅ got: <testsuites name="veritas" tests="3" failures="1" errors="1" skipped="0" time="1">
✅ got: <testsuite name="test/cart.scm" tests="2" failures="1" errors="0" skipped="0" time="0.750">
<testcase name="pays" classname="test/cart.scm" file="test/cart.scm" suite="checkout" time="0.250"/>
<testcase name="refuses <&>" classname="test/cart.scm" file="test/cart.scm" suite="checkout" time="0.500">
<failure message="refused">
<no>
</failure>
</testcase>
</testsuite>
<testsuite name="veritas" tests="1" failures="0" errors="1" skipped="0" time="0.000">
<testcase name="veritas" classname="veritas" time="0.000">
<error message="boom"/>
</testcase>
</testsuite>
ℹ️ info - ran 2 tasks in: 81 seconds, 46274 microseconds
ℹ️ info - counted 1 file, 2 suites, 13 tests and 13 assertions
running unit tests from file: simple.scm, entrypoint: spec
ℹ️ info - shuffled with seed 672163891 (replay with VERITAS_SEED=672163891)
ℹ️ info - Code coverage: 49.4% of 3309 lines (1636 covered) in 15 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] Complex Data Structure Tests
[🧪 test] Association List Lookups
[⚙️ assert] Lookup 'name' in alist
✅ got: Alice
[⚙️ assert] Lookup 'age' in alist
✅ got: 30
[⚙️ assert] Lookup non-existent key should be #f
✅ got: #f
[🧪 test] Vector Operations
[⚙️ assert] Vector length
✅ got: 3
[⚙️ assert] Vector ref at index 1
✅ got: 2
[⚙️ assert] Vector ref at index 0
✅ got: 1
+----------------------------------------------+
[📑 suite] Predicate Tests
[🧪 test] List Predicates
[⚙️ assert] Empty list should be null
✅ got: #t
[⚙️ assert] Non-empty list should not be null
✅ got: #f
[⚙️ assert] Pair should be a pair
✅ got: #t
[⚙️ assert] Empty list should not be a pair
✅ got: #f
+----------------------------------------------+
[📑 suite] Error Handling Tests
[🧪 test] Division by Zero Error
[⚙️ assert] Should signal error on division by zero
✅ success catching error: misc-error: (#f Division by zero () #f)
[🧪 test] No Error on Valid Division
[⚙️ assert] Should not signal error on valid division
✅ success running without errors
[⚙️ assert] Valid division result
✅ got: 5
+----------------------------------------------+
[📑 suite] Basic Suite
[🧪 test] Do some assertions
✅ got: 1
✅ got: 1
✅ got: 1
[🧪 test] Check that function calls work
✅ got: 42
[🧪 test] some test without suite
✅ got: 1
+----------------------------------------------+
[📑 suite] str
[🧪 test] String Operation Tests
✅ got: hello world
✅ got: #t
✅ got: #f
ℹ️ info - ran 6 tasks in: 1 seconds, 247167 microseconds
ℹ️ info - counted 1 file, 5 suites, 9 tests and 21 assertions
running unit tests from file: batteries.scm, entrypoint: spec
ℹ️ info - Code coverage: 46.2% of 3540 lines (1636 covered) in 20 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] batteries included
[🧪 test] one import reaches the assertion library
✅ got: 2
✅ got: (1 2)
[🧪 test] one import reaches the runner
✅ got: #t
✅ got: #t
[🧪 test] one import reaches the doubles
✅ got: #t
✅ got: #t
[🧪 test] one import reaches the table helpers
✅ got: #t
✅ got: #t
✅ got: #t
[🧪 test] one import reaches the generators
✅ got: #t
✅ got: #t
[🧪 test] one import reaches the BDD steps
✅ got: #t
✅ got: #t
[🧪 test] one import reaches the snapshot helpers
✅ got: #t
✅ got: #t
[🧪 test] one import reaches the trace recorder
✅ got: #t
✅ got: #t
✅ got: #t
[🧪 test] one import reaches the retry count
✅ got: #t
ℹ️ info - ran 1 tasks in: 1 seconds, 227028 microseconds
ℹ️ info - counted 1 file, 1 suite, 9 tests and 19 assertions
running unit tests from file: partition.scm, entrypoint: spec
ℹ️ info - Code coverage: 47.1% of 3540 lines (1666 covered) in 20 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] partitioning a run
[🧪 test] a partition string is parsed, and refused when impossible
✅ got: (2 . 3)
✅ got: #f
✅ got: #f
✅ got: #f
✅ got: #f
✅ got: #f
[🧪 test] the partitions of a list are disjoint and complete
✅ got: (f0 f1 f2 f3 f4 f5 f6)
✅ got: ()
✅ got: ()
✅ got: ()
[🧪 test] the split is round-robin over the sorted list
✅ got: (a c)
✅ got: (b d)
✅ got: ()
[🧪 test] one partition of one is the whole list
✅ got: (a b)
ℹ️ info - ran 1 tasks in: 1 seconds, -274979 microseconds
ℹ️ info - counted 1 file, 1 suite, 4 tests and 4 assertions
running unit tests from file: references.scm, entrypoint: spec
ℹ️ info - Code coverage: 47.8% of 3545 lines (1696 covered) in 20 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] source references
[🧪 test] a test result names the file the test was declared in
✅ got: references.scm
[🧪 test] a suite passes its own declaration site down to its tests
✅ got: references.scm
[🧪 test] the JUnit document writes the file of a test
✅ got: file="
✅ got: references.scm
[🧪 test] a location string is reported for the running test
✅ got: references.scm
ℹ️ info - ran 1 tasks in: 1 seconds, -219357 microseconds
ℹ️ info - counted 1 file, 1 suite, 4 tests and 4 assertions
running unit tests from file: generator/bounds.scm, entrypoint: spec
ℹ️ info - shuffled with seed 672163891 (replay with VERITAS_SEED=672163891)
ℹ️ info - Code coverage: 48.4% of 3545 lines (1715 covered) in 20 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] integer generators
[🧪 test] generate-integer respects its bound
✅ got: #t
[🧪 test] the same seed yields the same value
✅ got: 2
[🧪 test] generate-integer default bound is respected
✅ got: #t
+----------------------------------------------+
[📑 suite] collection generators
[🧪 test] generate-string respects min and max length
✅ got: #t
[🧪 test] generate-string yields printable strings
✅ got: #t
[🧪 test] generate-list respects min and max length
✅ got: #t
[🧪 test] generate-symbol respects min and max length
✅ got: #t
+----------------------------------------------+
[📑 suite] character generators
[🧪 test] generate-char yields printable ASCII
✅ got: #t
ℹ️ info - ran 3 tasks in: 1 seconds, 354 microseconds
ℹ️ info - counted 1 file, 3 suites, 8 tests and 8 assertions
running unit tests from file: retries.scm, entrypoint: spec
ℹ️ info - Code coverage: 48.9% of 3545 lines (1733 covered) in 20 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] retries
[🧪 test] a flaky test passes on its second attempt
✅ got: 2
✅ got: #t
[🧪 test] a test that never passes is still a failure after a retry
✅ got: 2
✅ got: #f
[🧪 test] without retries a test runs once
✅ got: 1
[🧪 test] the retry count can be set for a whole run
✅ got: 3
+----------------------------------------------+
[📑 suite] flaky in the JUnit document
[🧪 test] a retried pass carries flaky=true
✅ got: 2
✅ got: flaky="true"
+----------------------------------------------+
[📑 suite] flaky in the JSON reporter
[🧪 test] the flaky line carries its own level
✅ got: "level":"flaky"
ℹ️ info - ran 3 tasks in: 1 seconds, -76780 microseconds
ℹ️ info - counted 1 file, 3 suites, 6 tests and 6 assertions
running unit tests from file: determinism.scm, entrypoint: spec
ℹ️ info - Code coverage: 49.1% of 3545 lines (1741 covered) in 20 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] determinism
[🧪 test] a suite runs its tests in declaration order, run after run
+----------------------------------------------+
[📑 suite] flat
+----------------------------------------------+
[📑 suite] flat
✅ got: 3
✅ got: (0 1 2)
[🧪 test] three runs of one suite produce the same JUnit document
✅ got: ((tests . 3) (failures . 0) (errors . 0) (skipped . 0) (xml . <testsuite name="test/veritas/unit/determinism.scm" tests="3" failures="0" errors="0" skipped="0">
<testcase name="before" classname="test/veritas/unit/determinism.scm" file="test/veritas/unit/determinism.scm" suite="outer"/>
<testcase name="inside" classname="test/veritas/unit/determinism.scm" file="test/veritas/unit/determinism.scm" suite="outer > inner"/>
<testcase name="after" classname="test/veritas/unit/determinism.scm" file="test/veritas/unit/determinism.scm" suite="outer"/>
</testsuite>
))
✅ got: ((tests . 3) (failures . 0) (errors . 0) (skipped . 0) (xml . <testsuite name="test/veritas/unit/determinism.scm" tests="3" failures="0" errors="0" skipped="0">
<testcase name="before" classname="test/veritas/unit/determinism.scm" file="test/veritas/unit/determinism.scm" suite="outer"/>
<testcase name="inside" classname="test/veritas/unit/determinism.scm" file="test/veritas/unit/determinism.scm" suite="outer > inner"/>
<testcase name="after" classname="test/veritas/unit/determinism.scm" file="test/veritas/unit/determinism.scm" suite="outer"/>
</testsuite>
))
[🧪 test] a seeded shuffle gives the same order twice
✅ got: (2 4 5 1 3)
✅ got: 5
[🧪 test] timestamps come from the clock seam
✅ got: 2026-01-01T00:00:00Z
✅ got: 2026-01-01T00:00:00Z
✅ got:
{"timestamp":"2026-01-01T00:00:00Z","level":"fail","message":"same"}
ℹ️ info - ran 1 tasks in: 2 seconds, -222277 microseconds
ℹ️ info - counted 1 file, 1 suite, 4 tests and 4 assertions
running unit tests from file: snapshot.scm, entrypoint: spec
ℹ️ info - Code coverage: 51.2% of 3545 lines (1815 covered) in 20 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] snapshots
[🧪 test] the first run writes the snapshot and passes
[assert] greeting
[pass] wrote snapshot ./tmp-snapshot-suite/greeting.snap
✅ got: #t
✅ got: #t
✅ got: (hello world)
[🧪 test] the second run matches
[assert] greeting
[pass] matches snapshot ./tmp-snapshot-suite/greeting.snap
✅ got: #t
[🧪 test] a mismatch fails and leaves the snapshot alone
[assert] greeting
[fail] snapshot mismatch for ./tmp-snapshot-suite/greeting.snap
expected: (hello world)
got: (hello there)
(rerun with VERITAS_UPDATE_SNAPSHOTS=true to accept the new value)
✅ got: #f
✅ got: (hello world)
[🧪 test] an update rewrites the snapshot and passes
[assert] greeting
[pass] updated snapshot ./tmp-snapshot-suite/greeting.snap
✅ got: #t
✅ got: (hello there)
✅ got: #fwarning: mutating the process environment while multiple threads are running;
further behavior unspecified.
warning: mutating the process environment while multiple threads are running;
further behavior unspecified.
;;; note: source file ./src/veritas/cli.scm
;;; newer than compiled /gnu/store/0w0f5c8hqiz5a524gzhhs6gakyqsjbd3-profile/lib/guile/3.0/site-ccache/veritas/cli.go
;;; note: source file ./src/veritas/cli.scm
;;; newer than compiled /run/current-system/profile/lib/guile/3.0/site-ccache/veritas/cli.go
;;; found fresh local cache at /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/src/veritas/cli.scm.go
;;; note: source file ./tmp-jobs-suite/veritas/probe/pass.scm
;;; newer than compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/tmp-jobs-suite/veritas/probe/pass.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling ./tmp-jobs-suite/veritas/probe/pass.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/tmp-jobs-suite/veritas/probe/pass.scm.go
;;; note: source file ./tmp-jobs-suite/veritas/probe/exit-one.scm
;;; newer than compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/tmp-jobs-suite/veritas/probe/exit-one.scm.go
;;; compiling ./tmp-jobs-suite/veritas/probe/exit-one.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/tmp-jobs-suite/veritas/probe/exit-one.scm.go
;;; note: source file ./tmp-jobs-suite/veritas/probe/raise.scm
;;; newer than compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/tmp-jobs-suite/veritas/probe/raise.scm.go
;;; compiling ./tmp-jobs-suite/veritas/probe/raise.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/tmp-jobs-suite/veritas/probe/raise.scm.go
;;; note: source file ./src/veritas/mock.scm
;;; newer than compiled /gnu/store/0w0f5c8hqiz5a524gzhhs6gakyqsjbd3-profile/lib/guile/3.0/site-ccache/veritas/mock.go
;;; note: source file ./src/veritas/mock.scm
;;; newer than compiled /run/current-system/profile/lib/guile/3.0/site-ccache/veritas/mock.go
;;; found fresh local cache at /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/src/veritas/mock.scm.go
;;; note: source file ./src/veritas/snapshot.scm
;;; newer than compiled /gnu/store/0w0f5c8hqiz5a524gzhhs6gakyqsjbd3-profile/lib/guile/3.0/site-ccache/veritas/snapshot.go
;;; note: source file ./src/veritas/snapshot.scm
;;; newer than compiled /run/current-system/profile/lib/guile/3.0/site-ccache/veritas/snapshot.go
;;; found fresh local cache at /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/src/veritas/snapshot.scm.go
;;; note: source file ./src/veritas/table.scm
;;; newer than compiled /gnu/store/0w0f5c8hqiz5a524gzhhs6gakyqsjbd3-profile/lib/guile/3.0/site-ccache/veritas/table.go
;;; note: source file ./src/veritas/table.scm
;;; newer than compiled /run/current-system/profile/lib/guile/3.0/site-ccache/veritas/table.go
;;; found fresh local cache at /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/src/veritas/table.scm.go
;;; note: source file ./src/veritas/bdd.scm
;;; newer than compiled /gnu/store/0w0f5c8hqiz5a524gzhhs6gakyqsjbd3-profile/lib/guile/3.0/site-ccache/veritas/bdd.go
;;; note: source file ./src/veritas/bdd.scm
;;; newer than compiled /run/current-system/profile/lib/guile/3.0/site-ccache/veritas/bdd.go
;;; found fresh local cache at /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/src/veritas/bdd.scm.go
warning: mutating the process environment while multiple threads are running;
further behavior unspecified.
warning: mutating the process environment while multiple threads are running;
further behavior unspecified.
;;; note: source file ./src/veritas/container.scm
[🧪 test] a procedure is called when the assertion runs
[assert] a call counter
[pass] wrote snapshot ./tmp-snapshot-suite/a-call-counter.snap
✅ got: #t
✅ got: 1
✅ got: 1
[🧪 test] a snapshot that cannot be read fails instead of being rewritten
[assert] damaged
[fail] could not read snapshot ./tmp-snapshot-suite/damaged.snap: read-error: (#f ./tmp-snapshot-suite/damaged.snap:1:12: unexpected end of input while searching for: ~A ()) #f)
✅ got: #f
✅ got: (unbalanced
[🧪 test] names become file names
✅ got: ./tmp-snapshot-suite/the-rendered-cart.snap
✅ got: ./tmp-snapshot-suite/spaces.snap
[🧪 test] a snapshot without a name is refused
✅ got: #t
[🧪 test] the cleanup removes a tree, nested files included
✅ got: #t
✅ got: ()
✅ got: #f
ℹ️ info - ran 1 tasks in: 1 seconds, -6109 microseconds
ℹ️ info - counted 1 file, 1 suite, 9 tests and 9 assertions
running unit tests from file: container.scm, entrypoint: spec
ℹ️ info - shuffled with seed 672163891 (replay with VERITAS_SEED=672163891)
ℹ️ info - Code coverage: 52.9% of 3714 lines (1966 covered) in 21 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] container lifecycle against a fake runtime
[🧪 test] run-command! raises on failure
✅ raised an error as expected
[🧪 test] container-exec returns output
✅ got: exec-ok
[🧪 test] container-run returns an id
✅ got: fake-container
[🧪 test] wait-for-command succeeds
✅ got: #t
[🧪 test] runtime detection honours the environment
✅ got: /tmp/veritas-fake-container-runtime.sh
✅ got: #t
[🧪 test] container-running? detects a running container
✅ got: #t
[🧪 test] assert-container-running reports success
[⚙️ assert] the probe is running
✅ container assert-running-probe is running
[🧪 test] container-build shells out to the runtime
✅ got: built
[🧪 test] wait-for-log succeeds on a matching line
✅ got: #t
[🧪 test] container-logs returns logs
✅ got: line1
ready
[🧪 test] run-command reports status and output
✅ got: (3 hi
)
[🧪 test] with-container cleans up after the thunk
✅ got: fake-container
✅ got: run -d alpine
rm -f fake-container
[🧪 test] a yielding thunk keeps its container until it is done
[⚙️ assert] the container is still running after the thunk yielded
✅ got: #t
+----------------------------------------------+
[📑 suite] container command construction and readiness
[🧪 test] wait-until raises once the timeout is exceeded
✅ raised an error as expected
[🧪 test] wait-until returns as soon as the predicate holds
✅ got: #t
[🧪 test] container-exec-status returns status and output
✅ got: 0
✅ got: exec-ok
[🧪 test] container-run forwards name, env, ports and volumes
✅ got: --name svc
✅ got: -e A=1
✅ got: -p 8080:80
✅ got: -v /tmp:/data
ℹ️ info - ran 2 tasks in: 2 seconds, -49270 microseconds
ℹ️ info - counted 1 file, 2 suites, 17 tests and 23 assertions
running unit tests from file: flexible-bodies.scm, entrypoint: spec
ℹ️ info - Code coverage: 54.9% of 3714 lines (2038 covered) in 21 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] flexible bodies
[🧪 test] a let body contributes every assertion it builds
✅ got: (#t #t #t)
✅ got: (#t #t #t)
[🧪 test] a failing assertion inside a let body is reported
✅ got: (#t #f #t)
[🧪 test] a statement after the assertions does not hide them
✅ got: (#t)
[🧪 test] when and cond bodies are read the same way
✅ got: (#t #t)
✅ got: (#t #t)
[🧪 test] a list of assertions is a list of cases
✅ got: (#t #t #t)
✅ got: (#t #t)
[🧪 test] an assertion used as an input is not run twice
✅ got: (#t #t)
[🧪 test] a body that builds no assertions is a failure
✅ got: (#f)
✅ got: (#f)
[🧪 test] a let around several tests contributes every test
✅ got: (#t #t)
✅ got: (#t #t)
[🧪 test] a let around the steps contributes every step
✅ got: (#t #t #t)
✅ got: (#t #t #t)
[🧪 test] the body waits for the run
✅ got: #f
✅ got: (#t)
✅ got: #t
[🧪 test] hooks bracket the body and are visible to it
✅ got: (#t #t)
✅ got: done
[🧪 test] a deadline still covers a let body
✅ got: (#t)
[🧪 test] the procedures behind the macros take built cases
✅ got: (#t #t #t)
✅ got: (#t)
ℹ️ info - ran 1 tasks in: 2 seconds, 365744 microseconds
ℹ️ info - counted 1 file, 1 suite, 13 tests and 23 assertions
running unit tests from file: table.scm, entrypoint: spec
ℹ️ info - shuffled with seed 672163891 (replay with VERITAS_SEED=672163891)
ℹ️ info - Code coverage: 55.0% of 3714 lines (2041 covered) in 21 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] collection emptiness
+----------------------------------------------+
[📑 suite] string ""
[🧪 test] emptiness matches
✅ got: #t
+----------------------------------------------+
[📑 suite] string "x"
[🧪 test] emptiness matches
✅ got: #f
+----------------------------------------------+
[📑 suite] integer addition
[🧪 test] -1 + 1 = 0
✅ got: 0
[🧪 test] 10 + 20 = 30
✅ got: 30
[🧪 test] 100 + -100 = 0
✅ got: 0
[🧪 test] 0 + 0 = 0
✅ got: 0
[🧪 test] 1 + 2 = 3
✅ got: 3
+----------------------------------------------+
[📑 suite] string reversal is involutive
[🧪 test] reversing "ab" twice is identity
✅ got: ab
[🧪 test] reversing "veritas" twice is identity
✅ got: veritas
[🧪 test] reversing "" twice is identity
✅ got:
[🧪 test] reversing "racecar" twice is identity
✅ got: racecar
[🧪 test] reversing "a" twice is identity
✅ got: a
+----------------------------------------------+
[📑 suite] cases->table names the columns
[🧪 test] indexes every case by the key
✅ got: ((:a :a 1) (:b :b 2))
+----------------------------------------------+
[📑 suite] grouped squares
+----------------------------------------------+
[📑 suite] n = 1
[🧪 test] square is correct
✅ got: 1
+----------------------------------------------+
[📑 suite] n = 2
[🧪 test] square is correct
✅ got: 4
+----------------------------------------------+
[📑 suite] n = 3
[🧪 test] square is correct
✅ got: 9
ℹ️ info - ran 5 tasks in: 1 seconds, 193120 microseconds
ℹ️ info - counted 1 file, 10 suites, 16 tests and 16 assertions
running unit tests from file: mock.scm, entrypoint: spec
ℹ️ info - Code coverage: 56.5% of 3714 lines (2099 covered) in 21 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] test doubles
[🧪 test] a spy records the calls and the results
✅ got: 3
✅ got: 7
✅ got: #t
✅ got: ((1 2) (3 4))
✅ got: (3 7)
✅ got: 2
✅ got: #t
✅ got: #f
[🧪 test] a stub ignores its arguments and returns a value
✅ got: 0
✅ got: 0
✅ got: (() (some arguments))
✅ got: 2
[🧪 test] assertions read the spy when they run
[assert] send was called
[fail] error, expect: #t, got: #f
✅ got: #f
[assert] send was called
[pass] got: #t
✅ got: #t
[assert] send was called with (ada thanks)
[pass] got: ((ada thanks))
✅ got: #t
[assert] send was called with (ada)
[fail] error, expect: (ada), got: ((ada thanks))
✅ got: #f
[assert] send was called 1 time(s)
[pass] got: 1
✅ got: #t
[assert] send was called 2 time(s)
[fail] error, expect: 2, got: 1
✅ got: #f
[🧪 test] a spy is an ordinary procedure
✅ got: (2 4 6)
✅ got: 3
[🧪 test] a binding is replaced and restored
✅ got: 42
✅ got: 0
✅ got: 42
✅ got: #t
[🧪 test] a call that reads the binding at run time sees the replacement
✅ got: 0
[🧪 test] a binding is restored even when the body raises
✅ got: 42
ℹ️ info - ran 1 tasks in: 1 seconds, -176132 microseconds
ℹ️ info - counted 1 file, 1 suite, 7 tests and 7 assertions
running unit tests from file: matchers.scm, entrypoint: spec
ℹ️ info - shuffled with seed 672163891 (replay with VERITAS_SEED=672163891)
ℹ️ info - Code coverage: 58.1% of 3714 lines (2157 covered) in 21 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] passing matchers
[🧪 test] ranges and membership
✅ got: 5
✅ got: 0
✅ got: green
[🧪 test] containment
✅ got: b
✅ got: world
✅ got: 2
✅ got: z
✅ got: z
[🧪 test] regular expressions
✅ got: hello
✅ got: abc
✅ got: hello
[🧪 test] raising errors
✅ raised an error as expected
✅ raised an error as expected
✅ raised an error as expected
[🧪 test] emptiness and length
✅ got: ()
✅ got:
✅ got: #()
✅ got: (1)
✅ got: a
✅ got: (1 2 3)
✅ got: hello
+----------------------------------------------+
[📑 suite] matcher edge cases and failures
[🧪 test] in-range boundaries are inclusive
[pass] got: 1
[pass] got: 10
[fail] error, expect: (1 . 10), got: 11
✅ got: #t
✅ got: #t
✅ got: #f
[🧪 test] not-contains
[pass] got: 9
[fail] error, expect: (1 2), got: 2
✅ got: #t
✅ got: #f
[🧪 test] hash tables are containers too
[pass] got: a
[fail] error, expect: #<hash-table 7f576ee65600 1/31>, got: b
✅ got: #t
✅ got: #f
[🧪 test] length and emptiness of unsized values
[fail] error, expect: 1, got: 42
[fail] error, expect: #t, got: 42
[fail] error, expect: #t, got: ()
[pass] got: #(1)
✅ got: #f
✅ got: #f
✅ got: #f
✅ got: #t
[🧪 test] matches accepts a compiled regexp
[pass] got: hello
[fail] error, expect: #<regexp 7f5770877b40>, got: hello
✅ got: #t
✅ got: #f
[🧪 test] assert-raises failure paths
[fail] did not raise an expected error
[fail] did not raise an expected error
[pass] raised an error as expected
✅ got: #f
✅ got: #f
✅ got: #t
[🧪 test] one-of
[pass] got: green
[fail] error, expect: (red green), got: blue
✅ got: #t
✅ got: #f
[🧪 test] vector containment
[pass] got: 2
[fail] error, expect: #(1 2 3), got: 9
✅ got: #t
✅ got: #f
[🧪 test] length on vectors and strings
[pass] got: #(1 2 3)
[pass] got: hello
[fail] error, expect: 4, got: hello
✅ got: #t
✅ got: #t
✅ got: #f
[🧪 test] not-matches
[pass] got: hello
[fail] error, expect: #<regexp 7f57666e4340>, got: hello
✅ got: #t
✅ got: #f
+----------------------------------------------+
[📑 suite] matcher result wiring
[🧪 test] failing matchers are reported as failures
[pass] got: 2
[fail] error, expect: (1), got: 2
✅ got: #t
✅ got: #f
[🧪 test] assert-raises fails when nothing is raised
[fail] did not raise an expected error
✅ got: #f
ℹ️ info - ran 3 tasks in: 2 seconds, 177541 microseconds
ℹ️ info - counted 1 file, 3 suites, 17 tests and 49 assertions
running unit tests from file: numeric/a/num.scm, entrypoint: spec
ℹ️ info - shuffled with seed 672163891 (replay with VERITAS_SEED=672163891)
ℹ️ info - Code coverage: 58.5% of 3714 lines (2171 covered) in 21 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] Predicate Tests
[🧪 test] Even Number Checks
[⚙️ assert] 4 should be even
✅ got: #t
[⚙️ assert] 7 should not be even
✅ got: #f
[⚙️ assert] 0 should be even
✅ got: #t
[⚙️ assert] 1 should not be even
✅ got: #f
+----------------------------------------------+
[📑 suite] Basic Suite
[🧪 test] Basic Numeric Tests
✅ got: 1
[⚙️ assert] checks if addition works
✅ got: 4
[⚙️ assert] arithmetic approximation
✅ got: 0.99999999999
[⚙️ assert] arithmetic approximation
✅ got: 0.99999999999
[⚙️ assert] arithmetic approximation
✅ got: 0.9999999
✅ got: 0
✅ got: 1
ℹ️ info - ran 2 tasks in: 1 seconds, -65325 microseconds
ℹ️ info - counted 1 file, 2 suites, 2 tests and 11 assertions
🔬 debug - assertion-results: (#t #t #t #t #t #t #t #t #t #t #t)
running unit tests from file: shuffle.scm, entrypoint: spec
ℹ️ info - Code coverage: 58.7% of 3716 lines (2182 covered) in 21 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] seeded shuffling
[🧪 test] the same seed gives the same order
✅ got: (2 4 5 1 3)
[🧪 test] two different seeds are not forced to agree
✅ got: (1 2 3 4 5)
✅ got: (1 2 3 4 5)
[🧪 test] short lists come back untouched
✅ got: ()
✅ got: (1)
[🧪 test] a fresh seed is a usable seed
✅ got: #t
✅ got: (1 2 3)
[🧪 test] an explicit seed is used and remembered
✅ got: 7
✅ got: 7
[🧪 test] seeded-shuffle follows the run's seed
✅ got: (4 3 1 2)
ℹ️ info - ran 1 tasks in: 1 seconds, -166575 microseconds
ℹ️ info - counted 1 file, 1 suite, 6 tests and 6 assertions
running unit tests from file: nesting.scm, entrypoint: spec
ℹ️ info - shuffled with seed 672163891 (replay with VERITAS_SEED=672163891)
ℹ️ info - Code coverage: 58.9% of 3716 lines (2190 covered) in 21 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] depth 1
[🧪 test] test at depth 1
✅ got: y
+----------------------------------------------+
[📑 suite] depth 2
+----------------------------------------------+
[📑 suite] depth 3
+----------------------------------------------+
[📑 suite] depth 4
[🧪 test] leaf test
✅ got: 24
[🧪 test] test at depth 3
✅ got: #t
[🧪 test] test at depth 2
✅ got: (a b)
+----------------------------------------------+
[📑 suite] table nesting
+----------------------------------------------+
[📑 suite] inner table
[🧪 test] 1 squared is 1
✅ got: 1
[🧪 test] 2 squared is 4
✅ got: 4
[🧪 test] 3 squared is 9
✅ got: 9
[🧪 test] 1 squared is 1
✅ got: 1
[🧪 test] 3 squared is 9
✅ got: 9
[🧪 test] 2 squared is 4
✅ got: 4
+----------------------------------------------+
[📑 suite] sequential nesting
+----------------------------------------------+
[📑 suite] sequential child
+----------------------------------------------+
[📑 suite] sequential grandchild
[🧪 test] deep sequential test
✅ got: 6
ℹ️ info - ran 3 tasks in: 1 seconds, 187889 microseconds
ℹ️ info - counted 1 file, 9 suites, 11 tests and 11 assertions
running unit tests from file: bdd.scm, entrypoint: spec
ℹ️ info - shuffled with seed 672163891 (replay with VERITAS_SEED=672163891)
ℹ️ info - Code coverage: 59.8% of 3716 lines (2224 covered) in 21 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] Scenario: a scenario written in latin
[🧪 test] Given a list of two numbers
✅ got: 2
[🧪 test] When the numbers are summed
✅ got: 30
[🧪 test] Then the total is thirty
✅ got: 30
[🧪 test] And the values are positive
✅ got: #t
[🧪 test] But the list is not empty
✅ got: (10 20)
+----------------------------------------------+
[📑 suite] Scenario: summing a list of numbers
[🧪 test] Given a list of three numbers
✅ got: 3
[🧪 test] When the numbers are summed
✅ got: 6
[🧪 test] Then the total is correct
✅ got: 6
[🧪 test] And the list is non-empty
✅ got: (1 2 3)
[🧪 test] But the list does not contain four
✅ got: 4
+----------------------------------------------+
[📑 suite] Scenario: steps run in declaration order
[🧪 test] Given no recorded events
✅ success running without errors
[🧪 test] When the first event is recorded
✅ success running without errors
[🧪 test] Then the order is preserved
✅ success running without errors
+----------------------------------------------+
[📑 suite] Scenario: scenario steps keep declaration order
[🧪 test] Given the first step records itself
✅ success running without errors
[🧪 test] When the second step records itself
✅ success running without errors
[🧪 test] Then the third step records itself
✅ success running without errors
[🧪 test] And the recorded order is Given, When, Then
✅ success running without errors
+----------------------------------------------+
[📑 suite] Scenario: a scenario written with PascalCase steps
[🧪 test] Given a list of two numbers
✅ got: 2
[🧪 test] When the numbers are summed
✅ got: 30
[🧪 test] Then the total is thirty
✅ got: 30
+----------------------------------------------+
[📑 suite] Scenario: outer scenario
+----------------------------------------------+
[📑 suite] Scenario: inner scenario
[🧪 test] Given inner given
✅ got: #t
[🧪 test] Then inner then
✅ got: 2
[🧪 test] Then outer then
✅ got: #t
ℹ️ info - ran 6 tasks in: 2 seconds, -265566 microseconds
ℹ️ info - counted 1 file, 7 suites, 23 tests and 23 assertions
running unit tests from file: assertions.scm, entrypoint: spec
ℹ️ info - shuffled with seed 672163891 (replay with VERITAS_SEED=672163891)
ℹ️ info - Code coverage: 60.2% of 3716 lines (2237 covered) in 21 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] approximate assertions
[🧪 test] assert-approximate
[pass] got: 3.141
[fail] error, expect: 3.14, got: 3.5
✅ got: #t
✅ got: #f
[🧪 test] assert-not-approximate
[pass] got: 3.5
[fail] error, expect: 3.14, got: 3.141
✅ got: #t
✅ got: #f
[🧪 test] is-approximate?
✅ got: #t
✅ got: #f
+----------------------------------------------+
[📑 suite] equality, identity and value assertions
[🧪 test] assert-not-eq
[pass] got: (1)
[fail] error, expect: x, got: x
✅ got: #t
✅ got: #f
[🧪 test] assert-eq
[pass] got: foo
[fail] error, expect: (1), got: (1)
✅ got: #t
✅ got: #f
[🧪 test] assert-not-eqv
[pass] got: 2
[fail] error, expect: 1, got: 1
✅ got: #t
✅ got: #f
[🧪 test] assert-equal
[pass] got: 1
[fail] error, expect: 1, got: 2
✅ got: #t
✅ got: #f
[🧪 test] assert-eqv
[pass] got: 42
[fail] error, expect: 1, got: 2
✅ got: #t
✅ got: #f
[🧪 test] assert-not-equal
[pass] got: (1 3)
[fail] error, expect: (1 2), got: (1 2)
✅ got: #t
✅ got: #f
+----------------------------------------------+
[📑 suite] boolean assertions
[🧪 test] assert-false
[pass] got: #f
[fail] error, expect: #f, got: #t
✅ got: #t
✅ got: #f
[🧪 test] assert-true
[pass] got: #t
[fail] error, expect: #t, got: #f
✅ got: #t
✅ got: #f
+----------------------------------------------+
[📑 suite] delayed evaluation of got
[🧪 test] lazy values are evaluated when the assertion runs
[pass] got: 144
[pass] got: 6
[pass] got: 1
[pass] got: 2
[pass] got: 2
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
+----------------------------------------------+
[📑 suite] error assertions
[🧪 test] assert-raises honours an expected error key
[pass] raised an error as expected
[fail] did not raise an expected error
✅ got: #t
✅ got: #f
[🧪 test] assert-no-error
[pass] success running without errors
[fail] caught error: numerical-overflow: (divide Numerical overflow #f #f)
✅ got: #t
✅ got: #f
[🧪 test] assert-raises honours a predicate
[pass] raised an error as expected
[fail] did not raise an expected error
✅ got: #t
✅ got: #f
[🧪 test] assert-raises accepts any error by default
[pass] raised an error as expected
[fail] did not raise an expected error
✅ got: #t
✅ got: #f
[🧪 test] assert-error
[pass] success catching error: numerical-overflow: (divide Numerical overflow #f #f)
[fail] did not catch any error
✅ got: #t
✅ got: #f
+----------------------------------------------+
[📑 suite] latin aliases
[🧪 test] equality aliases
[pass] got: (1 2)
[fail] error, expect: (1 2), got: (1 3)
[pass] got: foo
[fail] error, expect: (1), got: (1)
[pass] got: 42
[fail] error, expect: 1, got: 2
[pass] got: (1 3)
[fail] error, expect: (1 2), got: (1 2)
[pass] got: (1)
[fail] error, expect: x, got: x
[pass] got: 2
[fail] error, expect: 1, got: 1
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
[🧪 test] approximate aliases
[pass] got: 3.141
[fail] error, expect: 3.14, got: 3.5
[pass] got: 3.5
[fail] error, expect: 3.14, got: 3.141
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
[🧪 test] error aliases
[pass] success catching error: numerical-overflow: (divide Numerical overflow #f #f)
[fail] did not catch any error
[pass] success running without errors
[fail] caught error: numerical-overflow: (divide Numerical overflow #f #f)
[pass] raised an error as expected
[fail] did not raise an expected error
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
[🧪 test] boolean aliases
[pass] got: #t
[fail] error, expect: #t, got: #f
[pass] got: #f
[fail] error, expect: #f, got: #t
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
[🧪 test] proba is the core assert combinator
[pass] got: 3
[fail] error, expect: 3, got: 4
✅ got: #t
✅ got: #f
[🧪 test] matcher aliases
[pass] got: 2
[fail] error, expect: (1 2), got: 9
[pass] got: 9
[fail] error, expect: (1 2), got: 2
[pass] got: hello
[fail] error, expect: #<regexp 7f576f94d840>, got: hello
[pass] got: hello
[fail] error, expect: #<regexp 7f5771e7d8c0>, got: hello
[pass] got: ()
[fail] error, expect: #t, got: (1)
[pass] got: (1)
[fail] error, expect: #t, got: ()
[pass] got: (1 2 3)
[fail] error, expect: 4, got: (1 2 3)
[pass] got: 5
[fail] error, expect: (1 . 10), got: 11
[pass] got: green
[fail] error, expect: (red green), got: blue
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
✅ got: #t
✅ got: #f
ℹ️ info - ran 6 tasks in: 3 seconds, 443804 microseconds
ℹ️ info - counted 1 file, 6 suites, 23 tests and 85 assertions
running unit tests from file: timeout.scm, entrypoint: spec
ℹ️ info - shuffled with seed 672163891 (replay with VERITAS_SEED=672163891)
ℹ️ info - Code coverage: 60.3% of 3717 lines (2242 covered) in 21 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] deadlines
[🧪 test] a test within its deadline passes
✅ got: (#t #t)
[🧪 test] a suite within its deadline passes
✅ got: (#t)
[🧪 test] an assertion within its deadline passes
✅ got: (#t)
[🧪 test] no deadline means no deadline
✅ got: (#t)
[🧪 test] an overrunning test is reported as a failure
✅ got: (#f)
[🧪 test] the timeout failure explains itself
[⚙️ assert] the failure mentions the timeout
✅ got: overrunning test timed out after 0.3 seconds
[🧪 test] an overrunning suite is reported as a failure
✅ got: (#f)
[🧪 test] an overrunning lazy assertion is reported as a failure
✅ got: (#f)
[🧪 test] an overrunning thunk assertion is reported as a failure
✅ got: (#f)
[🧪 test] an overrunning scenario is reported as a failure
✅ got: (#f)
[🧪 test] an overrunning benchmark is reported as a failure
✅ got: (#f)
[🧪 test] the fiber of an overrunning test is aborted
[⚙️ assert] the spin counter stopped growing
✅ got: #t
[🧪 test] the fiber of an overrunning suite is aborted
[⚙️ assert] the spin counter stopped growing
✅ got: #t
[🧪 test] the fiber of an overrunning thunk assertion is aborted
[⚙️ assert] the spin counter stopped growing
✅ got: #t
[🧪 test] a blocked unit does not stall the run
[⚙️ assert] the deadline returned promptly
✅ got: #t
[🧪 test] a unit that raises still raises
[⚙️ assert] the raised error reached the caller
✅ success catching error: misc-error: (#f boom () #f)
ℹ️ info - ran 1 tasks in: 5 seconds, -342479 microseconds
ℹ️ info - counted 1 file, 1 suite, 16 tests and 16 assertions
running unit tests from file: impact.scm, entrypoint: spec
ℹ️ info - Code coverage: 63.4% of 3717 lines (2358 covered) in 21 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] change-aware selection
[🧪 test] a file's module name comes from its path
✅ got: (veritas reporter)
✅ got: (acme password)
[🧪 test] imports are read from a module body
✅ got: ((acme password) (veritas veritas))
[🧪 test] a changed module selects its own test and its importers
✅ got: (/tmp/veritas-impact-suite/test/acme/unit/password-spec.scm /tmp/veritas-impact-suite/test/acme/unit/password.scm /tmp/veritas-impact-suite/test/acme/unit/web.scm)
[🧪 test] an unrelated test is left out
✅ got: #f
[🧪 test] a changed test file selects itself
✅ got: (/tmp/veritas-impact-suite/test/acme/unit/other.scm)
[🧪 test] a test that names a changed data file is selected
✅ got: (/tmp/veritas-impact-suite/test/acme/unit/data-reader.scm)
[🧪 test] a data file the test does not name selects nothing
✅ got: ()
[🧪 test] no change selects nothing
✅ got: ()
ℹ️ info - ran 1 tasks in: 1 seconds, 45317 microseconds
ℹ️ info - counted 1 file, 1 suite, 8 tests and 9 assertions
running unit tests from file: traces.scm, entrypoint: spec
ℹ️ info - Code coverage: 64.5% of 3717 lines (2399 covered) in 21 files
ℹ️ info - Coverage reports written to reports/lcov/veritas.info, reports/html/index.html, reports/lcov/coverage-summary.json, reports/lcov/cobertura.xml, reports/lcov/jacoco.xml
+----------------------------------------------+
[📑 suite] traces
[🧪 test] a traced test records its start, its assertions and its end
✅ got: (test-start assertion assertion test-end)
✅ got: #t
✅ got: #t
✅ got: 1 attempt(s)
[🧪 test] a trace survives a round trip through a file
✅ got: 2
✅ got: test-start
✅ got: test-end
[🧪 test] the rendered timeline names the steps
✅ got: test-start
✅ got: test-end
[🧪 test] tracing off records nothing
✅ got: ()
[🧪 test] a missing trace file reads as no frames
✅ got: ()
ℹ️ info - ran 1 tasks in: 1 seconds, -256314 microseconds
ℹ️ info - counted 1 file, 1 suite, 5 tests and 5 assertions
running unit tests from file: rerun.scm, entrypoint: spec
the file rerun.scm raised wrong-number-of-args: ("allocate-struct" "Wrong number of arguments to ~A" (#<record-type pre-test-result>) #f)
global totals: 28 files, 77 suites, 269 tests and 484 assertions
1 of 29 files failed: rerun.scm
;;; newer than compiled /gnu/store/0w0f5c8hqiz5a524gzhhs6gakyqsjbd3-profile/lib/guile/3.0/site-ccache/veritas/container.go
;;; note: source file ./src/veritas/container.scm
;;; newer than compiled /run/current-system/profile/lib/guile/3.0/site-ccache/veritas/container.go
;;; found fresh local cache at /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/veritas/trunk/src/veritas/container.scm.go
Executing: env VERITAS_TEST_TYPE=unit VERITAS_RUN_BENCHMARKS=true VERITAS_COVERAGE=true VERITAS_COVERAGE_EXCLUDE=test:override guix shell -m manifest.scm -- guile -L ./src -L ./test -c '((@ (veritas runner) run-tests))'
maak: error: command failed (exit code 1): env VERITAS_TEST_TYPE=unit VERITAS_RUN_BENCHMARKS=true VERITAS_COVERAGE=true VERITAS_COVERAGE_EXCLUDE=test:override guix shell -m manifest.scm -- guile -L ./src -L ./test -c '((@ (veritas runner) run-tests))'
hint: Fix the command above, or run `maak --dry-run' to inspect it first.