diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/HardcodedContracts.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/HardcodedContracts.java index 98a20300cd22..5386febd8d72 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/HardcodedContracts.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/HardcodedContracts.java @@ -196,7 +196,8 @@ public class HardcodedContracts { } private static boolean isJunit(String className) { - return className.startsWith("junit.framework.") || className.startsWith("org.junit."); + return className.startsWith("junit.framework.") || className.startsWith("org.junit.") + || className.equals("org.testng.AssertJUnit"); } private static boolean isJunit5(String className) { @@ -204,7 +205,7 @@ public class HardcodedContracts { } private static boolean isTestng(String className) { - return className.startsWith("org.testng."); + return className.startsWith("org.testng.") && !className.equals("org.testng.AssertJUnit"); } private static boolean isNotNullMatcher(PsiExpression expr) { diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/AssertTestNg.java b/java/java-tests/testData/inspection/dataFlow/fixture/AssertTestNg.java new file mode 100644 index 000000000000..d920bd710d6a --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/AssertTestNg.java @@ -0,0 +1,43 @@ +import org.jetbrains.annotations.Nullable; +import org.testng.Assert; +import org.testng.AssertJUnit; + +class AssertTestNg { + public void assertTestNgStyle(@Nullable String msg, @Nullable String obj, boolean x, boolean y) + { + Assert.assertNotNull(obj, msg); + if (msg == null) { + System.out.println("msg is null"); + } + if (obj == null) { + System.out.println("obj is null"); + } + Assert.assertTrue(x); + if (x) { + System.out.println("x is true"); + } + Assert.assertTrue(y, msg); + if (y) { + System.out.println("x is true"); + } + } + + public void assertJUnitStyle(@Nullable String msg, @Nullable String obj, boolean x, boolean y) + { + AssertJUnit.assertNotNull(msg, obj); + if (msg == null) { + System.out.println("msg is null"); + } + if (obj == null) { + System.out.println("obj is null"); + } + AssertJUnit.assertTrue(x); + if (x) { + System.out.println("x is true"); + } + AssertJUnit.assertTrue(msg, y); + if (y) { + System.out.println("x is true"); + } + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/HardcodedContractsTest.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/HardcodedContractsTest.java index 15018ea6e785..d41e4c2bcb3c 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/HardcodedContractsTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/HardcodedContractsTest.java @@ -128,4 +128,24 @@ public class HardcodedContractsTest extends DataFlowInspectionTestCase { checkHighlighting(); } + public void testAssertTestNg() { + myFixture.addClass("package org.testng;\n" + + "\n" + + "public class AssertJUnit {\n" + + " static public void assertTrue(String message, boolean condition) {}\n" + + " static public void assertTrue(boolean condition) {}\n" + + " static public void assertNotNull(String message, Object object) {}\n" + + " static public void assertNotNull(Object object) {}\n" + + "}"); + myFixture.addClass("package org.testng;\n" + + "\n" + + "public class Assert {\n" + + " static public void assertTrue(boolean condition, String message) {}\n" + + " static public void assertTrue(boolean condition) {}\n" + + " static public void assertNotNull(Object object, String message) {}\n" + + " static public void assertNotNull(Object object) {}\n" + + "}"); + checkHighlighting(); + } + }