starting new job...
→ running command: cd "/etc/byggsteg/job-clone//veritas/trunk" && git reset --hard && git pull
HEAD is now at 9d0cdfc chore: Pin the Arch source checksum for v0.9.0
From https://codeberg.org/jjba23/veritas
9d0cdfc..e515f7e trunk -> origin/trunk
Updating 9d0cdfc..e515f7e
Fast-forward
README.org | 21 +++++++++++----------
assets/veritas-logo.png | Bin 0 -> 60395 bytes
2 files changed, 11 insertions(+), 10 deletions(-)
create mode 100644 assets/veritas-logo.png
→ 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 e515f7e4a8f97ff8d6db8fc4f0400fea190f13dd
Author: Josep Bigorra <jjbigorra@gmail.com>
Date: Mon Oct 26 11:02:40 2026 +0100
docs: Put the Veritas logo beside the intro
Drop the GNU sticker from the closing section and give the project its own
mark, high up: right below the demo GIF and its caption, the line that says
what the framework is for now sits beside the Veritas icon (140px, wrapping
above the text on narrow screens).
The artwork is the Veritas project icon from skeu-icons
(https://codeberg.org/jjba23/skeu-icons, CC BY-SA 4.0).
🤖 Generated with [ECA](https://eca.dev) (deepseek/deepseek-flash)
Co-Authored-By: eca-agent <git@eca.dev>
M README.org
A assets/veritas-logo.png
→ 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'
;;; note: source file ./src/veritas/runner.scm
;;; newer than compiled /gnu/store/kbl5612r4m6yzr09rnkps1k5jgl40lzg-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/kbl5612r4m6yzr09rnkps1k5jgl40lzg-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/kbl5612r4m6yzr09rnkps1k5jgl40lzg-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/kbl5612r4m6yzr09rnkps1k5jgl40lzg-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/kbl5612r4m6yzr09rnkps1k5jgl40lzg-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/kbl5612r4m6yzr09rnkps1k5jgl40lzg-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/kbl5612r4m6yzr09rnkps1k5jgl40lzg-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/kbl5612r4m6yzr09rnkps1k5jgl40lzg-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/kbl5612r4m6yzr09rnkps1k5jgl40lzg-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
;;; note: source file ./src/veritas/bdd.scm
;;; newer than compiled
scanning directories for unit tests...
scanning present working directory for unit tests...
shuffled the files with seed 587000271 (replay with VERITAS_SEED=587000271)
found unit tests: (flexible-bodies.scm matchers.scm assertions.scm partition.scm nesting.scm generator/simple.scm mock.scm lists.scm jobs.scm shuffle.scm numeric/a/num.scm timeout.scm introduction.scm bdd.scm coverage.scm rerun.scm container.scm table.scm snapshot.scm simple.scm cli.scm generator/bounds.scm)
running unit tests from file: flexible-bodies.scm, entrypoint: spec
ℹ️ info - Code coverage: 15.2% of 2493 lines (379 covered) in 10 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, 54991 microseconds
running unit tests from file: matchers.scm, entrypoint: spec
ℹ️ info - shuffled with seed 587000271 (replay with VERITAS_SEED=587000271)
ℹ️ info - Code coverage: 20.9% of 2493 lines (521 covered) in 10 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] matcher result wiring
[🧪 test] assert-raises fails when nothing is raised
[fail] did not raise an expected error
✅ got: #f
[🧪 test] failing matchers are reported as failures
[pass] got: 2
[fail] error, expect: (1), got: 2
✅ got: #t
✅ got: #f
+----------------------------------------------+
[📑 suite] passing matchers
[🧪 test] emptiness and length
✅ got: ()
✅ got:
✅ got: #()
✅ got: (1)
✅ got: a
✅ got: (1 2 3)
✅ got: hello
[🧪 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] containment
✅ got: b
✅ got: world
✅ got: 2
✅ got: z
✅ got: z
[🧪 test] ranges and membership
✅ got: 5
✅ got: 0
✅ got: green
+----------------------------------------------+
[📑 suite] matcher edge cases and failures
[🧪 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] vector containment
[pass] got: 2
[fail] error, expect: #(1 2 3), got: 9
✅ got: #t
✅ got: #f
[🧪 test] not-matches
[pass] got: hello
[fail] error, expect: #<regexp 7f9f62253280>, got: hello
✅ got: #t
✅ got: #f
[🧪 test] matches accepts a compiled regexp
[pass] got: hello
[fail] error, expect: #<regexp 7f9f60c22400>, got: hello
✅ 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] one-of
[pass] got: green
[fail] error, expect: (red green), got: blue
✅ got: #t
✅ got: #f
[🧪 test] hash tables are containers too
[pass] got: a
[fail] error, expect: #<hash-table 7f9f60bd7960 1/31>, got: b
✅ got: #t
✅ got: #f
[🧪 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] 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
ℹ️ info - ran 3 tasks in: 2 seconds, 95389 microseconds
running unit tests from file: assertions.scm, entrypoint: spec
ℹ️ info - shuffled with seed 587000271 (replay with VERITAS_SEED=587000271)
ℹ️ info - Code coverage: 23.8% of 2493 lines (593 covered) in 10 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] 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] equality, identity and value assertions
[🧪 test] assert-not-equal
[pass] got: (1 3)
[fail] error, expect: (1 2), got: (1 2)
✅ got: #t
✅ got: #f
[🧪 test] assert-eq
[pass] got: foo
[fail] error, expect: (1), got: (1)
✅ got: #t
✅ got: #f
[🧪 test] assert-eqv
[pass] got: 42
[fail] error, expect: 1, got: 2
✅ got: #t
✅ got: #f
[🧪 test] assert-not-eq
[pass] got: (1)
[fail] error, expect: x, got: x
✅ 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
+----------------------------------------------+
[📑 suite] delayed evaluation of got
[🧪 test] comp, compute and computare are evaluated at test time
[pass] got: 144
[pass] got: 9
[pass] got: 5
✅ got: #t
✅ got: #t
✅ got: #t
+----------------------------------------------+
[📑 suite] error assertions
[🧪 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-no-error
[pass] success running without errors
[fail] caught error: numerical-overflow: (divide Numerical overflow #f #f)
✅ 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
[🧪 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 honours an expected error key
[pass] raised an error as expected
[fail] did not raise an expected error
✅ got: #t
✅ got: #f
+----------------------------------------------+
[📑 suite] latin aliases
[🧪 test] proba is the core assert combinator
[pass] got: 3
[fail] error, expect: 3, got: 4
✅ 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] 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] 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 7f9f60915080>, got: hello
[pass] got: hello
[fail] error, expect: #<regexp 7f9f60a62280>, 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
[🧪 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] 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
+----------------------------------------------+
[📑 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
ℹ️ info - ran 6 tasks in: 4 seconds, -35774 microseconds
running unit tests from file: partition.scm, entrypoint: spec
ℹ️ info - Code coverage: 24.7% of 2493 lines (616 covered) in 10 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: 0 seconds, 495553 microseconds
running unit tests from file: nesting.scm, entrypoint: spec
ℹ️ info - shuffled with seed 587000271 (replay with VERITAS_SEED=587000271)
ℹ️ info - Code coverage: 25.5% of 2511 lines (641 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] sequential nesting
+----------------------------------------------+
[📑 suite] sequential child
+----------------------------------------------+
[📑 suite] sequential grandchild
[🧪 test] deep sequential test
✅ got: 6
+----------------------------------------------+
[📑 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
[🧪 test] 2 squared is 4
✅ got: 4
[🧪 test] 1 squared is 1
✅ got: 1
[🧪 test] 3 squared is 9
✅ got: 9
+----------------------------------------------+
[📑 suite] inner table
[🧪 test] 3 squared is 9
✅ got: 9
[🧪 test] 1 squared is 1
✅ got: 1
[🧪 test] 2 squared is 4
✅ got: 4
ℹ️ info - ran 3 tasks in: 1 seconds, -79254 microseconds
running unit tests from file: generator/simple.scm, entrypoint: spec
ℹ️ info - shuffled with seed 587000271 (replay with VERITAS_SEED=587000271)
ℹ️ info - Code coverage: 26.5% of 2511 lines (666 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
(U z u I o G f % o ' M & V , T b y , A 0 " } _ ( # X r 8 & f s I C W V < j 0 )
(] T U k " q h I J o V)
✅ success running without errors
()
(16 44 8 74 49 49 46 7 1 53 51)
✅ success running without errors
0
6
✅ success running without errors
")Gd!L9)w2G9m8| {_-Z.!jeB:[Z[<sx}IqBp:#@^~v +Re{|BJAz>UBcq}\\10bHT"
"m:8&uB~0.=zC4N!t>D$8-p"
✅ success running without errors
ℹ️ info - ran 1 tasks in: 1 seconds, -530379 microseconds
running unit tests from file: mock.scm, entrypoint: spec
ℹ️ info - Code coverage: 28.3% of 2575 lines (730 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] 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: 0 seconds, 679611 microseconds
running unit tests from file: lists.scm, entrypoint: spec
ℹ️ info - shuffled with seed 587000271 (replay with VERITAS_SEED=587000271)
ℹ️ info - Code coverage: 28.7% of 2575 lines (739 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] 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, -281293 microseconds
running unit tests from file: jobs.scm, entrypoint: spec
ℹ️ info - Code coverage: 31.4% of 2575 lines (809 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] 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"/>
ℹ️ info - ran 1 tasks in: 1 seconds, -369569 microseconds
running unit tests from file: shuffle.scm, entrypoint: spec
ℹ️ info - Code coverage: 31.9% of 2575 lines (821 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] 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: 0 seconds, 640622 microseconds
running unit tests from file: numeric/a/num.scm, entrypoint: spec
ℹ️ info - shuffled with seed 587000271 (replay with VERITAS_SEED=587000271)
ℹ️ info - Code coverage: 31.9% of 2575 lines (821 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] 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
+----------------------------------------------+
[📑 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
ℹ️ info - ran 2 tasks in: 1 seconds, -294702 microseconds
🔬 debug - assertion-results: (#t #t #t #t #t #t #t #t #t #t #t)
running unit tests from file: timeout.scm, entrypoint: spec
ℹ️ info - shuffled with seed 587000271 (replay with VERITAS_SEED=587000271)
ℹ️ info - Code coverage: 32.1% of 2575 lines (827 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] 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: 4 seconds, 499002 microseconds
running unit tests from file: introduction.scm, entrypoint: spec
ℹ️ info - shuffled with seed 587000271 (replay with VERITAS_SEED=587000271)
ℹ️ info - Code coverage: 32.6% of 2575 lines (840 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] 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] 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] 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)
+----------------------------------------------+
[📑 suite] Error and Exception Handling
[🧪 test] Summing a list with non-numeric elements
[⚙️ 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
+----------------------------------------------+
[🚄 benchmark]
Computation of the factorial of 10000
[🏃 run #0]
% cumulative self
time seconds seconds procedure
100.00 56.25 0.03 veritas/unit/introduction.scm:185:0:factorial
0.00 0.03 0.00 veritas/veritas.scm:791:93
---
Sample count: 1
Total time: 0.026164857 seconds (0.006524093 seconds in GC)
[🏃 run #1]
% cumulative self
time seconds seconds procedure
50.00 79.89 0.02 veritas/unit/introduction.scm:185:0:factorial
50.00 0.02 0.02 override/fibers/events-impl.scm:81:0:pump-epoll-guardian
0.00 0.04 0.00 veritas/veritas.scm:791:93
0.00 0.02 0.00 %after-gc-thunk
0.00 0.02 0.00 anon #x1a386850
---
Sample count: 2
Total time: 0.039481114 seconds (0.019156126 seconds in GC)
ℹ️ info - ran 6 tasks in: 2 seconds, -634752 microseconds
running unit tests from file: bdd.scm, entrypoint: spec
ℹ️ info - shuffled with seed 587000271 (replay with VERITAS_SEED=587000271)
ℹ️ info - Code coverage: 33.9% of 2575 lines (874 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] 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: 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: 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
+----------------------------------------------+
[📑 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)
ℹ️ info - ran 6 tasks in: 2 seconds, -240177 microseconds
running unit tests from file: coverage.scm, entrypoint: spec
ℹ️ info - shuffled with seed 587000271 (replay with VERITAS_SEED=587000271)
ℹ️ info - Code coverage: 61.4% of 2575 lines (1580 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] Coverage filtering
[🧪 test] the include filter is what keeps dependencies out
✅ got: #t
✅ got: #f
✅ got: #f
✅ got: #t
✅ got: #t
✅ got: #t
[🧪 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-i3zwKi/resolved.scm
[🧪 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
+----------------------------------------------+
[📑 suite] Coverage measurement
[🧪 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
[🧪 test] lines that ran are counted, lines that did not are zero
✅ got: 1
✅ got: /tmp/veritas-coverage-LzPYJO/veritas-coverage-fixture-8426.scm
✅ got: #t
✅ got: 0
✅ got: 0
✅ got: #t
✅ got: #t
✅ got: #t
+----------------------------------------------+
[📑 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-pmQoy0/lcov/veritas.info, /tmp/veritas-coverage-pmQoy0/html/index.html, /tmp/veritas-coverage-pmQoy0/lcov/coverage-summary.json, /tmp/veritas-coverage-pmQoy0/lcov/cobertura.xml, /tmp/veritas-coverage-pmQoy0/lcov/jacoco.xml
[🧪 test] calls the fixture
✅ got: pos
ℹ️ info - ran 1 tasks in: 27 seconds, 715150 microseconds
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
+----------------------------------------------+
[📑 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 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 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 HTML report is one page with every file in it
✅ got: /tmp/veritas-coverage-X09AUU/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
ℹ️ info - ran 4 tasks in: 107 seconds, 719157 microseconds
running unit tests from file: rerun.scm, entrypoint: spec
ℹ️ info - Code coverage: 61.7% of 2575 lines (1590 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] rerunning what failed
[🧪 test] a failing test is named and a passing one is not
✅ got: (the failing one)
[🧪 test] names are found at any depth, through nested suites
✅ got: (the failing one)
[🧪 test] a run that passed records nothing to rerun
✅ got: ()
[🧪 test] the record round-trips through the report file
✅ got: (the failing one)
✅ got: (the failing one)
[🧪 test] an empty record is a record, so nothing is rerun
✅ got: ()
✅ got: ()
✅ got: #f
✅ got: #f
✅ got: #t
✅ got: #t
✅ got: #t
ℹ️ info - ran 1 tasks in: 1 seconds, -273716 microseconds
running unit tests from file: container.scm, entrypoint: spec
ℹ️ info - shuffled with seed 587000271 (replay with VERITAS_SEED=587000271)
ℹ️ info - Code coverage: 62.5% of 2744 lines (1716 covered) in 13 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 command construction and readiness
[🧪 test] container-exec-status returns status and output
✅ got: 0
✅ got: exec-ok
[🧪 test] wait-until returns as soon as the predicate holds
✅ got: #t
[🧪 test] wait-until raises once the timeout is exceeded
✅ raised an error as expected
[🧪 test] container-run forwards name, env, ports and volumes
✅ got: --name svc
✅ got: -e A=1
✅ got: -p 8080:80
✅ got: -v /tmp:/data
+----------------------------------------------+
[📑 suite] container lifecycle against a fake runtime
[🧪 test] run-command! raises on failure
✅ raised an error as expected
[🧪 test] container-logs returns logs
✅ got: line1
ready
[🧪 test] run-command reports status and output
✅ got: (3 hi
)
[🧪 test] container-build shells out to the runtime
✅ got: built
[🧪 test] assert-container-running reports success
[⚙️ assert] the probe is running
✅ container assert-running-probe is running
[🧪 test] container-exec returns output
✅ got: exec-ok
[🧪 test] runtime detection honours the environment
✅ got: /tmp/veritas-fake-container-runtime.sh
✅ got: #t
[🧪 test] with-container cleans up after the thunk
✅ got: fake-container
✅ got: run -d alpine
rm -f fake-container
[🧪 test] container-running? detects a running container
✅ got: #t
[🧪 test] wait-for-log succeeds on a matching line
✅ got: #t
[🧪 test] wait-for-command succeeds
✅ got: #t
[🧪 test] container-run returns an id
✅ got: 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
ℹ️ info - ran 2 tasks in: 2 seconds, -261648 microseconds
running unit tests from file: table.scm, entrypoint: spec
ℹ️ info - shuffled with seed 587000271 (replay with VERITAS_SEED=587000271)
ℹ️ info - Code coverage: 62.6% of 2744 lines (1719 covered) in 13 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] string reversal is involutive
[🧪 test] reversing "" twice is identity
✅ got:
[🧪 test] reversing "a" twice is identity
✅ got: a
[🧪 test] reversing "racecar" twice is identity
✅ got: racecar
[🧪 test] reversing "veritas" twice is identity
✅ got: veritas
[🧪 test] reversing "ab" twice is identity
✅ got: ab
+----------------------------------------------+
[📑 suite] integer addition
[🧪 test] 100 + -100 = 0
✅ got: 0
[🧪 test] 0 + 0 = 0
✅ got: 0
[🧪 test] -1 + 1 = 0
✅ got: 0
[🧪 test] 1 + 2 = 3
✅ got: 3
[🧪 test] 10 + 20 = 30
✅ got: 30
+----------------------------------------------+
[📑 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 = 2
[🧪 test] square is correct
✅ got: 4
+----------------------------------------------+
[📑 suite] n = 3
[🧪 test] square is correct
✅ got: 9
+----------------------------------------------+
[📑 suite] n = 1
[🧪 test] square is correct
✅ got: 1
+----------------------------------------------+
[📑 suite] collection emptiness
+----------------------------------------------+
[📑 suite] string ""
[🧪 test] emptiness matches
✅ got: #t
+----------------------------------------------+
[📑 suite] string "x"
[🧪 test] emptiness matches
✅ got: #f
ℹ️ info - ran 5 tasks in: 1 seconds, 167705 microseconds
running unit tests from file: snapshot.scm, entrypoint: spec
ℹ️ info - Code coverage: 63.5% of 2820 lines (1790 covered) in 14 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: #f
[🧪 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, -77445 microseconds
running unit tests from file: simple.scm, entrypoint: spec
ℹ️ info - shuffled with seed 587000271 (replay with VERITAS_SEED=587000271)
ℹ️ info - Code coverage: 63.5% of 2820 lines (1790 covered) in 14 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 Handling Tests
[🧪 test] No Error on Valid Division
[⚙️ assert] Should not signal error on valid division
✅ success running without errors
[⚙️ assert] Valid division result
✅ got: 5
[🧪 test] Division by Zero Error
[⚙️ assert] Should signal error on division by zero
✅ success catching error: misc-error: (#f Division by zero () #f)
+----------------------------------------------+
[📑 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] 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
+----------------------------------------------+
[📑 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
ℹ️ info - ran 6 tasks in: 1 seconds, 321398 microseconds
running unit tests from file: cli.scm, entrypoint: spec
ℹ️ info - shuffled with seed 587000271 (replay with VERITAS_SEED=587000271)
ℹ️ info - Code coverage: 60.2% of 2998 lines (1806 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] CLI driver
[🧪 test] --version exits successfully
✅ got: 0
[🧪 test] --help exits successfully
✅ got: 0
+----------------------------------------------+
[📑 suite] CLI metadata
[🧪 test] version and man page name are present
✅ got: 0.9.0
✅ got: veritas(1)
[🧪 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
[🧪 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/gnu/store/kbl5612r4m6yzr09rnkps1k5jgl40lzg-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
;;; note: source file ./src/veritas/table.scm
;;; newer than compiled /gnu/store/kbl5612r4m6yzr09rnkps1k5jgl40lzg-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/mock.scm
;;; newer than compiled /gnu/store/kbl5612r4m6yzr09rnkps1k5jgl40lzg-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
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
;;; newer than compiled /gnu/store/kbl5612r4m6yzr09rnkps1k5jgl40lzg-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
;;; note: source file ./src/veritas/snapshot.scm
;;; newer than compiled /gnu/store/kbl5612r4m6yzr09rnkps1k5jgl40lzg-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
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/cli.scm
;;; newer than compiled /gnu/store/kbl5612r4m6yzr09rnkps1k5jgl40lzg-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
[⚙️ 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
ℹ️ info - ran 2 tasks in: 3 seconds, -624821 microseconds
running unit tests from file: generator/bounds.scm, entrypoint: spec
ℹ️ info - shuffled with seed 587000271 (replay with VERITAS_SEED=587000271)
ℹ️ info - Code coverage: 60.9% of 2998 lines (1825 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] character generators
[🧪 test] generate-char yields printable ASCII
✅ got: #t
+----------------------------------------------+
[📑 suite] integer generators
[🧪 test] generate-integer default bound is respected
✅ got: #t
[🧪 test] the same seed yields the same value
✅ got: 2
[🧪 test] generate-integer respects its bound
✅ got: #t
+----------------------------------------------+
[📑 suite] collection generators
[🧪 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
[🧪 test] generate-string respects min and max length
✅ got: #t
ℹ️ info - ran 3 tasks in: 1 seconds, 84019 microseconds
finished running tests
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))'
→ running command: cd /etc/byggsteg/job-clone/veritas/trunk && sudo maak deploy
--------------------------------------------------------------
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: deploy
--------------------------------------------------------------
=> Running Maak task: deploy
Publish the API docs.
API documentation saved to doc/api
index.texi:2690: warning: @end should only appear at the beginning of a line
index.texi:2705: warning: @end should only appear at the beginning of a line
index.texi:2720: warning: @end should only appear at the beginning of a line
index.texi:2735: warning: @end should only appear at the beginning of a line
index.texi:2751: warning: @end should only appear at the beginning of a line
index.texi:2767: warning: @end should only appear at the beginning of a line
index.texi: warning: must specify a title with a title command or @top
Execute command:
guix time-machine --channels=channels.scm -- shell -m manifest.scm -- documenta api ./src/veritas
Executing: guix time-machine --channels=channels.scm -- shell -m manifest.scm -- documenta api ./src/veritas
Execute command:
guix time-machine --channels=channels.scm -- shell -m manifest.scm -- texi2any -v --html --css-ref=https://jointhefreeworld.org/static/css/jointhefreeworld.css -o index_html ./doc/api/index.texi
Executing: guix time-machine --channels=channels.scm -- shell -m manifest.scm -- texi2any -v --html --css-ref=https://jointhefreeworld.org/static/css/jointhefreeworld.css -o index_html ./doc/api/index.texi
renamed './index_html' -> './doc/api-dist'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/API.html'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fassert.html'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fbdd.html'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fcli.html'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fcontainer.html'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fcoverage.html'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fgenerator.html'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fmock.html'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fmodel.html'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fprelude.html'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005freporter.html'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005frunner.html'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fshuffle.html'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fsnapshot.html'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005ftable.html'
removed '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fveritas.html'
removed directory '/srv/http/jointhefreeworld.org/api-docs/veritas'
mkdir: created directory '/srv/http/jointhefreeworld.org/api-docs/veritas'
renamed 'doc/api-dist/API.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/API.html'
renamed 'doc/api-dist/veritas_005fassert.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fassert.html'
renamed 'doc/api-dist/veritas_005fbdd.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fbdd.html'
renamed 'doc/api-dist/veritas_005fcli.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fcli.html'
renamed 'doc/api-dist/veritas_005fcontainer.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fcontainer.html'
renamed 'doc/api-dist/veritas_005fcoverage.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fcoverage.html'
renamed 'doc/api-dist/veritas_005fgenerator.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fgenerator.html'
renamed 'doc/api-dist/veritas_005fmock.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fmock.html'
renamed 'doc/api-dist/veritas_005fmodel.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fmodel.html'
renamed 'doc/api-dist/veritas_005fprelude.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fprelude.html'
renamed 'doc/api-dist/veritas_005freporter.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005freporter.html'
renamed 'doc/api-dist/veritas_005frunner.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005frunner.html'
renamed 'doc/api-dist/veritas_005fshuffle.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fshuffle.html'
renamed 'doc/api-dist/veritas_005fsnapshot.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fsnapshot.html'
renamed 'doc/api-dist/veritas_005ftable.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005ftable.html'
renamed 'doc/api-dist/veritas_005fveritas.html' -> '/srv/http/jointhefreeworld.org/api-docs/veritas/veritas_005fveritas.html'
Executing: mv -v doc/api-dist/* /srv/http/jointhefreeworld.org/api-docs/veritas
removed 'doc/api/index.texi'
removed directory 'doc/api'
removed directory 'doc/api-dist'
removed directory 'doc'