From 447aed7a046ded195e1eeb0a5b79eb96ea08bdfa Mon Sep 17 00:00:00 2001 From: martinfrancois Date: Tue, 11 Aug 2026 19:57:12 +0200 Subject: [PATCH] UseJavaUtilBase64: add failing tests for missing import and dropped receiver addImportWhenNoCoderVariablePresent pins that no import java.util.Base64 is added when no coder variable exists for ChangeType to retype, so the output does not compile. retainMethodCallReceiver pins that a non-identifier receiver such as encoder() is silently dropped from the rewritten call. Both are marked @ExpectedToFail; both defects are disclosed in #1195. --- .../java/migrate/UseJavaUtilBase64Test.java | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/src/test/java/org/openrewrite/java/migrate/UseJavaUtilBase64Test.java b/src/test/java/org/openrewrite/java/migrate/UseJavaUtilBase64Test.java index d51c70eb3f..7ae556f3e3 100644 --- a/src/test/java/org/openrewrite/java/migrate/UseJavaUtilBase64Test.java +++ b/src/test/java/org/openrewrite/java/migrate/UseJavaUtilBase64Test.java @@ -16,6 +16,7 @@ package org.openrewrite.java.migrate; import org.junit.jupiter.api.Test; +import org.junitpioneer.jupiter.ExpectedToFail; import org.openrewrite.DocumentExample; import org.openrewrite.Issue; import org.openrewrite.java.JavaParser; @@ -218,6 +219,74 @@ void test(byte[] bBytes) { ); } + @ExpectedToFail("Import for java.util.Base64 is only added when ChangeType retypes a coder variable; without one the migrated file does not compile") + @Test + void addImportWhenNoCoderVariablePresent() { + rewriteRun( + //language=java + java( + """ + package test.sun.misc; + + class Test { + String test(byte[] bBytes) { + return new BASE64Encoder().encode(bBytes); + } + } + """, + """ + package test.sun.misc; + + import java.util.Base64; + + class Test { + String test(byte[] bBytes) { + return Base64.getEncoder().encodeToString(bBytes); + } + } + """ + ) + ); + } + + @ExpectedToFail("Receivers are only put back when they are identifiers; a method call receiver and its side effects are silently dropped") + @Test + void retainMethodCallReceiver() { + rewriteRun( + //language=java + java( + """ + package test.sun.misc; + + class Test { + BASE64Encoder encoder() { + return new BASE64Encoder(); + } + + String test(byte[] bBytes) { + return encoder().encode(bBytes); + } + } + """, + """ + package test.sun.misc; + + import java.util.Base64; + + class Test { + Base64.Encoder encoder() { + return Base64.getEncoder(); + } + + String test(byte[] bBytes) { + return encoder().encodeToString(bBytes); + } + } + """ + ) + ); + } + @Issue("https://github.com/openrewrite/rewrite-migrate-java/issues/212") @Test void otherBase64() {