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

From: Taylan Kammer <[email-masked]>
Date: Wed, 2 Oct 2024 00:34:53 +0200

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 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
>
>
Don't know how to most easily fix this upstream due to the convoluted code, but works fine with my implementation of SRFI-64.

- Taylan