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