On 23.12.2021 21:26, Attila Lendvai wrote:
> dear Schemers,
>
> i have recently made a change to Guix where the codebase can raise continuable &warings from anywhere, that then the toplevel UI displays to the user one way or another, and then continues.
>
> unfortunately some tests broke, because the test infrastructure catches any and all conditions, and considers all of them to be unexpected errors.
>
> would it be possible to change the sfri-64 reference implementation so that it ignores continuable warnings? or maybe all continuable exceptions? (i'm rather new to scheme to judge this well)
>
> or should i give up all hope and fix things on my side?
>
> thank you for your consideration,
>
> - attila
> PGP: 5D5F 45C7 DFCD 0A39
>
Wouldn't it be best to write the tests in a way that accounts for this?
For example one could:
1. Write a test that ensures that a certain warning is raised, via test-error:
(test-error "foo raises warning" &guix-warning-xyz
(guix-operation-that-raises-warning-xyz))
2. Write a number of additional tests where the test expression catches the
warnings and chooses different ways to continue:
(test-assert "foo choice 1"
(guard (condition
((guix-warning-xyz? condition) choice-1))
(guix-operation-that-raises-warning-xyz)
#true))
(test-assert "foo choice 2"
(guard (condition
((guix-warning-xyz? condition) choice-2))
(guix-operation-that-raises-warning-xyz)
#true))
Or whatever makes sense instead of a test-assert with #true at the end,
such as asserting that a certain value is produced depending on choice.
--
Taylan