Skip to content

Commit 76fe8e9

Browse files
authored
Also swap assertNull and assertNotNull argument order (#440)
* Also swap assertNull and assertNotNull argument order * Use wildcard * Fix argument matcher
1 parent 89e1355 commit 76fe8e9

File tree

2 files changed

+50
-2
lines changed

2 files changed

+50
-2
lines changed

src/main/java/org/openrewrite/java/testing/cleanup/AssertionsArgumentOrder.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ public class AssertionsArgumentOrder extends Recipe {
4242
};
4343
private static final MethodMatcher jupiterAssertIterableEqualsMatcher = new MethodMatcher("org.junit.jupiter.api.Assertions assertIterableEquals(..)");
4444

45+
// `assertNull("message", result())` should be `assertNull(result(), "message")`
46+
private static final MethodMatcher jupiterAssertNullMatcher = new MethodMatcher("org.junit.jupiter.api.Assertions assert*Null(Object, String)");
47+
4548
private static final MethodMatcher[] testNgMatcher = new MethodMatcher[]{
4649
new MethodMatcher("org.testng.Assert assertSame(..)"),
4750
new MethodMatcher("org.testng.Assert assertNotSame(..)"),
@@ -54,6 +57,7 @@ public class AssertionsArgumentOrder extends Recipe {
5457
static {
5558
List<MethodMatcher> matchers = new ArrayList<>(Arrays.asList(jupiterAssertionMatchers));
5659
matchers.add(jupiterAssertIterableEqualsMatcher);
60+
matchers.add(jupiterAssertNullMatcher);
5761
matchers.addAll(Arrays.asList(testNgMatcher));
5862
//noinspection unchecked
5963
precondition = Preconditions.or(matchers.stream().map(UsesMethod::new).toArray(TreeVisitor[]::new));
@@ -117,6 +121,9 @@ public J.MethodInvocation visitMethodInvocation(J.MethodInvocation method, Execu
117121
}
118122

119123
private boolean isCorrectOrder(Expression expected, Expression actual, J.MethodInvocation mi) {
124+
if (jupiterAssertNullMatcher.matches(mi)) {
125+
return isConstant(actual, mi) || !isConstant(expected, mi);
126+
}
120127
return isConstant(expected, mi) || !isConstant(actual, mi);
121128
}
122129

@@ -156,7 +163,7 @@ private boolean isJupiterAssertion(J.MethodInvocation mi) {
156163
return true;
157164
}
158165
}
159-
return jupiterAssertIterableEqualsMatcher.matches(mi);
166+
return jupiterAssertIterableEqualsMatcher.matches(mi) || jupiterAssertNullMatcher.matches(mi);
160167
}
161168

162169
private boolean isTestNgAssertion(J.MethodInvocation mi) {

src/test/java/org/openrewrite/java/testing/cleanup/AssertionsArgumentOrderTest.java

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
import static org.openrewrite.java.Assertions.java;
2727

28-
public class AssertionsArgumentOrderTest implements RewriteTest {
28+
class AssertionsArgumentOrderTest implements RewriteTest {
2929
@Override
3030
public void defaults(RecipeSpec spec) {
3131
spec.recipe(new AssertionsArgumentOrder())
@@ -71,6 +71,47 @@ String result() {
7171
);
7272
}
7373

74+
@Test
75+
void junitAssertNullAndAssertNotNull() {
76+
rewriteRun(
77+
//language=java
78+
java(
79+
"""
80+
import static org.junit.jupiter.api.Assertions.assertNotNull;
81+
import static org.junit.jupiter.api.Assertions.assertNull;
82+
83+
class MyTest {
84+
void someMethod() {
85+
assertNull(result(), "message");
86+
assertNull("message", result());
87+
assertNotNull(result(), "message");
88+
assertNotNull("message", result());
89+
}
90+
String result() {
91+
return "result";
92+
}
93+
}
94+
""",
95+
"""
96+
import static org.junit.jupiter.api.Assertions.assertNotNull;
97+
import static org.junit.jupiter.api.Assertions.assertNull;
98+
99+
class MyTest {
100+
void someMethod() {
101+
assertNull(result(), "message");
102+
assertNull(result(), "message");
103+
assertNotNull(result(), "message");
104+
assertNotNull(result(), "message");
105+
}
106+
String result() {
107+
return "result";
108+
}
109+
}
110+
"""
111+
)
112+
);
113+
}
114+
74115
@Test
75116
void jupiterAssertSameNotSame() {
76117
rewriteRun(

0 commit comments

Comments
 (0)