viewing logs
job succeeded
kracht
- time taken
- 8 seconds
- started at
- Fri Aug 15 14:54:59 2025
- updated at
- Fri Aug 15 14:55:07 2025
- log uuid
248926d8-e4e8-4fcf-a5bf-52b9d37f3922
inspect the job's lambda expression
(lambda()
`((task . ("make-test" "pull-and-deploy"))
(project . "kracht")
(branch-name . "trunk")
(clone-url . "https://codeberg.org/jjba23/kracht.git")))
starting new job...
-> running command: cd /etc/byggsteg/job-clone/kracht/trunk && uname -a
Linux wolk-jjba 6.15.9-gnu #1 SMP PREEMPT_DYNAMIC 1 x86_64 GNU/Linux
-> running command: cd /etc/byggsteg/job-clone/kracht/trunk && git pull
Updating cd145c4..be3feee
Fast-forward
.gitignore | 3 +-
.woodpecker/byggsteg.yaml | 6 +-
Makefile | 23 ++-
README.org | 4 +
manifest.scm | 33 +++-
test/kracht/prelude-test.scm | 376 -----------------------------------
test/kracht/test-runners.scm | 250 -----------------------
test/kracht/test-utils.scm | 28 ---
test/veritas/unit/prelude-spec.scm | 394 +++++++++++++++++++++++++++++++++++++
9 files changed, 454 insertions(+), 663 deletions(-)
delete mode 100644 test/kracht/prelude-test.scm
delete mode 100644 test/kracht/test-runners.scm
delete mode 100644 test/kracht/test-utils.scm
create mode 100644 test/veritas/unit/prelude-spec.scm
-> running command: cd /etc/byggsteg/job-clone/kracht/trunk && git log --name-status HEAD^..HEAD
commit be3feee1f20b933d4abce660c3415bb2f1ccc116
Merge: cd145c4 efe8996
Author: Josep Bigorra (Joe) <jjbigorra@gmail.com>
Date: Fri Aug 15 14:53:32 2025 +0200
Merge pull request '?????? refactor: Use Veritas for unit tests' (#1) from veritas into trunk
Reviewed-on: https://codeberg.org/jjba23/kracht/pulls/1
commit efe8996df67eeb9c7f26e1be67bd654dafeba812
Author: Josep Bigorra <jjbigorra@gmail.com>
Date: Fri Aug 15 14:52:59 2025 +0200
?????? refactor: Migrated all tests to Veritas
M test/veritas/unit/prelude-spec.scm
commit a886582393aa4f03bcb8cbd747684273e2e72e46
Author: Josep Bigorra <jjbigorra@gmail.com>
Date: Fri Aug 15 14:33:18 2025 +0200
???? docs: Add API docs
M .gitignore
M .woodpecker/byggsteg.yaml
M Makefile
M README.org
M manifest.scm
commit c80165b77e303f44b6799de45a67dc78f959a77c
Author: Josep Bigorra <jjbigorra@gmail.com>
Date: Sun Aug 10 21:31:51 2025 +0200
?????? refactor: Continue refactoring tests to Veritas
M test/veritas/unit/prelude-spec.scm
commit f980321acec60ae3c71d71a42fbd46bc31749e0e
Author: Josep Bigorra <jjbigorra@gmail.com>
Date: Sun Aug 10 21:18:42 2025 +0200
???? ci: Simplification of pipeline
M .woodpecker/byggsteg.yaml
commit 645308922d17199690dd76e43852510514271263
Merge: 2262bc0 cd145c4
Author: Josep Bigorra <jjbigorra@gmail.com>
Date: Sun Aug 10 21:18:00 2025 +0200
Merge branch 'trunk' of ssh://codeberg.org/jjba23/kracht into veritas
commit 2262bc0c143ac1773f57f0ae30628193bc31f5af
Author: Josep Bigorra <jjbigorra@gmail.com>
Date: Thu Jul 31 20:25:13 2025 +0200
?????? update: Update CI images, new standard
M .woodpecker/byggsteg.yaml
commit fc4859603d30b7435da99245bc72a54eed299d59
Author: Josep Bigorra <jjbigorra@gmail.com>
Date: Thu Jul 31 20:21:58 2025 +0200
?????? refactor: Use Veritas for unit tests
Begin introduction of Veritas test framework
Refactor existing tests
Keywords: #test #veritas
M Makefile
M manifest.scm
D test/kracht/prelude-test.scm
D test/kracht/test-runners.scm
D test/kracht/test-utils.scm
A test/veritas/unit/prelude-spec.scm
-> running command: cd /etc/byggsteg/job-clone/kracht/trunk && make test
make[1]: Entering directory '/etc/byggsteg/job-clone/kracht/trunk'
guix shell -m manifest.scm -- \
guile -L ./src \
-L ./test \
-c "((@ (veritas runner) run-tests))"
scanning directories for unit tests...
scanning present working directory for unit tests...
found unit tests: (prelude-spec.scm)
running unit tests from file: prelude-spec.scm, entrypoint: spec
1 + 1 = 2 and 2 + 2 = 4
[INFO] 3 + 3 = 6 and 4 + 4 = 8
[INFO] 5 + 5 = 10 and 6 + 6 = 12
[ERROR] fake message: something totally expected
warning! could not decode pair (): wrong-type-arg: (car Wrong type argument in position 1 (expecting pair): ~S (()) (()))
warning! could not decode pair (key-only): wrong-type-arg: (car Wrong type argument in position 1 (expecting pair): ~S (()) (()))
warning! could not decode pair (key1): wrong-type-arg: (car Wrong type argument in position 1 (expecting pair): ~S (()) (()))
warning! could not decode pair (key2): wrong-type-arg: (car Wrong type argument in position 1 (expecting pair): ~S (()) (()))
warning! could not decode pair (b): wrong-type-arg: (car Wrong type argument in position 1 (expecting pair): ~S (()) (()))
+----------------------------------------------+
[[1m? suite[0m] [1mAnother test suite[0m
[[1m? test[0m] [1mhtml-escape tests[0m
[[1m?? assert[0m] [1mC-cedilla[0m
[0;32m? pass - expect: ç, got: ç[0m
[[1m?? assert[0m] [1mMix of quotes[0m
[0;32m? pass - expect: He's a "guy"., got: He's a "guy".[0m
[[1m?? assert[0m] [1mAccented u[0m
[0;32m? pass - expect: ú, got: ú[0m
[[1m?? assert[0m] [1mAccented i[0m
[0;32m? pass - expect: í, got: í[0m
[[1m?? assert[0m] [1mDouble quote[0m
[0;32m? pass - expect: ", got: "[0m
[[1m?? assert[0m] [1mString with multiple occurrences[0m
[0;32m? pass - expect: He said, "It's a beautiful day!", got: He said, "It's a beautiful day!"[0m
[[1m?? assert[0m] [1mExample sentence escaped[0m
[0;32m? pass - expect: Ólá, múndo! Isto é um teste., got: Ólá, múndo! Isto é um teste.[0m
[[1m?? assert[0m] [1mN-tilde[0m
[0;32m? pass - expect: ñ, got: ñ[0m
[[1m?? assert[0m] [1mMultiple accents[0m
[0;32m? pass - expect: Árvore é bonita, got: Árvore é bonita[0m
[[1m?? assert[0m] [1mAccented E[0m
[0;32m? pass - expect: É, got: É[0m
[[1m?? assert[0m] [1mAccented o[0m
[0;32m? pass - expect: ó, got: ó[0m
[[1m?? assert[0m] [1mAccented U[0m
[0;32m? pass - expect: Ú, got: Ú[0m
[[1m?? assert[0m] [1mAccented O[0m
[0;32m? pass - expect: Ó, got: Ó[0m
[[1m?? assert[0m] [1mString with no special characters[0m
[0;32m? pass - expect: Hello, World!, got: Hello, World![0m
[[1m?? assert[0m] [1mEmpty string[0m
[0;32m? pass - expect: , got: [0m
[[1m?? assert[0m] [1mAccented I[0m
[0;32m? pass - expect: Í, got: Í[0m
[[1m?? assert[0m] [1mSingle quote[0m
[0;32m? pass - expect: ', got: '[0m
[[1m? test[0m] [1mRound-trip tests[0m
[[1m?? assert[0m] [1mExample sentence[0m
[0;32m? pass - expect: Ol?, m?ndo! Isto ? um teste., got: Ol?, m?ndo! Isto ? um teste.[0m
[[1m?? assert[0m] [1mUnescape then escape (assuming valid entities)[0m
[0;32m? pass - expect: <div>'test'</div>, got: <div>'test'</div>[0m
[[1m?? assert[0m] [1mEscape then unescape[0m
[0;32m? pass - expect: Hello, it's a "test" with ?????., got: Hello, it's a "test" with ?????.[0m
[[1m?? assert[0m] [1mUnescape then escape (for chars in alist)[0m
[0;32m? pass - expect: 'áéíóú", got: 'áéíóú"[0m
[[1m? test[0m] [1mlog tests[0m
[[1m?? assert[0m] [1mlog-message behaves as expected[0m
[0;32m? pass - expect: #t, got: #t[0m
[[1m?? assert[0m] [1mlog behaves as expected[0m
[0;32m? pass - expect: #t, got: #t[0m
[[1m?? assert[0m] [1mlog-error behaves as expected[0m
[0;32m? pass - expect: #t, got: #t[0m
[[1m?? assert[0m] [1mlog-info behaves as expected[0m
[0;32m? pass - expect: #t, got: #t[0m
[[1m? test[0m] [1mhtml-unescape tests[0m
[[1m?? assert[0m] [1mC-cedilla entity[0m
[0;32m? pass - expect: ?, got: ?[0m
[[1m?? assert[0m] [1mSingle apos entity[0m
[0;32m? pass - expect: ', got: '[0m
[[1m?? assert[0m] [1mMultiple entity occurrences[0m
[0;32m? pass - expect: It's a "quote"., got: It's a "quote".[0m
[[1m?? assert[0m] [1mAccented A entity[0m
[0;32m? pass - expect: ?, got: ?[0m
[[1m?? assert[0m] [1mSingle quot entity[0m
[0;32m? pass - expect: ", got: "[0m
[[1m?? assert[0m] [1mAccented a entity[0m
[0;32m? pass - expect: ?, got: ?[0m
[[1m?? assert[0m] [1mMix of entities[0m
[0;32m? pass - expect: He's a "guy"., got: He's a "guy".[0m
[[1m?? assert[0m] [1mEmpty string[0m
[0;32m? pass - expect: , got: [0m
[[1m?? assert[0m] [1mExample sentence unescaped[0m
[0;32m? pass - expect: ?l?, m?ndo! Isto ? um teste., got: ?l?, m?ndo! Isto ? um teste.[0m
[[1m?? assert[0m] [1mString with no entities[0m
[0;32m? pass - expect: Hello, World!, got: Hello, World![0m
[[1m? test[0m] [1msha tests[0m
[[1m?? assert[0m] [1mget-short-commit-sha works as expected[0m
[0;32m? pass - expect: #t, got: #t[0m
+----------------------------------------------+
[[1m? suite[0m] [1mPrelude test suite[0m
[[1m? test[0m] [1malist-from-url-encoded-body[0m
[[1m?? assert[0m] [1mspace character (%20)[0m
[0;32m? pass - expect: ((message . hello world)), got: ((message . hello world))[0m
[[1m?? assert[0m] [1mampersand character (%26)[0m
[0;32m? pass - expect: ((data . one&two)), got: ((data . one&two))[0m
[[1m?? assert[0m] [1mempty body[0m
[0;32m? pass - expect: (), got: ()[0m
[[1m?? assert[0m] [1msemicolon character (%3B)[0m
[0;32m? pass - expect: ((cookie . id;user)), got: ((cookie . id;user))[0m
[[1m?? assert[0m] [1mparentheses characters (%28, %29)[0m
[0;32m? pass - expect: ((func . f(x))), got: ((func . f(x)))[0m
[[1m?? assert[0m] [1mcurly braces characters (%7B, %7D)[0m
[0;32m? pass - expect: ((json . {data})), got: ((json . {data}))[0m
[[1m?? assert[0m] [1mdollar sign character (%24)[0m
[0;32m? pass - expect: ((amount . $100)), got: ((amount . $100))[0m
[[1m?? assert[0m] [1mmultiple keys, no equals sign[0m
[0;32m? pass - expect: ((key1 . ) (key2 . )), got: ((key1 . ) (key2 . ))[0m
[[1m?? assert[0m] [1mquestion mark character (%3F)[0m
[0;32m? pass - expect: ((query . what?)), got: ((query . what?))[0m
[[1m?? assert[0m] [1mmultiple key-value pairs[0m
[0;32m? pass - expect: ((name . Jane Doe) (age . 30)), got: ((name . Jane Doe) (age . 30))[0m
[[1m?? assert[0m] [1mhash/pound sign character (%23)[0m
[0;32m? pass - expect: ((tag . #important)), got: ((tag . #important))[0m
[[1m?? assert[0m] [1mempty key and empty value[0m
[0;32m? pass - expect: (), got: ()[0m
[[1m?? assert[0m] [1mcolon character (%3A)[0m
[0;32m? pass - expect: ((protocol . http:)), got: ((protocol . http:))[0m
[[1m?? assert[0m] [1mequals sign character (%3D)[0m
[0;32m? pass - expect: ((equation . x=y)), got: ((equation . x=y))[0m
[[1m?? assert[0m] [1municode characters (e.g., '?' - %C3%A9 in UTF-8)[0m
[0;32m? pass - expect: ((name . fianc?)), got: ((name . fianc?))[0m
[[1m?? assert[0m] [1mduplicate keys[0m
[0;32m? pass - expect: ((item . apple) (item . orange)), got: ((item . apple) (item . orange))[0m
[[1m?? assert[0m] [1mmixed valid and malformed pairs[0m
[0;32m? pass - expect: ((a . 1) (b . ) (c . 3)), got: ((a . 1) (b . ) (c . 3))[0m
[[1m?? assert[0m] [1mat symbol character (%40)[0m
[0;32m? pass - expect: ((email . test@example.com)), got: ((email . test@example.com))[0m
[[1m?? assert[0m] [1mvalue with no key (unlikely but possible from split)[0m
[0;32m? pass - expect: (( . value)), got: (( . value))[0m
[[1m?? assert[0m] [1mslash character (%2F)[0m
[0;32m? pass - expect: ((path . /usr/local)), got: ((path . /usr/local))[0m
[[1m?? assert[0m] [1mplus sign (%2B) - often used for space, but distinct from actual '+'[0m
[0;32m? pass - expect: ((code . a+b)), got: ((code . a+b))[0m
[[1m?? assert[0m] [1mexclamation mark character (%21)[0m
[0;32m? pass - expect: ((warning . danger!)), got: ((warning . danger!))[0m
[[1m?? assert[0m] [1msingle key, no equals sign[0m
[0;32m? pass - expect: ((key-only . )), got: ((key-only . ))[0m
[[1m?? assert[0m] [1mkeys and values with special characters (URL-encoded)[0m
[0;32m? pass - expect: ((param_1 . value with spaces) (param/2 . another_value!)), got: ((param_1 . value with spaces) (param/2 . another_value!))[0m
[[1m?? assert[0m] [1mcomma character (%2C)[0m
[0;32m? pass - expect: ((list . a,b,c)), got: ((list . a,b,c))[0m
[[1m?? assert[0m] [1msingle key value pair[0m
[0;32m? pass - expect: ((name . John Doe)), got: ((name . John Doe))[0m
[[1m?? assert[0m] [1mkey with no value[0m
[0;32m? pass - expect: ((key . )), got: ((key . ))[0m
[[1m?? assert[0m] [1msquare brackets characters (%5B, %5D)[0m
[0;32m? pass - expect: ((array . [1,2])), got: ((array . [1,2]))[0m
[[1m?? assert[0m] [1mbackslash character (%5C)[0m
[0;32m? pass - expect: ((winpath . C:\Users\)), got: ((winpath . C:\Users\))[0m
[[1m?? assert[0m] [1mmultiple encoded characters in one value[0m
[0;32m? pass - expect: ((complex . a&b=c?d e)), got: ((complex . a&b=c?d e))[0m
[[1m? test[0m] [1mstring-drop tests[0m
[[1m?? assert[0m] [1mstring-drop-first-last-line normal case[0m
[0;32m? pass - expect: middle line, got: middle line[0m
[[1m?? assert[0m] [1mstring-drop-first-last-line two lines[0m
[0;32m? pass - expect: , got: [0m
[[1m?? assert[0m] [1mstring-drop-first-last normal case[0m
[0;32m? pass - expect: ell, got: ell[0m
[[1m?? assert[0m] [1mstring-drop-first-last-line single line[0m
[0;32m? pass - expect: , got: [0m
[[1m?? assert[0m] [1mstring-drop-first-last empty string[0m
[0;32m? pass - expect: , got: [0m
[[1m?? assert[0m] [1mstring-drop-first-last-line empty input[0m
[0;32m? pass - expect: , got: [0m
[[1m?? assert[0m] [1mstring-drop-first-last single char[0m
[0;32m? pass - expect: a, got: a[0m
[[1m?? assert[0m] [1mstring-drop-first-last two chars[0m
[0;32m? pass - expect: ab, got: ab[0m
[[1m? test[0m] [1mnon-empty-string? tests[0m
[[1m?? assert[0m] [1mnon-empty-string? with #f[0m
[0;32m? pass - expect: #f, got: #f[0m
[[1m?? assert[0m] [1mnon-empty-string? with #t[0m
[0;32m? pass - expect: #t, got: #t[0m
[[1m?? assert[0m] [1mnon-empty-string? with empty string[0m
[0;32m? pass - expect: #f, got: #f[0m
[[1m?? assert[0m] [1mnon-empty-string? with non-empty string[0m
[0;32m? pass - expect: #t, got: #t[0m
[[1m?? assert[0m] [1mnon-empty-string? with whitespace[0m
[0;32m? pass - expect: #t, got: #t[0m
[[1m? test[0m] [1massoc-ref-or-empty-str tests[0m
[[1m?? assert[0m] [1mkey found - string value[0m
[0;32m? pass - expect: hello, got: hello[0m
[[1m?? assert[0m] [1mkey found - non-string value[0m
[0;32m? pass - expect: 2, got: 2[0m
[[1m?? assert[0m] [1mempty alist[0m
[0;32m? pass - expect: , got: [0m
[[1m?? assert[0m] [1mkey not found[0m
[0;32m? pass - expect: , got: [0m
[[1m?? assert[0m] [1mkey is last element[0m
[0;32m? pass - expect: value, got: value[0m
[[1m?? assert[0m] [1mkey is first element[0m
[0;32m? pass - expect: value, got: value[0m
[[1m? test[0m] [1mempty-string? tests[0m
[[1m?? assert[0m] [1mempty-string? with non-empty string[0m
[0;32m? pass - expect: #f, got: #f[0m
[[1m?? assert[0m] [1mempty-string? with empty string[0m
[0;32m? pass - expect: #t, got: #t[0m
[[1m?? assert[0m] [1mempty-string? with whitespace[0m
[0;32m? pass - expect: #f, got: #f[0m
[1m?? info - ran 2 tasks in: 0 seconds, 8219 microseconds[0m
finished running tests
make[1]: Leaving directory '/etc/byggsteg/job-clone/kracht/trunk'
-> running command: cd /etc/byggsteg/job-clone/kracht/trunk && sudo make deploy
rm -rfv doc
guix shell -m manifest.scm -- documenta api ./src/kracht
API documentation saved to doc/api
guix shell -m manifest.scm -- texi2any -v --html \
--css-ref="https://jointhefreeworld.org/static-assets/api-docs/css/style.css" ./doc/api/index.texi
mv ./index ./doc/api-dist
rm -rfv "/srv/http/jointhefreeworld.org"/api-docs/kracht
'/srv/http/jointhefreeworld.org/api-docs/kracht/kracht_005fprelude.html' is verwijderd
'/srv/http/jointhefreeworld.org/api-docs/kracht/API.html' is verwijderd
map '/srv/http/jointhefreeworld.org/api-docs/kracht' is verwijderd
mkdir -p "/srv/http/jointhefreeworld.org"/api-docs/kracht
mv doc/api-dist/* "/srv/http/jointhefreeworld.org"/api-docs/kracht/
rm -rfv doc
map 'doc/api-dist' is verwijderd
'doc/api/index.texi' is verwijderd
map 'doc/api' is verwijderd
map 'doc' is verwijderd