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.
When comparing maps of equal size, the value returned from the
do_deep_equal/2
helper is the value of thefor
loop—a list. That's a problem, given thatdo_deep_equals/2
is expected to return a boolean: the one place wheredo_deep_equals/2
is used is as the condition for anif
.When comparing maps of equal size,
do_deep_equals/2
will thus always return a truthy value, as all lists are truthy in elixir. This means that the test suite treats any map with the correct number of keys as deeply equal to the result, which causes tests that rightly should fail to pass.A similar issue arises for lists, where two lists of the same length are always treated as deeply equal, for the same reason.
I have fixed both of these, by piping the
for
loop evaluates intoEnum.all?/1
—only if each iteration of the for loop returnedtrue
shoulddo_deep_equals/2
returntrue
.Unfortunately, this PR causes the test suite to fail. That should be expected: the test suite is in fact broken, and tests should be failing with a fixed
do_deep_equals/2
.