Skip to content

Commit 22b9122

Browse files
authored
Skip primitive comparisons in UseAssertSame (#992)
Converting `assertTrue(a == b)` to `assertSame(a, b)` changes value equality into reference equality on the boxed types, which fails for mixed primitive types like `123L == 123`.
1 parent 9104c05 commit 22b9122

2 files changed

Lines changed: 27 additions & 0 deletions

File tree

src/main/java/org/openrewrite/java/testing/junit5/UseAssertSame.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,11 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation methodInvocat
6767
binary.getRight().getType() == JavaType.Primitive.Null) {
6868
return mi;
6969
}
70+
// Skip primitive comparisons — `==` is value equality, not reference equality
71+
if (binary.getLeft().getType() instanceof JavaType.Primitive ||
72+
binary.getRight().getType() instanceof JavaType.Primitive) {
73+
return mi;
74+
}
7075
List<Expression> newArguments = new ArrayList<>();
7176
newArguments.add(binary.getLeft());
7277
newArguments.add(binary.getRight());

src/test/java/org/openrewrite/java/testing/junit5/UseAssertSameTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,28 @@ public void test(Object obj) {
212212
);
213213
}
214214

215+
@Test
216+
void primitiveComparisonShouldNotConvert() {
217+
//language=java
218+
rewriteRun(
219+
java(
220+
"""
221+
import org.junit.jupiter.api.Test;
222+
223+
import static org.junit.jupiter.api.Assertions.assertTrue;
224+
225+
class MyTest {
226+
227+
@Test
228+
public void test() {
229+
assertTrue(123L == 123);
230+
}
231+
}
232+
"""
233+
)
234+
);
235+
}
236+
215237
@Test
216238
void assertFalseNullShouldNotConvert() {
217239
//language=java

0 commit comments

Comments
 (0)