[BUGFIX] Address inconsistencies in object comparisons (#1320)#1324
Merged
Conversation
Fluid's `BooleanParser` attempts to cover a specific edge case: If two objects should be compared, according to the code it should always be a strict comparison. However, the condition that should have accomplished this depends on the variable content during the first run. If a template is compiled (which is almost always the case), the comparison is still dependent on the variable content during initial template compilation. Above all, this special handling doesn't really make sense, since strict comparison operators are available as well. This patch adds test coverage for object comparisons on multiple levels. Also, the special handling is removed from `BooleanParser` to get the tests to pass. Without the adjustment, either uncached or cached templates would be correct, but never both. The new version delivers the same results as cached templates before this change, so it should be in line with real-world projects.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Fluid's
BooleanParserattempts to cover a specific edge case: Iftwo objects should be compared, according to the code it should always
be a strict comparison. However, the condition that should have
accomplished this depends on the variable content during the first
run. If a template is compiled (which is almost always the case), the
comparison is still dependent on the variable content during initial
template compilation.
Above all, this special handling doesn't really make sense, since strict
comparison operators are available as well.
This patch adds test coverage for object comparisons on multiple levels.
Also, the special handling is removed from
BooleanParserto get thetests to pass. Without the adjustment, either uncached or cached
templates would be correct, but never both. The new version delivers
the same results as cached templates before this change, so it should
be in line with real-world projects.