On 30.07.2024 21:51, Tomas Volf wrote: > Hello, > > I think I found a bug in (srfi srfi-64) module shipped with GNU Guile. > > The test-group is defined as equivalent to: > > (if (not (test-to-skip% suite-name)) > (dynamic-wind > (lambda () (test-begin suite-name)) > (lambda () decl-or-expr ...) > (lambda () (test-end suite-name)))) > > `test-to-skip%' is not defined anywhere (great), however in the text we have > this sentence: > >> However, the entire group is skipped if it matched an active test-skip > Since active skip list is mandated to be a property of test runner, in case > the > test runner does not exist yet, there cannot be active skip list. Hence the > group should run. However: > > (use-modules (srfi srfi-64)) > (test-group "x" > #t) > > Leads to: > > Backtrace: > In ice-9/boot-9.scm: > 1752:10 6 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _) > In unknown file: > 5 (apply-smob/0 #<thunk 7fc490169300>) > In ice-9/boot-9.scm: > 724:2 4 (call-with-prompt _ _ #<procedure default-prompt-handler (k > proc)>) > In ice-9/eval.scm: > 619:8 3 (_ #(#(#<directory (guile-user) 7fc49016cc80>))) > In ice-9/boot-9.scm: > 2836:4 2 (save-module-excursion _) > 4388:12 1 (_) > In > /home/wolf/src/guile-wolfsden/tests/srfi-64/test-group-top-level.srfi64test: > 8:0 0 (_) > > > /home/wolf/src/guile-wolfsden/tests/srfi-64/test-group-top-level.srfi64test:8:0: > In procedure struct-vtable: Wrong type argument in position 1 (expecting > struct): #f > > Have a nice day > Tomas Volf > > I don't know how to fix this in the reference implementation that Guile uses, and don't care to find out because (as you seem to have noticed) the implementation is somewhat over-complicated in many parts.
But in any case, my implementation isn't affected by this bug, and your example works as intended with it. - Taylan