diff --git a/src/main/java/org/openrewrite/java/testing/junit5/UseAssertSame.java b/src/main/java/org/openrewrite/java/testing/junit5/UseAssertSame.java index 9eb95e482..7f051d7b9 100644 --- a/src/main/java/org/openrewrite/java/testing/junit5/UseAssertSame.java +++ b/src/main/java/org/openrewrite/java/testing/junit5/UseAssertSame.java @@ -26,6 +26,7 @@ import org.openrewrite.java.tree.Expression; import org.openrewrite.java.tree.J; import org.openrewrite.java.tree.JavaType; +import org.openrewrite.staticanalysis.java.JavaFileChecker; import java.util.ArrayList; import java.util.List; @@ -106,10 +107,13 @@ private JavaType.Method assertSameMethodType(J.MethodInvocation mi, String newMe return assertTrue.withName(newMethodName); } }; + // Kotlin and Groovy `==` calls `equals`, so only Java's `==` means `assertSame` return Preconditions.check( - Preconditions.or( - new UsesMethod<>(ASSERT_TRUE_MATCHER), - new UsesMethod<>(ASSERT_FALSE_MATCHER)), + Preconditions.and( + new JavaFileChecker<>(), + Preconditions.or( + new UsesMethod<>(ASSERT_TRUE_MATCHER), + new UsesMethod<>(ASSERT_FALSE_MATCHER))), visitor); } diff --git a/src/test/java/org/openrewrite/java/testing/junit5/UseAssertSameTest.java b/src/test/java/org/openrewrite/java/testing/junit5/UseAssertSameTest.java index fb97e918c..50431fd8d 100644 --- a/src/test/java/org/openrewrite/java/testing/junit5/UseAssertSameTest.java +++ b/src/test/java/org/openrewrite/java/testing/junit5/UseAssertSameTest.java @@ -19,10 +19,12 @@ import org.openrewrite.DocumentExample; import org.openrewrite.InMemoryExecutionContext; import org.openrewrite.java.JavaParser; +import org.openrewrite.kotlin.KotlinParser; import org.openrewrite.test.RecipeSpec; import org.openrewrite.test.RewriteTest; import static org.openrewrite.java.Assertions.java; +import static org.openrewrite.kotlin.Assertions.kotlin; class UseAssertSameTest implements RewriteTest { @Override @@ -256,6 +258,28 @@ public void test(Object obj) { ); } + @Test + void kotlinEqualityIsNotIdentity() { + rewriteRun( + spec -> spec.parser(KotlinParser.builder() + .classpathFromResources(new InMemoryExecutionContext(), "junit-jupiter-api-5")), + //language=kotlin + kotlin( + """ + import org.junit.jupiter.api.Assertions.assertTrue + import org.junit.jupiter.api.Test + + class MyTest { + @Test + fun test() { + assertTrue(listOf(1) == listOf(1)) + } + } + """ + ) + ); + } + @Test void onlyConvertsReferenceComparisons() { // Wrappers are reference types so == is reference equality (assertSame).