Skip to content

Commit 71a47d1

Browse files
committed
Fix #167 TestRuleToTestInfo adds initialization statements to end of @beforeeach function, when it needs to be at the beginning
1 parent 527c349 commit 71a47d1

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,12 @@
2525
import org.openrewrite.java.search.UsesType;
2626
import org.openrewrite.java.tree.J;
2727
import org.openrewrite.java.tree.Space;
28+
import org.openrewrite.java.tree.Statement;
2829
import org.openrewrite.java.tree.TypeUtils;
2930

31+
import java.util.ArrayList;
3032
import java.util.Arrays;
33+
import java.util.List;
3134

3235
public class TestRuleToTestInfo extends Recipe {
3336

@@ -161,6 +164,16 @@ public J.MethodDeclaration visitMethodDeclaration(J.MethodDeclaration method, Ex
161164
.imports("org.junit.jupiter.api.TestInfo", "java.util.Optional", "java.lang.reflect.Method")
162165
.build(),
163166
md.getBody().getCoordinates().lastStatement(), varDecls.getVariables().get(0).getName().getSimpleName()), executionContext, getCursor().getParent());
167+
168+
// Make sure the testName is initialized first in case any other piece of the method body references it
169+
assert md.getBody() != null;
170+
if(md.getBody().getStatements().size() > 2) {
171+
List<Statement> statements = md.getBody().getStatements();
172+
List<Statement> reorderedStatements = new ArrayList<>(statements.size());
173+
reorderedStatements.addAll(statements.subList(statements.size() - 2, statements.size()));
174+
reorderedStatements.addAll(statements.subList(0, statements.size() - 2));
175+
md = md.withBody(md.getBody().withStatements(reorderedStatements));
176+
}
164177
}
165178
return md;
166179
}

src/test/kotlin/org/openrewrite/java/testing/junit5/TestRuleToTestInfoTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,11 @@ class TestRuleToTestInfoTest : JavaRecipeTest {
105105
106106
@BeforeEach
107107
public void setup(TestInfo testInfo) {
108-
count++;
109108
Optional<Method> testMethod = testInfo.getTestMethod();
110109
if (testMethod.isPresent()) {
111110
this.name = testMethod.get().getName();
112111
}
112+
count++;
113113
}
114114
115115
private static class SomeInnerClass {

0 commit comments

Comments
 (0)