Subject: srfi-64: top-level test-group does not work

From: Tomas Volf <[email-masked]>
Date: Tue, 30 Jul 2024 21:51:58 +0200

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