From ca998ab469702b0593f3c8269c72d516c9dcbeb5 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Mon, 7 Aug 2017 11:42:53 +0700 Subject: [PATCH] IDEA-177054 Wrong warning on AssertJUnit.assertNotNull() from testng --- .../dataFlow/HardcodedContracts.java | 5 ++- .../dataFlow/fixture/AssertTestNg.java | 43 +++++++++++++++++++ .../HardcodedContractsTest.java | 20 +++++++++ 3 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 java/java-tests/testData/inspection/dataFlow/fixture/AssertTestNg.java 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(); + } + }