You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The intention here is to create a test for checking a non-empty constraint on a listing, for regression purposes. I realize that pkl test has not been documented, so it's quite possible there are some misunderstandings or unsupported functionality being used here.
We can clearly see that values defined in NonEmptyImpl is invalid, as the listing is required to not be empty. However, when running this test:
$ pkl test --overwrite NonEmptyTest.pkl
module NonEmptyTest (file:///tmp/issues/NonEmptyTest.pkl, line 1)
basic-test ✍️
NonEmptyTest ❌
Error:
-- Pkl Error --
Expected an exception, but none was thrown.
7 | test.catch(() -> confUnderTest)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
at NonEmptyTest#examples["basic-test"][#1] (file:///tmp/issues/NonEmptyTest.pkl, line 7)
The error seems to suggest that there is no evaluation error here. If that's the case, we should be able to try the inverse test, as demonstrated in NonEmptyTest-Inv.pkl:
The error seems to suggest that there is no evaluation error here.
This is because there isn't. Where you say confUnderTest, you just refer to the object; nothing's forcing the evaluation of its members. If, instead, you say confUnderTest.output.text or confUnderTest.values.length, you force the evaluation of values and it throws as you'd expect (so test.catch catches it and the test passes).
If we instead embed this list inside a mapping, this works as expected:
Actually; that's not as expected. This is a known bug. Mapping<K,V> is too eager; it should be strict in its keys and lazy in its values, but currently, type checking it forces its values. (See: #406)
The intention here is to create a test for checking a non-empty constraint on a listing, for regression purposes. I realize that
pkl test
has not been documented, so it's quite possible there are some misunderstandings or unsupported functionality being used here.We need three files for a demonstration.
We can clearly see that
values
defined inNonEmptyImpl
is invalid, as the listing is required to not be empty. However, when running this test:The error seems to suggest that there is no evaluation error here. If that's the case, we should be able to try the inverse test, as demonstrated in NonEmptyTest-Inv.pkl:
This time we get the opposite error instead; an error was thrown and we did not catch it:
If we instead embed this list inside a mapping, this works as expected:
The above has been tested using the following versions:
Pkl 0.25.3 (Linux 5.15.0-1053-aws, native)
Pkl 0.26.0-dev+3a31188 (Linux 5.4.0-177-generic, native)
The text was updated successfully, but these errors were encountered: