-
-
Notifications
You must be signed in to change notification settings - Fork 35
Make expErrors use an array (and only an array) #1076
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@@ -5,7 +5,7 @@ | |||
"defaultTestProperties": { | |||
"bidiIsolation": "none", | |||
"locale": "en-US", | |||
"expErrors": false | |||
"expErrors": [] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In fallback.md you left out expErrors
. Here you supply an empty array. I think we should probably omit this one?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@aphillips It's required in this file otherwise some tests would be left without an expectation (e.g. lines 44-55). This would also be the case in time.json
.
As Eemeli mentioned in his review comment, I think we need to keep the expErrors
in fallback.md
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we are talking about fallback.json
, not fallback.md
?
I updated fallback.json
and added errors for each individual case, instead of doing it in defaultTestProperties
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For date.json
, datetime.json
and time.json
I added "expErrors": []
to defaultTestProperties
because the schema says that entries are required to have one of exp
, expParts
or expErrors
In these 3 files we had tests with src
only.
So I had to add a expErrors
(not enough info for exp
, expParts
, exact date/time formatting not part of the spec)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some fixes, may need a second pass later to make sure I caught everything.
Co-authored-by: Eemeli Aro <[email protected]>
Co-authored-by: Eemeli Aro <[email protected]>
Co-authored-by: Eemeli Aro <[email protected]>
Co-authored-by: Eemeli Aro <[email protected]>
Co-authored-by: Eemeli Aro <[email protected]>
Co-authored-by: Eemeli Aro <[email protected]>
need to change bad operand to bad option (2025-06-16) |
In 2025-06-30 call, we agreed to merge this once @eemeli has reviewed positively. Nudging him gently with this comment. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a test that also needs to be updated to use bad-option
.
test/tests/fallback.json
Outdated
}, | ||
"tests": [ | ||
{ | ||
"description": "function with unquoted literal operand", | ||
"src": "{42 :test:function fails=format}", | ||
"exp": "{|42|}", | ||
"expParts": [{ "type": "fallback", "source": "|42|" }] | ||
"expParts": [{ "type": "fallback", "source": "|42|" }], | ||
"expErrors": [{ "type": "bad-operand" }] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"expErrors": [{ "type": "bad-operand" }] | |
"expErrors": [{ "type": "bad-option" }] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm... I found this confusing until I remembered that we agreed to use bad-option
to avoid creating a label for message-function-error
in the not at all official definition under tests here. Non-WG members won't have the benefit of having been on the telecon when we discussed it 😉
Unlike the other classes of error, MFE can have implementation-defined errors. We should make this clearer in the test suite text so that implementations do not merely ape our selection of bad-option
when an internal exception/error occurs. I think it would be okay to commit this, but we need to put more effort into the text in the /tests page to make super clear that bad-option
is not required by non-test functions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed on all counts. I also noticed while implementing this change that we lack a generic error for failures in formatting or selection, which could be due to the operand, options, or the phase of the moon. As in, values for which resolution succeeds, but then the MessageValue.formatToString()
or similar call throws an error. It's pretty likely to involve some bad option, but that's not actually guaranteed -- and beyond the scope of this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done.
Co-authored-by: Addison Phillips <[email protected]>
Fixes issue #993