;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-0VldZp/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-0VldZp/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-3Z88cy/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-3Z88cy/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-tIaSnY/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-tIaSnY/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-8RXmNF/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-8RXmNF/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-HGlO5S/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-HGlO5S/persona.scm.go
Backtrace:
In ice-9/boot-9.scm:
1784:12 6 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
In unknown file:
5 (apply-smob/0 #<thunk 7f91b5316320>)
In ice-9/boot-9.scm:
733:2 4 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>)
In ice-9/eval.scm:
619:8 3 (_ #(#(#<directory (guile-user) 7f91b5319c80>)))
In ice-9/command-line.scm:
187:19 2 (_ #<input: custom-port 7f91b53003f0>)
In unknown file:
1 (eval ((@ (iter-vitae main) main)) #<directory (guile-user) 7f91b5319c80>)
In iter-vitae/main.scm:
54:12 0 (main #:args _)
iter-vitae/main.scm:54:12: In procedure main:
The --file option is required (or use --init to create a persona)
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-S32WCs/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-S32WCs/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-LmvMmu/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-LmvMmu/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-BGyODv/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-BGyODv/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-A4Jt50/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-A4Jt50/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-VECtyZ/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-VECtyZ/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-zgAk9o/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-zgAk9o/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-obRqsQ/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-obRqsQ/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-tb4acC/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-tb4acC/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-MVHDsp/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-MVHDsp/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-YyJ4HD/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-YyJ4HD/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-41EsFJ/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-41EsFJ/persona.scm.go
Backtrace:
In ice-9/boot-9.scm:
1784:12 7 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
In unknown file:
6 (apply-smob/0 #<thunk 7f62b6ef6320>)
In ice-9/boot-9.scm:
733:2 5 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>)
In ice-9/eval.scm:
619:8 4 (_ #(#(#<directory (guile-user) 7f62b6ef9c80>)))
In ice-9/command-line.scm:
187:19 3 (_ #<input: custom-port 7f62b6ee03f0>)
In unknown file:
2 (eval ((@ (iter-vitae renderer) render-curriculum) #:locale (quote en) #:destination "/tmp/iter-vitae-test-svHzmF/dist" #:resources "/tmp/iter-vitae-test-svHzmF/resources" #:format "html" #:all-locales? #f #:all-themes? #f #:file "/tmp/iter-vitae-test-svHzmF/missing.scm") #<directory (guile-user) 7f62b6ef9c80>)
In iter-vitae/renderer.scm:
176:15 1 (render-curriculum #:locale _ #:destination _ #:resources _ #:file _ #:format _ #:all-locales? _ #:all-themes? _)
In unknown file:
0 (canonicalize-path "/tmp/iter-vitae-test-svHzmF/missing.scm")
ERROR: In procedure canonicalize-path:
In procedure canonicalize-path: No such file or directory
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-IiNF49/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-IiNF49/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-YFuatL/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-YFuatL/persona.scm.go
;;; note: source file /tmp/iter-vitae-test-YFuatL/persona.scm
;;; newer than compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-YFuatL/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-YFuatL/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-YFuatL/persona.scm.go
;;; note: source file /tmp/iter-vitae-test-YFuatL/persona.scm
;;; newer than compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-YFuatL/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-YFuatL/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-YFuatL/persona.scm.go
;;; note: source file /tmp/iter-vitae-test-YFuatL/persona.scm
;;; newer than compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-YFuatL/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-YFuatL/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-YFuatL/persona.scm.go
Backtrace:
In ice-9/boot-9.scm:
1784:12 6 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
In unknown file:
5 (apply-smob/0 #<thunk 7fb26bb16320>)
In ice-9/boot-9.scm:
733:2 4 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>)
In ice-9/eval.scm:
619:8 3 (_ #(#(#<directory (guile-user) 7fb26bb19c80>)))
In ice-9/command-line.scm:
187:19 2 (_ #<input: custom-port 7fb26bb003f0>)
In unknown file:
1 (eval ((@ (iter-vitae renderer) render-curriculum) #:locale (quote en) #:destination "/tmp/iter-vitae-test-VDuIma/dist" #:resources "/tmp/iter-vitae-test-VDuIma/resources" #:format "text" #:all-locales? #f #:all-themes? #t #:file "/tmp/iter-vitae-test-VDuIma/persona.scm") #<directory (guile-user) 7fb26bb19c80>)
In iter-vitae/renderer.scm:
192:6 0 (render-curriculum #:locale _ #:destination _ #:resources _ #:file _ #:format _ #:all-locales? _ #:all-themes? _)
iter-vitae/renderer.scm:192:6: In procedure render-curriculum:
--all-themes cannot be combined with --format text
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-Gr08Yr/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-Gr08Yr/persona.scm.go
Backtrace:
In ice-9/boot-9.scm:
1784:12 6 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
In unknown file:
5 (apply-smob/0 #<thunk 7f8223116320>)
In ice-9/boot-9.scm:
733:2 4 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>)
In ice-9/eval.scm:
619:8 3 (_ #(#(#<directory (guile-user) 7f8223119c80>)))
In ice-9/command-line.scm:
187:19 2 (_ #<input: custom-port 7f82231003f0>)
In unknown file:
1 (eval ((@ (iter-vitae renderer) render-curriculum) #:locale (quote en) #:destination "/tmp/iter-vitae-test-3kt6zC/dist" #:resources "/tmp/iter-vitae-test-3kt6zC/resources" #:format "docx" #:all-locales? #f #:all-themes? #f #:file "/tmp/iter-vitae-test-3kt6zC/persona.scm") #<directory (guile-user) 7f8223119c80>)
In iter-vitae/renderer.scm:
187:29 0 (render-curriculum #:locale _ #:destination _ #:resources _ #:file _ #:format _ #:all-locales? _ #:all-themes? _)
iter-vitae/renderer.scm:187:29: In procedure render-curriculum:
Unknown output format; expected 'html, 'text or 'pdf: "docx"
scanning directories for unit tests...
scanning present working directory for unit tests...
shuffled the files with seed 83276691 (replay with VERITAS_SEED=83276691)
found unit tests: (iter-vitae/main.scm iter-vitae/text.scm iter-vitae/renderer.scm iter-vitae/html.scm iter-vitae/prelude.scm iter-vitae/themes.scm iter-vitae/wizard.scm)
running unit tests from file: iter-vitae/main.scm, entrypoint: spec
ℹ️ info - shuffled with seed 83276691 (replay with VERITAS_SEED=83276691)
+----------------------------------------------+
[📑 suite] main entrypoint
[🧪 test] uses ./resources when --resources is omitted
✅ got: 0
✅ got: #t
[🧪 test] honours the locale argument
✅ got: 0
✅ got: locale: nl
✅ got: Ingenieur
✅ got: >Engineer<
[🧪 test] renders a curriculum from command line arguments
✅ got: 0
✅ got: #t
✅ got: Iter Vitae: Generate
✅ got: Completed rendering
✅ got: ("guile"
[🧪 test] renders every persona locale with --all-locales
✅ got: 0
✅ got: #t
✅ got: #t
✅ got: #f
✅ got: Ada Voorbeeld
✅ got: rendering ef-cyprus for nl
[🧪 test] writes a text resume with --format text
✅ got: 0
✅ got: #t
✅ got: #f
✅ got: PROFESSIONAL SUMMARY
✅ got: format: text
✅ got: Completed rendering
[🧪 test] reports a failure when --file is missing
✅ got: #f
✅ got: #f
ℹ️ info - ran 1 tasks in: 1 seconds, 198959 microseconds
running unit tests from file: iter-vitae/text.scm, entrypoint: spec
ℹ️ info - shuffled with seed 83276691 (replay with VERITAS_SEED=83276691)
+----------------------------------------------+
[📑 suite] plain-text resume
[🧪 test] omits sections the persona did not configure
✅ success running without errors
[🧪 test] localizes headings
✅ success running without errors
[🧪 test] wraps long bullets without duplicating words
✅ success running without errors
[🧪 test] contains no markup, CSS or HTML entities
✅ success running without errors
[🧪 test] keeps contact details as visible text
✅ success running without errors
[🧪 test] uses one blank line between blocks
✅ success running without errors
[🧪 test] an empty persona produces an empty file
✅ success running without errors
[🧪 test] normalizes smart punctuation and emoji
✅ success running without errors
[🧪 test] renders every configured section
✅ success running without errors
ℹ️ info - ran 1 tasks in: 0 seconds, 150624 microseconds
running unit tests from file: iter-vitae/renderer.scm, entrypoint: spec
ℹ️ info - shuffled with seed 83276691 (replay with VERITAS_SEED=83276691)
+----------------------------------------------+
[📑 suite] renderer
[🧪 test] writes index.html and clears stale output
✅ success running without errors
[🧪 test] renders one text resume per persona locale
✅ success running without errors
[🧪 test] accepts resource paths containing spaces
✅ success running without errors
[🧪 test] renders one directory per persona locale
✅ success running without errors
[🧪 test] escapes persona text in the generated file
✅ success running without errors
[🧪 test] never evaluates shell metacharacters in the destination
✅ success running without errors
[🧪 test] embeds a local profile picture relative to the persona
✅ success running without errors
[🧪 test] text output ignores profile pictures
✅ success running without errors
[🧪 test] writes resume.txt in plain-text format
✅ success running without errors
[🧪 test] all-locales falls back to the requested locale
✅ success running without errors
[🧪 test] renders every theme to a PDF with the configured browser
✅ success running without errors
[🧪 test] a missing persona file is reported as a failure
✅ success running without errors
[🧪 test] plain-text mode ignores missing theme resources
✅ success running without errors
[🧪 test] renders the persona with every theme
✅ success running without errors
[🧪 test] rejects --all-themes with plain text before clearing output
✅ success running without errors
[🧪 test] accepts destination names containing spaces
✅ success running without errors
[🧪 test] an unknown output format fails without clearing the destination
✅ success running without errors
ℹ️ info - ran 1 tasks in: 6 seconds, 116184 microseconds
running unit tests from file: iter-vitae/html.scm, entrypoint: spec
ℹ️ info - shuffled with seed 83276691 (replay with VERITAS_SEED=83276691)
+----------------------------------------------+
[📑 suite] SXML serializer
[🧪 test] elements and text
✅ got: <p>hello</p>
[🧪 test] empty and false children are ignored
✅ got: <p></p>
[🧪 test] *TOP* serializes its children
✅ got: <p>x</p>
[🧪 test] numbers are serialized as text
✅ got: <p>42</p>
[🧪 test] style and script bodies stay raw
✅ got: <style>a > b { color: red; }</style>
✅ got: <script>if (a < b) go();</script>
[🧪 test] nested elements and nodelists
✅ got: <div><p>one</p><p>two</p></div>
[🧪 test] the doctype remains raw while element text is escaped
✅ got: <!DOCTYPE html><html><body>a & b</body></html>
[🧪 test] an element without a body is self-closing
✅ got: <meta charset="UTF-8" />
[🧪 test] attributes are escaped
✅ got: <a href="x?a=1&b=2" title="say "hi"">link</a>
[🧪 test] text is escaped
✅ got: <p>a & b < c > d</p>
+----------------------------------------------+
[📑 suite] curriculum page
[🧪 test] existing themes keep the documented inline HTML
✅ success running without errors
[🧪 test] ef-cyprus renders the complete persona
✅ success running without errors
[🧪 test] fundamental renders without external theme assets
✅ success running without errors
[🧪 test] ats renders plain text with conventional headings
✅ success running without errors
[🧪 test] fatum renders the same persona with its own theme
✅ success running without errors
+----------------------------------------------+
[📑 suite] persona options
[🧪 test] the requested locale is used
✅ success running without errors
[🧪 test] the all entry wins over the locale
✅ success running without errors
[🧪 test] an unknown theme falls back to ef-cyprus
✅ success running without errors
[🧪 test] without a job-title-link the title is not an anchor
✅ success running without errors
[🧪 test] empty optional sections are omitted
✅ success running without errors
[🧪 test] missing personal links produce no empty anchors
✅ success running without errors
[🧪 test] missing resource files raise instead of silently rendering
✅ success catching error: system-error: (open-file ~A: ~S (No such file or directory /does/not/exist/css/iter-vitae.olive.min.css) (2))
ℹ️ info - ran 3 tasks in: 0 seconds, 172956 microseconds
running unit tests from file: iter-vitae/prelude.scm, entrypoint: spec
ℹ️ info - shuffled with seed 83276691 (replay with VERITAS_SEED=83276691)
+----------------------------------------------+
[📑 suite] locale-aware alist lookup
[🧪 test] a missing translation becomes an empty string
✅ got:
[🧪 test] #f becomes an empty string
✅ got:
[🧪 test] the all entry wins over a locale entry
✅ got: Everywhere
[🧪 test] the requested locale is used when all is absent
✅ got: English
[🧪 test] an empty alist becomes an empty string
✅ got:
+----------------------------------------------+
[📑 suite] persona accessors
[🧪 test] contact details are read by key
✅ got: ada@example.org
✅ got: +31 6 1234 5678
[🧪 test] missing contact details are #f
✅ got: #f
✅ got: #f
[🧪 test] personal links are read by key
✅ got: blog.example.org
✅ got: https://codeberg.org/ada
[🧪 test] missing and empty personal links are #f
✅ got: #f
✅ got: #f
✅ got: #f
+----------------------------------------------+
[📑 suite] filesystem helpers
[🧪 test] deleting a missing path is a no-op
✅ success running without errors
[🧪 test] make-directories creates nested paths
✅ got: #f
✅ got: #t
✅ got: directory
✅ success running without errors
[🧪 test] delete-file-tree removes files and nested directories
✅ got: #t
✅ got: #f
✅ got: #f
+----------------------------------------------+
[📑 suite] resource loading
[🧪 test] the asset library keys assets by their full path
✅ got: ef-test-marker
✅ got: fatum-test-marker
[🧪 test] a missing stylesheet raises
✅ success catching error: system-error: (open-file ~A: ~S (No such file or directory /tmp/iter-vitae-test-Jg3ron/css/missing.css) (2))
[🧪 test] stylesheets are read from the requested resources directory
✅ got: .ef-test-marker > span
✅ got: #f
✅ got: #t
+----------------------------------------------+
[📑 suite] URL helpers
[🧪 test] an existing https scheme is preserved
✅ got: https://example.org
[🧪 test] empty and non-string links are #f
✅ got: #f
✅ got: #f
✅ got: #f
✅ got: #f
[🧪 test] bare hosts get an https scheme
✅ got: https://example.org
[🧪 test] empty phone numbers are #f
✅ got: #f
✅ got: #f
[🧪 test] an existing http scheme is preserved
✅ got: http://example.org
[🧪 test] phone numbers become tel URLs
✅ got: tel:+31612345678
✅ got: tel:0031612345678
[🧪 test] surrounding whitespace is removed
✅ got: https://example.org
+----------------------------------------------+
[📑 suite] date ranges
[🧪 test] ordinary ranges and whitespace are preserved
✅ got: 2020 - now
[🧪 test] the Scheme range separator becomes an en dash
✅ got: 2020 – now
✅ got: 2020 – now
[🧪 test] empty and non-string dates become an empty string
✅ got:
✅ got:
✅ got:
+----------------------------------------------+
[📑 suite] language levels
[🧪 test] unknown levels and missing scales become #f
✅ got: #f
✅ got: #f
[🧪 test] labels follow the requested document locale
✅ got: Native
✅ got: Moedertaal
+----------------------------------------------+
[📑 suite] logging
[🧪 test] log-error prefixes the message
✅ got:
[error] boom
[🧪 test] log-info formats its arguments
✅ got:
hello 42
[🧪 test] log formats its arguments
✅ got:
1 + 2 = 3
+----------------------------------------------+
[📑 suite] CSS class helpers
[🧪 test] class names are sorted, de-duplicated and joined
✅ got: a b c
✅ got: flex gap-1
[🧪 test] a single class name is unchanged
✅ got: hidden
[🧪 test] #f becomes an empty string
✅ got:
[🧪 test] an empty class list becomes an empty string
✅ got:
+----------------------------------------------+
[📑 suite] plain text
[🧪 test] inline tags are stripped
✅ got: greenest moment of the day
[🧪 test] plain text is left untouched
✅ got: C, Lisp & Scheme
[🧪 test] entities are decoded exactly once
✅ got: —
[🧪 test] common named entities are decoded
✅ got: a – b — c … “q” • 5° €
[🧪 test] HTML entities are decoded
✅ got: Ada & Bob <CEO> "quoted" 'single'
[🧪 test] comparisons are not mistaken for tags
✅ got: latency < 50 > budget
[🧪 test] non-strings and empty strings become empty text
✅ got:
✅ got:
✅ got:
+----------------------------------------------+
[📑 suite] profile pictures
[🧪 test] relative paths use the persona directory
✅ got: data:image/svg+xml;base64,
[🧪 test] missing files and unsupported formats fail loudly
✅ success catching error: misc-error: (#f Profile picture not found: ~S (/tmp/iter-vitae-test-SFnrvS/missing.png) #f)
✅ success catching error: misc-error: (#f Unsupported profile picture format; use PNG, JPEG, WebP, GIF, AVIF or SVG: ~S (/tmp/iter-vitae-test-SFnrvS/portrait.bmp) #f)
[🧪 test] persona-profile-picture trims and validates the field
✅ got: https://example.org/me.png
✅ got: #f
[🧪 test] unknown URI schemes are rejected
✅ success catching error: misc-error: (#f Profile picture must use http(s), data:image or a local path: ~S (ftp://example.org/portrait.png) #f)
[🧪 test] empty and non-string values are ignored
✅ got: #f
✅ got: #f
✅ got: #f
[🧪 test] a local image becomes a self-contained data URI
✅ got: data:image/png;base64,aGVsbG8=
[🧪 test] remote URLs and data URIs pass through untouched
✅ got: https://example.org/portrait.png
✅ got: data:image/png;base64,abc
+----------------------------------------------+
[📑 suite] settings
[🧪 test] a default setting is visible
✅ got: ef-cyprus
[🧪 test] an unknown setting is #f instead of raising
✅ success running without errors
✅ got: #f
[🧪 test] job-title-link has an empty default
✅ got: ()
[🧪 test] the default language scale uses five standard levels
✅ got: Elementary
✅ got: Full professional
✅ got: Professional working
✅ got: Native or bilingual
ℹ️ info - ran 12 tasks in: 0 seconds, 132886 microseconds
running unit tests from file: iter-vitae/themes.scm, entrypoint: spec
ℹ️ info - shuffled with seed 83276691 (replay with VERITAS_SEED=83276691)
+----------------------------------------------+
[📑 suite] fatum theme
[🧪 test] escapes persona text inside its own template
✅ success running without errors
[🧪 test] renders every scheduled section
✅ success running without errors
[🧪 test] renders all configured personal links
✅ success running without errors
[🧪 test] supports a persona without optional sections
✅ success running without errors
[🧪 test] prints without the screen card or split entries
✅ success running without errors
+----------------------------------------------+
[📑 suite] ats theme
[🧪 test] renders contact details as selectable text
✅ success running without errors
[🧪 test] keeps the document single-column and free of parser traps
✅ success running without errors
[🧪 test] removes emoji and normalizes date separators
✅ success running without errors
[🧪 test] strips inline HTML and escapes the remaining text
✅ success running without errors
[🧪 test] omits sections the persona did not configure
✅ success running without errors
[🧪 test] renders skills as a scan-friendly list
✅ success running without errors
[🧪 test] has no decorative footer or attribution
✅ success running without errors
[🧪 test] uses the conventional section headings ATS parsers expect
✅ success running without errors
[🧪 test] localizes the standard headings
✅ success running without errors
+----------------------------------------------+
[📑 suite] ef-cyprus theme
[🧪 test] renders every scheduled section
✅ success running without errors
[🧪 test] omits sections the persona did not configure
✅ success running without errors
[🧪 test] prints with the green accent and no split entries
✅ success running without errors
[🧪 test] uses only configured footer links
✅ success running without errors
[🧪 test] renders the complete contact block;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-P8O5Fz/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-P8O5Fz/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-xs8cbL/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-xs8cbL/persona.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /tmp/iter-vitae-test-CD6o6H/persona.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/tmp/iter-vitae-test-CD6o6H/persona.scm.go
✅ success running without errors
+----------------------------------------------+
[📑 suite] fundamental theme
[🧪 test] includes print rules
✅ success running without errors
[🧪 test] keeps its inline styling
✅ success running without errors
[🧪 test] renders no footer links when none are configured
✅ success running without errors
[🧪 test] renders every scheduled section
✅ success running without errors
[🧪 test] labels footer links instead of echoing the URL
✅ success running without errors
+----------------------------------------------+
[📑 suite] shared theme contract
[🧪 test] face variables expand into utility classes
✅ success running without errors
[🧪 test] every theme declares the document language
✅ success running without errors
[🧪 test] every theme renders all address lines and languages
✅ success running without errors
[🧪 test] every theme normalizes the job-title link
✅ success running without errors
ℹ️ info - ran 5 tasks in: 0 seconds, 815235 microseconds
running unit tests from file: iter-vitae/wizard.scm, entrypoint: spec
ℹ️ info - shuffled with seed 83276691 (replay with VERITAS_SEED=83276691)
+----------------------------------------------+
[📑 suite] persona wizard
[🧪 test] does not overwrite an existing persona without consent
✅ success running without errors
[🧪 test] writes a persona the renderer can load
✅ success running without errors
[🧪 test] renders the sections that were answered
✅ success running without errors
[🧪 test] does not write when the user declines at the summary
✅ success running without errors
[🧪 test] asks for the languages when --locales is absent
✅ success running without errors
[🧪 test] writes translated lists, jobs and language names
✅ success running without errors
[🧪 test] accepts both numbers and names for the proficiency scale
✅ success running without errors
[🧪 test] parses and validates locale lists
✅ success running without errors
[🧪 test] writes translations and renders the selected locale
✅ success running without errors
ℹ️ info - ran 1 tasks in: 3 seconds, -131029 microseconds
finished running tests
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling ./test/veritas/unit/iter-vitae/main.scm
;;; compiling ./src/iter-vitae/prelude.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/src/iter-vitae/prelude.scm.go
;;; compiling ./test/veritas/support.scm
;;; compiling ./src/iter-vitae/defaults.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/src/iter-vitae/defaults.scm.go
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/test/veritas/support.scm.go
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/test/veritas/unit/iter-vitae/main.scm.go
;;; compiling ./test/veritas/unit/iter-vitae/text.scm
;;; compiling ./src/iter-vitae/text.scm
;;; compiling ./src/iter-vitae/theme/ats.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/src/iter-vitae/theme/ats.scm.go
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/src/iter-vitae/text.scm.go
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/test/veritas/unit/iter-vitae/text.scm.go
;;; compiling ./test/veritas/unit/iter-vitae/renderer.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/test/veritas/unit/iter-vitae/renderer.scm.go
;;; compiling ./test/veritas/unit/iter-vitae/html.scm
;;; compiling ./src/iter-vitae/html.scm
;;; compiling ./src/iter-vitae/theme/registry.scm
;;; compiling ./src/iter-vitae/theme/ef-cyprus.scm
;;; compiling ./src/iter-vitae/theme/ef-cyprus-faces.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/src/iter-vitae/theme/ef-cyprus-faces.scm.go
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/src/iter-vitae/theme/ef-cyprus.scm.go
;;; compiling ./src/iter-vitae/theme/fatum.scm
;;; compiling ./src/iter-vitae/theme/fatum-faces.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/src/iter-vitae/theme/fatum-faces.scm.go
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/src/iter-vitae/theme/fatum.scm.go
;;; compiling ./src/iter-vitae/theme/fundamental.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/src/iter-vitae/theme/fundamental.scm.go
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/src/iter-vitae/theme/registry.scm.go
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/src/iter-vitae/html.scm.go
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/test/veritas/unit/iter-vitae/html.scm.go
;;; compiling ./test/veritas/unit/iter-vitae/prelude.scm
WARNING: (veritas unit iter-vitae prelude): imported module (iter-vitae prelude) overrides core binding `log'
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/test/veritas/unit/iter-vitae/prelude.scm.go
WARNING: (veritas unit iter-vitae prelude): imported module (iter-vitae prelude) overrides core binding `log'
;;; compiling ./test/veritas/unit/iter-vitae/themes.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/test/veritas/unit/iter-vitae/themes.scm.go
;;; compiling ./test/veritas/unit/iter-vitae/wizard.scm
;;; compiling ./src/iter-vitae/wizard.scm
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/src/iter-vitae/wizard.scm.go
;;; compiled /root/.cache/guile/ccache/3.0-LE-8-4.7/etc/byggsteg/job-clone/iter-vitae/trunk/test/veritas/unit/iter-vitae/wizard.scm.go
--------------------------------------------------------------
Maak 0.14.0: the infinitely extensible command runner
Loading tasks from Maak file: /etc/byggsteg/job-clone/iter-vitae/trunk/maak.scm
Executing Maak tasks: test
--------------------------------------------------------------
=> Running Maak task: test
Run the Veritas unit test suite.
Execute command:
env VERITAS_TEST_TYPE=unit VERITAS_RUN_BENCHMARKS=false guix shell -m manifest.scm -- guile --fresh-auto-compile -L ./src -L ./test -c '((@ (veritas runner) run-tests))'
Executing: env VERITAS_TEST_TYPE=unit VERITAS_RUN_BENCHMARKS=false guix shell -m manifest.scm -- guile --fresh-auto-compile -L ./src -L ./test -c '((@ (veritas runner) run-tests))'