Repository navigation
Only use hasSameSizeAs in SimplifyHasSizeAssertion when the assert type has a matching overload - #1243
Merged
Conversation
…t type has a matching overload
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.
SimplifyHasSizeAssertionturnedassertThat(list).hasSize(str.length())intoassertThat(list).hasSameSizeAs(str). That compiles, but binds tohasSameSizeAs(Object array)and fails at runtime becausestris not an array. The same happened for aMapsize on an iterable or array assert, and for a string length on any assert other than a char sequence one.Every AssertJ assert with
hasSize(int)also hashasSameSizeAs(Iterable<?>)andhasSameSizeAs(Object array). OnlyAbstractMapAssertaddshasSameSizeAs(Map<?, ?>), and onlyAbstractCharSequenceAssertaddshasSameSizeAs(CharSequence)(checked withjavapagainst assertj-core 3.27.7). The recipe now rewritesmap.size()only on map asserts andstr.length()only on char sequence asserts.Iterablesizes and array lengths are still rewritten on all of them.Verified with
./gradlew test --offline --tests 'org.openrewrite.java.testing.assertj.*': 495 tests, all passing. The new negative test fails onmain.Fixes item D4 of #1211.