fix: fixed JSON order independent comparison in DefaultFactoryTest #1
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.
Description
Test
org.apache.gora.mongodb.filters.DefaultFactoryTest#testCreateFilter_list_2
occasionally fails when the order of fields in theJSONObject
objects is different. The current test compares the twoJSONObject
objects by converting them to strings, which is order-sensitive, and could fail when field order differs.Steps to reproduce
Run
mvn -pl gora-mongodb edu.illinois:nondex-maven-plugin:2.1.7:nondex -Dtest=org.apache.gora.mongodb.filters.DefaultFactoryTest#testCreateFilter_list_2 -DnondexRuns=10
.Expected Behaviour
This test should pass consistently, regardless of the order of fields in the
JSONObject
, as long as the content remains the same.Actual Behaviour
The test occasionally fails, raise an exception with error message:
Proposed Solution
The solution is to parse both expected and actual
JSONObject
intoJsonNode
, rather than comparing them as strings. Then use Jackson'sObjectMapper
to compare the twoJsonNode
objects, which ignores the order of the keys.