Fix flaky test in CustomTypeAdaptersTest #2523
Draft
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.
Purpose
The test
testCustomNestedSerializersinCustomTypeAdaptersTestis detected flaky because thegson.toJson()gives a non-deterministic output.Related issue: #2520
Description
After modifying the tests to check if the
gson.toJson()output to is one of the possible json string values, the test passes, instead of checking against only 1 string.Reason:
The
gson.toJson()internally callscom.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFieldswhich makes a call togetDeclaredFieldsgson/gson/src/main/java/com/google/gson/internal/bind/ReflectiveTypeAdapterFactory.java
Line 265 in e685705
And according to this stackoverlow discussion,
getDeclaredFieldsin Java 8 does not return elements in a consistent order.Reproduction of error
The test runs fail on 4/5 runs of the NonDex tool
Command to reproduce the failure:
Error Message: