unofficial mirror of bug-guile@gnu.org 
 help / color / mirror / Atom feed
* bug#72374: srfi-64: test-apply does not accept convenience specifiers
@ 2024-07-30 19:51 Tomas Volf
  2024-10-01 22:17 ` Taylan Kammer
  0 siblings, 1 reply; 2+ messages in thread
From: Tomas Volf @ 2024-07-30 19:51 UTC (permalink / raw)
  To: 72374

Hello,

I think I found a bug in (srfi srfi-64) module shipped with GNU Guile.

The specification says the following regarding the test-apply:

> If one or more specifiers are listed then only tests matching the specifiers
> are executed.

The specifiers are defined in `Test specifiers' section:

> [..] For convenience, a specifier may also be a non-procedure value, which is
> coerced to a specifier procedure, as described below for count and name.

That means that following should work:

    (use-modules (srfi srfi-64))
    (test-apply 1 (λ () (test-assert #t)))

However it does not:

    Backtrace:
    In ice-9/boot-9.scm:
      1752:10 12 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
    In unknown file:
              11 (apply-smob/0 #<thunk 7fd0803c7300>)
    In ice-9/boot-9.scm:
        724:2 10 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>)
    In ice-9/eval.scm:
        619:8  9 (_ #(#(#<directory (guile-user) 7fd0803cac80>)))
    In ice-9/boot-9.scm:
       2836:4  8 (save-module-excursion _)
      4388:12  7 (_)
    In srfi/srfi-64/testing.scm:
       947:34  6 (test-apply 1 #<procedure 7fd074b30108 at /home/wolf/src/guile-wolfsden/tests…>)
       944:21  5 (test-apply _ #<procedure 7fd074b30108 at /home/wolf/src/guile-wolfsden/tests…>)
       688:12  4 (_)
        648:2  3 (%test-on-test-begin #<test-runner pass-count: 0 fail-count: 0 xpass-count: 0…>)
       266:21  2 (%test-should-execute #<test-runner pass-count: 0 fail-count: 0 xpass-count: …>)
       257:17  1 (%test-any-specifier-matches (1) #<test-runner pass-count: 0 fail-count: 0 xp…>)
       257:17  0 (%test-any-specifier-matches #<test-runner pass-count: 0 fail-count: 0 xpass…> …)

    srfi/srfi-64/testing.scm:257:17: In procedure %test-any-specifier-matches:
    Wrong type to apply: 1

The string variant is also not supported, as in:

    (use-modules (srfi srfi-64))
    (test-apply "t-a" (λ () (test-assert #t)))

Resulting in:

    [..]
    srfi/srfi-64/testing.scm:257:17: In procedure %test-any-specifier-matches:
    Wrong type to apply: "t-a"

Have a nice day
Tomas Volf





^ permalink raw reply	[flat|nested] 2+ messages in thread

* bug#72374: srfi-64: test-apply does not accept convenience specifiers
  2024-07-30 19:51 bug#72374: srfi-64: test-apply does not accept convenience specifiers Tomas Volf
@ 2024-10-01 22:17 ` Taylan Kammer
  0 siblings, 0 replies; 2+ messages in thread
From: Taylan Kammer @ 2024-10-01 22:17 UTC (permalink / raw)
  To: Tomas Volf, 72374

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 says the following regarding the test-apply:
>
>> If one or more specifiers are listed then only tests matching the specifiers
>> are executed.
> The specifiers are defined in `Test specifiers' section:
>
>> [..] For convenience, a specifier may also be a non-procedure value, which is
>> coerced to a specifier procedure, as described below for count and name.
> That means that following should work:
>
>     (use-modules (srfi srfi-64))
>     (test-apply 1 (λ () (test-assert #t)))
>
> However it does not:
>
>     Backtrace:
>     In ice-9/boot-9.scm:
>       1752:10 12 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
>     In unknown file:
>               11 (apply-smob/0 #<thunk 7fd0803c7300>)
>     In ice-9/boot-9.scm:
>         724:2 10 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>)
>     In ice-9/eval.scm:
>         619:8  9 (_ #(#(#<directory (guile-user) 7fd0803cac80>)))
>     In ice-9/boot-9.scm:
>        2836:4  8 (save-module-excursion _)
>       4388:12  7 (_)
>     In srfi/srfi-64/testing.scm:
>        947:34  6 (test-apply 1 #<procedure 7fd074b30108 at /home/wolf/src/guile-wolfsden/tests…>)
>        944:21  5 (test-apply _ #<procedure 7fd074b30108 at /home/wolf/src/guile-wolfsden/tests…>)
>        688:12  4 (_)
>         648:2  3 (%test-on-test-begin #<test-runner pass-count: 0 fail-count: 0 xpass-count: 0…>)
>        266:21  2 (%test-should-execute #<test-runner pass-count: 0 fail-count: 0 xpass-count: …>)
>        257:17  1 (%test-any-specifier-matches (1) #<test-runner pass-count: 0 fail-count: 0 xp…>)
>        257:17  0 (%test-any-specifier-matches #<test-runner pass-count: 0 fail-count: 0 xpass…> …)
>
>     srfi/srfi-64/testing.scm:257:17: In procedure %test-any-specifier-matches:
>     Wrong type to apply: 1
>
> The string variant is also not supported, as in:
>
>     (use-modules (srfi srfi-64))
>     (test-apply "t-a" (λ () (test-assert #t)))
>
> Resulting in:
>
>     [..]
>     srfi/srfi-64/testing.scm:257:17: In procedure %test-any-specifier-matches:
>     Wrong type to apply: "t-a"
>
> Have a nice day
> Tomas Volf
>
Looks like a bug. Fixed in my implementation via this commit:

    https://codeberg.org/taylan/scheme-srfis/commit/c14388e475dfe6a20cdd090d397813868dee0137

An equivalent fix shouldn't be *too* difficult to implement in the upstream implementation, but I'm not touching the test-apply implementation in there because it's demonic. :-)

If someone wants to try it though, what's called `make-pred` in my code is called `%test-as-specifier` in the upstream code, and just like in my fix it just needs to be applied to the specifiers at some point to make sure they're all procedures.

- Taylan






^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-10-01 22:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-30 19:51 bug#72374: srfi-64: test-apply does not accept convenience specifiers Tomas Volf
2024-10-01 22:17 ` Taylan Kammer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).