From 9b0ad815cff71906a70617bdcf1ef862171514a8 Mon Sep 17 00:00:00 2001 From: martinfrancois Date: Wed, 12 Aug 2026 19:53:33 +0200 Subject: [PATCH] Preserve parameterized toString assertions --- .../SimplifyChainedAssertJAssertion.java | 4 ++++ .../SimplifyChainedAssertJAssertionsTest.java | 20 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/main/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertion.java b/src/main/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertion.java index fbc48768f..fe711d907 100644 --- a/src/main/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertion.java +++ b/src/main/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertion.java @@ -123,6 +123,10 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation methodInvocat if (!chainedAssertMatcher.matches(assertThatArg)) { return mi; } + // Parameterized toString overloads have no equivalent hasToString assertion. + if ("toString".equals(chainedAssertion) && !(assertThatArg.getArguments().get(0) instanceof J.Empty)) { + return mi; + } // Extract the actual argument for the new assertThat call Expression actual = assertThatArg.getSelect() != null ? assertThatArg.getSelect() : assertThatArg; diff --git a/src/test/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertionsTest.java b/src/test/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertionsTest.java index 152468b97..1ff97e632 100644 --- a/src/test/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertionsTest.java +++ b/src/test/java/org/openrewrite/java/testing/assertj/SimplifyChainedAssertJAssertionsTest.java @@ -467,4 +467,24 @@ void testMethod(Object argument) { ); } } + + @Test + void doesNotRewriteParameterizedByteArrayOutputStreamToString() { + rewriteRun( + java( + """ + import java.io.ByteArrayOutputStream; + import java.nio.charset.StandardCharsets; + + import static org.assertj.core.api.Assertions.assertThat; + + class Test { + void verify(ByteArrayOutputStream stdout, String expected) { + assertThat(stdout.toString(StandardCharsets.UTF_8)).isEqualTo(expected); + } + } + """ + ) + ); + } }