From 316df22e55e95a10ce0005c70357e44f13f5d858 Mon Sep 17 00:00:00 2001 From: martinfrancois Date: Tue, 11 Aug 2026 20:09:54 +0200 Subject: [PATCH] RenameUnderscoreIdentifier: add failing tests for cross-file class rename gaps classReferencesInAnotherSourceFileFollowTheRename pins that a class rename leaves references in other source files on the old, invalid _ spelling. classRenameAvoidsASecondaryClassDeclaredInAnotherSourceFile pins that the chosen name duplicates a package private class from a differently named file. Both are marked known-failing with @ExpectedToFail. --- .../lang/RenameUnderscoreIdentifierTest.java | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/src/test/java/org/openrewrite/java/migrate/lang/RenameUnderscoreIdentifierTest.java b/src/test/java/org/openrewrite/java/migrate/lang/RenameUnderscoreIdentifierTest.java index d29ad4f73b..6ffff12ae1 100644 --- a/src/test/java/org/openrewrite/java/migrate/lang/RenameUnderscoreIdentifierTest.java +++ b/src/test/java/org/openrewrite/java/migrate/lang/RenameUnderscoreIdentifierTest.java @@ -16,10 +16,12 @@ package org.openrewrite.java.migrate.lang; import org.junit.jupiter.api.Test; +import org.junitpioneer.jupiter.ExpectedToFail; import org.openrewrite.DocumentExample; import org.openrewrite.ExecutionContext; import org.openrewrite.Recipe; import org.openrewrite.TreeVisitor; +import org.openrewrite.java.ChangeType; import org.openrewrite.test.RecipeSpec; import org.openrewrite.test.RewriteTest; @@ -327,4 +329,70 @@ int count(List items) { ) ); } + + @ExpectedToFail("References to the renamed class in other source files keep the old `_` spelling") + @Test + void classReferencesInAnotherSourceFileFollowTheRename() { + rewriteRun( + spec -> spec.recipes(new ChangeType("UNDERSCORE", "_", false), new RenameUnderscoreIdentifier()) + .allSources(s -> s.markers(javaVersion(8))), + //language=java + java( + """ + class UNDERSCORE { + } + """, + """ + class __ { + } + """, + spec -> spec.path("_.java") + ), + //language=java + java( + """ + class User { + UNDERSCORE field = new UNDERSCORE(); + } + """, + """ + class User { + __ field = new __(); + } + """ + ) + ); + } + + @ExpectedToFail("The chosen name duplicates a package private class declared in a differently named file") + @Test + void classRenameAvoidsASecondaryClassDeclaredInAnotherSourceFile() { + rewriteRun( + spec -> spec.recipes(new ChangeType("UNDERSCORE", "_", false), new RenameUnderscoreIdentifier()) + .allSources(s -> s.markers(javaVersion(8))), + //language=java + java( + """ + class UNDERSCORE { + } + """, + """ + class _ { + } + """, + spec -> spec.path("_.java") + ), + //language=java + java( + """ + class Other { + } + + class __ { + } + """, + spec -> spec.path("Other.java") + ) + ); + } }