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 761570342 (replay with VERITAS_SEED=761570342)
found unit tests: (simple.scm rerun.scm impact.scm flexible-bodies.scm cli.scm coverage.scm introduction.scm timeout.scm generator/simple.scm matchers.scm property.scm determinism.scm snapshot.scm bdd.scm generator/more.scm mock.scm shuffle.scm structural-match.scm numeric/a/num.scm lists.scm table.scm container.scm partition.scm references.scm generator/bounds.scm counts.scm retries.scm batteries.scm jobs.scm nesting.scm traces.scm assertions.scm diff.scm)
running unit tests from file: simple.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 11.5% of 3418 lines (393 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] Basic Suite
[🧪 test] Check that function calls work
✅ got: 42
[🧪 test] Do some assertions
✅ got: 1
✅ got: 1
✅ got: 1
+----------------------------------------------+
[📑 suite] Complex Data Structure Tests
[🧪 test] Vector Operations
[⚙️ assert] Vector length
✅ got: 3
[⚙️ assert] Vector ref at index 1
✅ got: 2
[⚙️ assert] Vector ref at index 0
✅ got: 1
[🧪 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
+----------------------------------------------+
[📑 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
[🧪 test] some test without suite
✅ got: 1
+----------------------------------------------+
[📑 suite] str
[🧪 test] String Operation Tests
✅ got: hello world
✅ got: #t
✅ got: #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
ℹ️ info - ran 6 tasks in: 3 seconds, 623996 microseconds
ℹ️ info - counted 1 file, 5 suites, 9 tests and 21 assertions
running unit tests from file: rerun.scm, entrypoint: spec
ℹ️ info - Code coverage: 13.0% of 3418 lines (443 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] rerunning what failed;;; note: source file ./src/veritas/runner.scm
;;; newer than compiled /gnu/store/21afi1i81zcsj3g9fjxxaxrkfxm3gfjp-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/21afi1i81zcsj3g9fjxxaxrkfxm3gfjp-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/21afi1i81zcsj3g9fjxxaxrkfxm3gfjp-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/21afi1i81zcsj3g9fjxxaxrkfxm3gfjp-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/21afi1i81zcsj3g9fjxxaxrkfxm3gfjp-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/21afi1i81zcsj3g9fjxxaxrkfxm3gfjp-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/21afi1i81zcsj3g9fjxxaxrkfxm3gfjp-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/21afi1i81zcsj3g9fjxxaxrkfxm3gfjp-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/21afi1i81zcsj3g9fjxxaxrkfxm3gfjp-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
[🧪 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: 3 seconds, -600325 microseconds
ℹ️ info - counted 1 file, 1 suite, 5 tests and 5 assertions
running unit tests from file: impact.scm, entrypoint: spec
ℹ️ info - Code coverage: 16.3% of 3418 lines (557 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] 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: 3 seconds, 94372 microseconds
ℹ️ info - counted 1 file, 1 suite, 8 tests and 9 assertions
running unit tests from file: flexible-bodies.scm, entrypoint: spec
ℹ️ info - Code coverage: 19.4% of 3490 lines (677 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] 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: 7 seconds, 349314 microseconds
ℹ️ info - counted 1 file, 1 suite, 13 tests and 23 assertions
running unit tests from file: cli.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 19.3% of 3711 lines (715 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] --help exits successfully
✅ got: 0
[🧪 test] --version exits successfully
✅ got: 0
+----------------------------------------------+
[📑 suite] CLI metadata
[🧪 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] version and man page name are present
✅ got: 1.4.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
ℹ️ info - ran 2 tasks in: 7 seconds, -373224 microseconds
ℹ️ info - counted 1 file, 2 suites, 5 tests and 56 assertions
running unit tests from file: coverage.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 39.7% of 3711 lines (1474 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] 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-XYaZKj/resolved.scm
+----------------------------------------------+
[📑 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 HTML report is one page with every file in it
✅ got: /tmp/veritas-coverage-1hMnXl/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 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 reports of one run add up
✅ got: 2
✅ got: 1
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: 3
+----------------------------------------------+
[📑 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-sYllGZ/lcov/veritas.info, /tmp/veritas-coverage-sYllGZ/html/index.html, /tmp/veritas-coverage-sYllGZ/lcov/coverage-summary.json, /tmp/veritas-coverage-sYllGZ/lcov/cobertura.xml, /tmp/veritas-coverage-sYllGZ/lcov/jacoco.xml
[🧪 test] calls the fixture
✅ got: pos
ℹ️ info - ran 1 tasks in: 69 seconds, 301121 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
+----------------------------------------------+
[📑 suite] Coverage measurement
[🧪 test] lines that ran are counted, lines that did not are zero
✅ got: 1
✅ got: /tmp/veritas-coverage-nhcwuh/veritas-coverage-fixture-20585.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
ℹ️ info - ran 4 tasks in: 181 seconds, -183102 microseconds
ℹ️ info - counted 1 file, 4 suites, 14 tests and 14 assertions
running unit tests from file: introduction.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 39.8% of 3711 lines (1476 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] Error and Exception Handling
[🧪 test] Valid summation should not throw an error
[⚙️ assert] Should not fail with a valid list of numbers
✅ success running without errors
[🧪 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))
+----------------------------------------------+
[📑 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)
+----------------------------------------------+
[📑 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
+----------------------------------------------+
[🚄 benchmark]
Computation of the factorial of 10000
[🏃 run #0]
% cumulative self
time seconds seconds procedure
50.00 58.15 0.02 veritas/unit/introduction.scm:174:0:factorial
50.00 0.02 0.02 ice-9/popen.scm:182:0:reap-pipes
0.00 0.03 0.00 veritas/veritas.scm:998:93
0.00 0.02 0.00 %after-gc-thunk
0.00 0.02 0.00 anon #x1c68e850
---
Sample count: 2
Total time: 0.031880948 seconds (0.010292344 seconds in GC)
[🏃 run #1]
% cumulative self
time seconds seconds procedure
100.00 62.99 0.04 veritas/unit/introduction.scm:174:0:factorial
0.00 0.04 0.00 veritas/veritas.scm:998:93
---
Sample count: 2
Total time: 0.035388568 seconds (0.008859826 seconds in GC)
ℹ️ info - ran 6 tasks in: 1 seconds, 343675 microseconds
ℹ️ info - counted 1 file, 5 suites, 9 tests and 15 assertions
running unit tests from file: timeout.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 40.0% of 3711 lines (1483 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] 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, -99678 microseconds
ℹ️ info - counted 1 file, 1 suite, 16 tests and 16 assertions
running unit tests from file: generator/simple.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 40.6% of 3711 lines (1507 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] Basic Suite
[🧪 test] Basic Generation
(F K M B 9 i Q & \ : e ,)
(< - U y 6 C W | Z p c k k d 8 ? ~ w ,)
✅ success running without errors
(7 69 7 32 38 20 1 14 3 10 62 3 42 32 29 33 14 23 42 18 42 11 21 38 2 12 24 34 29 1 3 15 39 43 10 9 39 1 53 62 27 19 1 42 0 31 0 17 37 3 5 6 11 17 1 3 37 32 5 5 7 22 40 9 11 46 69)
(7 36 0 0 3 2 31 2 44 6 40 3 75 38 65 18 6 68 19 24 34 53 6 43 13 5 48 72 71 0 36 5 21 6 42 5 6 19 24 90 34 25 18 26 0 5 41 83 2 24 18 21 0)
✅ success running without errors
19
16
✅ success running without errors
")Gd!L9)w2G9m8| {_-Z.!jeB:[Z[<sx}IqBp:#@^~v +Re{|BJAz>UBcq}\\10bHT"
"~s#Nk8xA2t&H3&&TU*,.=$5pBf~+AkyOm4ZqT!kVJtjdBtG,\"2hhk"
✅ success running without errors
ℹ️ info - ran 1 tasks in: 1 seconds, -147354 microseconds
ℹ️ info - counted 1 file, 1 suite, 1 test and 4 assertions
running unit tests from file: matchers.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 43.1% of 3711 lines (1598 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] 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
+----------------------------------------------+
[📑 suite] matcher edge cases and failures
[🧪 test] one-of
[pass] got: green
[fail] error, expect: (red green), got: blue
✅ 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] 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] vector containment
[pass] got: 2
[fail] error, expect: #(1 2 3), got: 9
✅ got: #t
✅ got: #f
[🧪 test] matches accepts a compiled regexp
[pass] got: hello
[fail] error, expect: #<regexp 7fa310e7f480>, 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] not-contains
[pass] got: 9
[fail] error, expect: (1 2), got: 2
✅ 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-matches
[pass] got: hello
[fail] error, expect: #<regexp 7fa313e29440>, got: hello
✅ got: #t
✅ got: #f
[🧪 test] hash tables are containers too
[pass] got: a
[fail] error, expect: #<hash-table 7fa3127b25e0 1/31>, got: b
✅ got: #t
✅ got: #f
+----------------------------------------------+
[📑 suite] passing matchers
[🧪 test] ranges and membership
✅ got: 5
✅ got: 0
✅ got: green
[🧪 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
[🧪 test] regular expressions
✅ got: hello
✅ got: abc
✅ got: hello
[🧪 test] containment
✅ got: b
✅ got: world
✅ got: 2
✅ got: z
✅ got: z
ℹ️ info - ran 3 tasks in: 3 seconds, -570409 microseconds
ℹ️ info - counted 1 file, 3 suites, 17 tests and 49 assertions
running unit tests from file: property.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 46.2% of 3711 lines (1713 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] properties
[🧪 test] a property that holds reports a passing assertion
✅ got: reverse of reverse is the original list
✅ got: 1
✅ got: #t
✅ got: #t
[🧪 test] a property that fails reports the shrunk input
✅ got: #f
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
[🧪 test] a property is a test task
✅ got: test
ℹ️ info - ran 1 tasks in: 1 seconds, 277288 microseconds
ℹ️ info - counted 1 file, 1 suite, 3 tests and 10 assertions
running unit tests from file: determinism.scm, entrypoint: spec
ℹ️ info - Code coverage: 50.5% of 3711 lines (1874 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] determinism
[🧪 test] a suite runs its tests in declaration order, run after run
+----------------------------------------------+
[📑 suite] flat
+----------------------------------------------+
[📑 suite] flat
✅ got: 3
✅ got: (0 1 2)
[🧪 test] a child that finishes first does not jump ahead of a slow one
✅ got: (waits signals)
[🧪 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, 203581 microseconds
ℹ️ info - counted 1 file, 1 suite, 5 tests and 5 assertions
running unit tests from file: snapshot.scm, entrypoint: spec
ℹ️ info - Code coverage: 51.4% of 3787 lines (1946 covered) in 16 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, 100372 microseconds
ℹ️ info - counted 1 file, 1 suite, 9 tests and 9 assertions
running unit tests from file: bdd.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 52.3% of 3787 lines (1980 covered) in 16 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: 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 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: 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: 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: 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
ℹ️ info - ran 6 tasks in: 2 seconds, -323232 microseconds
ℹ️ info - counted 1 file, 7 suites, 23 tests and 23 assertions
running unit tests from file: generator/more.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 54.5% of 3787 lines (2065 covered) in 16 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 generators
[🧪 test] a constant generator returns its value
✅ got: fixed
[🧪 test] vectors come from their element generator
✅ got: #t
[🧪 test] tuples hold one value per generator
✅ got: #t
[🧪 test] one-of picks from its choices
✅ got: #t
+----------------------------------------------+
[📑 suite] fake data generators
[🧪 test] beers and cars are names, not empty strings
✅ got: #t
✅ got: #t
✅ got: #t
✅ got: #t
[🧪 test] names have a first and a last part
✅ got: #t
✅ got: #t
[🧪 test] emails look like emails
✅ got: #t
✅ got: #t
✅ got: #t
[🧪 test] first and last names are strings
✅ got: #t
✅ got: #t
+----------------------------------------------+
[📑 suite] generator shrinkers
[🧪 test] a generator with no shrinker offers no candidates
✅ got: ()
[🧪 test] integers shrink toward zero
✅ got: #t
✅ got: #t
[🧪 test] lists shrink to shorter lists
✅ got: #t
✅ got: #t
✅ got: #t
[🧪 test] strings shrink to shorter strings
✅ got: #t
✅ got: #t
+----------------------------------------------+
[📑 suite] primitive generators
[🧪 test] reals stay inside their range
✅ got: #t
[🧪 test] booleans are booleans and both values appear
✅ got: #t
✅ got: #t
✅ got: #t
[🧪 test] naturals are inclusive and respect their bound
✅ got: #t
ℹ️ info - ran 4 tasks in: 1 seconds, 604427 microseconds
ℹ️ info - counted 1 file, 4 suites, 15 tests and 28 assertions
running unit tests from file: mock.scm, entrypoint: spec
ℹ️ info - Code coverage: 55.1% of 3851 lines (2123 covered) in 17 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, -76607 microseconds
ℹ️ info - counted 1 file, 1 suite, 7 tests and 7 assertions
running unit tests from file: shuffle.scm, entrypoint: spec
ℹ️ info - Code coverage: 55.4% of 3851 lines (2133 covered) in 17 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, -152190 microseconds
ℹ️ info - counted 1 file, 1 suite, 6 tests and 6 assertions
running unit tests from file: structural-match.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 55.5% of 3857 lines (2139 covered) in 17 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] structural matching
[🧪 test] name and timeout are accepted
[assert] a one element list
[pass] value (1) matches (x)
✅ got: #t
[🧪 test] a failure says what did not match
✅ got: #t
[🧪 test] predicates and literals work in a pattern
[pass] value (10 4) matches (a (? even?))
[fail] value (10 5) does not match (a (? even?))
✅ got: #t
✅ got: #f
[🧪 test] a fixed pattern rejects a longer list
[fail] value (1 2 3) does not match (a b)
✅ got: #f
[🧪 test] a rest pattern matches a list
[pass] value (1 2 3) matches (a b ...)
✅ got: #t
[🧪 test] a quoted pattern is read as the pattern itself
[pass] value (1 2) matches (a b)
✅ got: #t
ℹ️ info - ran 1 tasks in: 1 seconds, -61665 microseconds
ℹ️ info - counted 1 file, 1 suite, 6 tests and 7 assertions
running unit tests from file: numeric/a/num.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 55.8% of 3857 lines (2153 covered) in 17 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, -85173 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: lists.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 55.8% of 3857 lines (2153 covered) in 17 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] 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: ()
[🧪 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] 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
ℹ️ info - ran 1 tasks in: 1 seconds, -74052 microseconds
ℹ️ info - counted 1 file, 1 suite, 3 tests and 10 assertions
running unit tests from file: table.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 55.6% of 3875 lines (2156 covered) in 18 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] 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 = 2
[🧪 test] square is correct
✅ got: 4
+----------------------------------------------+
[📑 suite] n = 1
[🧪 test] square is correct
✅ got: 1
+----------------------------------------------+
[📑 suite] n = 3
[🧪 test] square is correct
✅ got: 9
+----------------------------------------------+
[📑 suite] integer addition
[🧪 test] 0 + 0 = 0
✅ got: 0
[🧪 test] -1 + 1 = 0
✅ got: 0
[🧪 test] 100 + -100 = 0
✅ got: 0
[🧪 test] 10 + 20 = 30
✅ got: 30
[🧪 test] 1 + 2 = 3
✅ got: 3
ℹ️ info - ran 5 tasks in: 1 seconds, 277274 microseconds
ℹ️ info - counted 1 file, 10 suites, 16 tests and 16 assertions
running unit tests from file: container.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 56.4% of 4044 lines (2282 covered) in 19 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] container-run forwards name, env, ports and volumes
✅ got: --name svc
✅ got: -e A=1
✅ got: -p 8080:80
✅ got: -v /tmp:/data
[🧪 test] wait-until raises once the timeout is exceeded
✅ raised an error as expected
+----------------------------------------------+
[📑 suite] container lifecycle against a fake runtime
[🧪 test] with-container cleans up after the thunk
✅ got: fake-container
✅ got: run -d alpine
rm -f fake-container
[🧪 test] wait-for-command succeeds
✅ got: #t
[🧪 test] container-logs returns logs
✅ got: line1
ready
[🧪 test] a yielding thunk keeps its container until it is done
[⚙️ assert] the container is still running after the thunk yielded
✅ got: #t
[🧪 test] run-command reports status and output
✅ got: (3 hi
)
[🧪 test] run-command! raises on failure
✅ raised an error as expected
[🧪 test] container-exec returns output
✅ got: exec-ok
[🧪 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] runtime detection honours the environment
✅ got: /tmp/veritas-fake-container-runtime.sh
✅ got: #t
[🧪 test] container-run returns an id
✅ got: fake-container
[🧪 test] wait-for-log succeeds on a matching line
✅ got: #t
[🧪 test] container-running? detects a running container
✅ got: #t
ℹ️ info - ran 2 tasks in: 2 seconds, -152349 microseconds
ℹ️ info - counted 1 file, 2 suites, 17 tests and 23 assertions
running unit tests from file: partition.scm, entrypoint: spec
ℹ️ info - Code coverage: 57.0% of 4044 lines (2305 covered) in 19 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, -204011 microseconds
ℹ️ info - counted 1 file, 1 suite, 4 tests and 4 assertions
running unit tests from file: references.scm, entrypoint: spec
ℹ️ info - Code coverage: 57.0% of 4044 lines (2305 covered) in 19 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, -135283 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 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 57.2% of 4044 lines (2315 covered) in 19 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] collection generators
[🧪 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
[🧪 test] generate-string yields printable strings
✅ got: #t
+----------------------------------------------+
[📑 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
ℹ️ info - ran 3 tasks in: 1 seconds, 56454 microseconds
ℹ️ info - counted 1 file, 3 suites, 8 tests and 8 assertions
running unit tests from file: counts.scm, entrypoint: spec
ℹ️ info - Code coverage: 57.9% of 4044 lines (2340 covered) in 19 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 nested tree counts its suites, its tests and its assertions
✅ got: 2
✅ got: 3
✅ got: 4
✅ got: 0
[🧪 test] the summary reads as one line
✅ got: 1 file, 2 suites, 3 tests and 4 assertions
[🧪 test] counts add up
✅ got: ((files . 0) (suites . 4) (tests . 6) (assertions . 8) (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 survive a trip through a file
✅ got: ((files . 1) (suites . 2) (tests . 3) (assertions . 4) (flaky . 0))
[🧪 test] a test that passed on a retry is counted as flaky
✅ got: 1
✅ got: 0
✅ got: flaky
ℹ️ info - ran 1 tasks in: 1 seconds, 74593 microseconds
ℹ️ info - counted 1 file, 1 suite, 7 tests and 13 assertions
running unit tests from file: retries.scm, entrypoint: spec
ℹ️ info - Code coverage: 58.1% of 4044 lines (2349 covered) in 19 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, 63773 microseconds
ℹ️ info - counted 1 file, 3 suites, 6 tests and 6 assertions
running unit tests from file: batteries.scm, entrypoint: spec
ℹ️ info - Code coverage: 58.1% of 4045 lines (2349 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/gnu/store/21afi1i81zcsj3g9fjxxaxrkfxm3gfjp-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/cli.scm
;;; newer than compiled /gnu/store/21afi1i81zcsj3g9fjxxaxrkfxm3gfjp-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
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/snapshot.scm
;;; newer than compiled /gnu/store/21afi1i81zcsj3g9fjxxaxrkfxm3gfjp-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/mock.scm
;;; newer than compiled /gnu/store/21afi1i81zcsj3g9fjxxaxrkfxm3gfjp-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/table.scm
;;; newer than compiled /gnu/store/21afi1i81zcsj3g9fjxxaxrkfxm3gfjp-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/container.scm
;;; newer than compiled /gnu/store/21afi1i81zcsj3g9fjxxaxrkfxm3gfjp-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 ./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
[🧪 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, 270610 microseconds
ℹ️ info - counted 1 file, 1 suite, 9 tests and 19 assertions
running unit tests from file: jobs.scm, entrypoint: spec
ℹ️ info - Code coverage: 62.4% of 4055 lines (2531 covered) in 23 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 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>
[🧪 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 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
ℹ️ info - ran 2 tasks in: 81 seconds, -578909 microseconds
ℹ️ info - counted 1 file, 2 suites, 13 tests and 13 assertions
running unit tests from file: nesting.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 62.6% of 4055 lines (2538 covered) in 23 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] table nesting
[🧪 test] 3 squared is 9
✅ got: 9
[🧪 test] 2 squared is 4
✅ got: 4
+----------------------------------------------+
[📑 suite] inner table
[🧪 test] 2 squared is 4
✅ got: 4
[🧪 test] 1 squared is 1
✅ got: 1
[🧪 test] 3 squared is 9
✅ got: 9
[🧪 test] 1 squared is 1
✅ got: 1
+----------------------------------------------+
[📑 suite] depth 1
[🧪 test] test at depth 1
✅ got: y
+----------------------------------------------+
[📑 suite] depth 2
[🧪 test] test at depth 2
✅ got: (a b)
+----------------------------------------------+
[📑 suite] depth 3
[🧪 test] test at depth 3
✅ got: #t
+----------------------------------------------+
[📑 suite] depth 4
[🧪 test] leaf test
✅ got: 24
ℹ️ info - ran 3 tasks in: 1 seconds, 158050 microseconds
ℹ️ info - counted 1 file, 9 suites, 11 tests and 11 assertions
running unit tests from file: traces.scm, entrypoint: spec
ℹ️ info - Code coverage: 63.6% of 4055 lines (2579 covered) in 23 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, -212096 microseconds
ℹ️ info - counted 1 file, 1 suite, 5 tests and 5 assertions
running unit tests from file: assertions.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
ℹ️ info - Code coverage: 64.5% of 4055 lines (2616 covered) in 23 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] 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] 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] 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] error assertions
[🧪 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-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 honours an expected error key
[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
+----------------------------------------------+
[📑 suite] latin aliases
[🧪 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] equality aliases
[pass] got: (1 2)
[fail] error, expect: (1 2), got: (1 3)
lists differ at index 1 (expected 2, got 3); lengths 2 and 2
[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] 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 7fa311b40f80>, got: hello
[pass] got: hello
[fail] error, expect: #<regexp 7fa311b40300>, 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] 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] equality, identity and value assertions
[🧪 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
[🧪 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
ℹ️ info - ran 6 tasks in: 3 seconds, 297491 microseconds
ℹ️ info - counted 1 file, 6 suites, 23 tests and 85 assertions
running unit tests from file: diff.scm, entrypoint: spec
ℹ️ info - shuffled with seed 761570342 (replay with VERITAS_SEED=761570342)
;;; 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
ℹ️ info - Code coverage: 65.2% of 4055 lines (2644 covered) in 23 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] value diffs
[🧪 test] values that are not lists, vectors or strings have no diff
✅ got: #f
✅ got: #f
[🧪 test] a list that is a prefix says which one is longer
✅ got: #t
✅ got: #t
[🧪 test] lists name the first differing index and both values
✅ got: #t
✅ got: #t
✅ got: #t
[🧪 test] assert-equal prints the diff after the values
✅ got: #t
✅ got: #t
[🧪 test] equal values have no diff
✅ got: #f
✅ got: #f
[🧪 test] strings name the first differing character
✅ got: #t
✅ got: #t
✅ got: #t
ℹ️ info - ran 1 tasks in: 1 seconds, -65956 microseconds
ℹ️ info - counted 1 file, 1 suite, 6 tests and 14 assertions
global totals: 33 files, 85 suites, 305 tests and 549 assertions
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))'