tl;dr: It looks good.
Long version:
So after few required compatibility tweaks I found that 4 extra tests fail with my implementation compared to the guile's on. Diff:
--- /tmp/log.guile 2024-08-11 07:33:03.383038595 +0000
+++ /tmp/log.wolfsden 2024-08-11 17:52:05.230543705 +0000
@@ -88,7 +88,7 @@
PASS: tests/elm.scm
PASS: tests/elm.scm
PASS: tests/elpa.scm
-PASS: tests/file-systems.scm
+FAIL: tests/file-systems.scm
PASS: tests/gem.scm
PASS: tests/gexp.scm
PASS: tests/git.scm
@@ -129,7 +129,7 @@
PASS: tests/scripts.scm
PASS: tests/search-paths.scm
PASS: tests/services.scm
-PASS: tests/services/file-sharing.scm
+FAIL: tests/services/file-sharing.scm
PASS: tests/services/configuration.scm
PASS: tests/services/configuration.scm
PASS: tests/services/configuration.scm
@@ -147,7 +147,7 @@
PASS: tests/store-database.scm
PASS: tests/store-deduplication.scm
PASS: tests/store-roots.scm
-PASS: tests/store.scm
+FAIL: tests/store.scm
PASS: tests/substitute.scm
PASS: tests/swh.scm
SKIP: tests/syscalls.scm
@@ -195,10 +195,10 @@
Testsuite summary for GNU Guix 1.3.0.63387-de714
============================================================================
# TOTAL: 2454
-# PASS: 2421
+# PASS: 2417
# SKIP: 25
# XFAIL: 2
-# FAIL: 6
+# FAIL: 10
# XPASS: 0
# ERROR: 0
============================================================================
Three of those extra fails are due to using string in test-error, in the spirit of:
(test-error "transmission-password-hash, salt value too long"
(transmission-password-hash
"transmission"
(make-string (+ %transmission-salt-length 1) #\a)))
I do not plan to include a special support for string error-type. It can (in the test file) be replaced with #t and the test will start passing. (I think it is likely the test author of the test just confused test-name and error-type in test-error.)
The 4th is this test:
(test-equal "store-path-package-name #f"
#f
(store-path-package-name
"/foo/bar/283gqy39v3g9dxjy26rynl0zls82fmcg-guile-2.0.7"))
Which relies on bug in guile's implementation. The specification says that if expression raises an exception, the test should fail. Guile just returns #f instead. So the test passes, since #f equals #f. This test should be switched to test-error.
Of course, this is something that should probably be double checked by someone else.
@graywolf Nice. Looks like these two Guix tests you mention should be fixed/adjusted, actually.
That it reveals issues with tests rather than with the framework itself looks like a good sign!