core#2461 - allow booleans to be of type boolean #19805
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
https://lab.civicrm.org/dev/core/-/issues/2461
Overview
The regex match for validating booleans assumes you're passing a string. With APIv4 we're also passing booleans. Since the tested value is implicitly cast to a string,
TRUE
passes butFALSE
doesn'tBefore
Passing the value
FALSE
doesn't pass validation. If you're using the API, this returns an exception.After
FALSE
is acceptable as a boolean value.Technical Details
Comments
I wrote tests on
CRM_Utils_Type::escape()
andCRM_Utils_Rule::boolean()
while I was still puzzling through this. They're not both necessary, but who's going to turn down extra (passing) tests?