Subject: srfi-64: test-end does not uninstall runner if on-final was modified

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 specification for test-end says:

> Additionally, if the matching test-begin installed a new test-runner, then the
> test-end will uninstall it, after reporting the accumulated test results in an
> implementation-defined manner.

However in following example it fails to do so:

    (use-modules (srfi srfi-64))

    (pk (eq? #f (test-runner-current)))
    (test-begin "x")
    (test-runner-on-final! (test-runner-current) (λ (_) #t))
    (test-end)
    (pk (eq? #f (test-runner-current)))

Resulting in:

    ;;; (#t)
    %%%% Starting test x  (Writing full log to "x.log")

    ;;; (#f)

I see no provision in the specification that would justify this.

Have a nice day
Tomas Volf