From e19ef5983707e6a5c8d127f1ac8f02754cef82fd Mon Sep 17 00:00:00 2001 From: Andrej Shadura Date: Wed, 28 Aug 2019 14:13:29 +0200 Subject: New upstream version 0~183.5153.4+dfsg --- .../intellij.jvm.analysis.java.tests.iml | 12 ++++ ...ngMethodInNonBlockingContextInspectionTest.java | 80 ++++++++++++++++++++++ .../tests/java/NonNlsUastUtilTest.java | 49 +++++++++++++ .../java/ScheduledForRemovalInspectionTest.kt | 22 ++++++ .../StringToUpperWithoutLocaleInspectionTest.java | 27 ++++++++ .../tests/java/UastCallMatcherTest.java | 30 ++++++++ .../tests/java/UnstableApiUsageInspectionTest.kt | 23 +++++++ .../jvm/analysis/JvmAnalysisTestsUtil.java | 9 +++ 8 files changed, 252 insertions(+) create mode 100644 jvm/jvm-analysis-java-tests/intellij.jvm.analysis.java.tests.iml create mode 100644 jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/BlockingMethodInNonBlockingContextInspectionTest.java create mode 100644 jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/NonNlsUastUtilTest.java create mode 100644 jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/ScheduledForRemovalInspectionTest.kt create mode 100644 jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/StringToUpperWithoutLocaleInspectionTest.java create mode 100644 jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/UastCallMatcherTest.java create mode 100644 jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/UnstableApiUsageInspectionTest.kt create mode 100644 jvm/jvm-analysis-java-tests/testSrc/com/intellij/jvm/analysis/JvmAnalysisTestsUtil.java (limited to 'jvm/jvm-analysis-java-tests') diff --git a/jvm/jvm-analysis-java-tests/intellij.jvm.analysis.java.tests.iml b/jvm/jvm-analysis-java-tests/intellij.jvm.analysis.java.tests.iml new file mode 100644 index 00000000..43a9d1f7 --- /dev/null +++ b/jvm/jvm-analysis-java-tests/intellij.jvm.analysis.java.tests.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/BlockingMethodInNonBlockingContextInspectionTest.java b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/BlockingMethodInNonBlockingContextInspectionTest.java new file mode 100644 index 00000000..aed9c149 --- /dev/null +++ b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/BlockingMethodInNonBlockingContextInspectionTest.java @@ -0,0 +1,80 @@ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.codeInspection.tests.java; + +import com.intellij.codeInspection.blockingCallsDetection.BlockingMethodInNonBlockingContextInspection; +import com.intellij.openapi.application.ex.PathManagerEx; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.roots.JavaModuleExternalPaths; +import com.intellij.openapi.roots.ModuleRootModificationUtil; +import com.intellij.openapi.vfs.VfsUtilCore; +import com.intellij.psi.codeStyle.JavaCodeStyleSettings; +import com.intellij.testFramework.UsefulTestCase; +import com.intellij.testFramework.builders.JavaModuleFixtureBuilder; +import com.intellij.testFramework.fixtures.*; + +import java.util.Collections; + +public class BlockingMethodInNonBlockingContextInspectionTest extends UsefulTestCase { + + private CodeInsightTestFixture myFixture; + + @Override + protected void tearDown() throws Exception { + try { + myFixture.tearDown(); + } + finally { + myFixture = null; + super.tearDown(); + } + } + + @Override + public void setUp() throws Exception { + super.setUp(); + final TestFixtureBuilder + projectBuilder = IdeaTestFixtureFactory.getFixtureFactory().createFixtureBuilder(getName()); + + myFixture = JavaTestFixtureFactory.getFixtureFactory().createCodeInsightFixture(projectBuilder.getFixture()); + final String dataPath = PathManagerEx.getTestDataPath() + "/codeInspection/blockingCallsDetection"; + myFixture.setTestDataPath(dataPath); + final JavaModuleFixtureBuilder builder = projectBuilder.addModule(JavaModuleFixtureBuilder.class); + builder.setMockJdkLevel(JavaModuleFixtureBuilder.MockJdkLevel.jdk15); + + myFixture.setUp(); + Module module = builder.getFixture().getModule(); + ModuleRootModificationUtil.updateModel(module, model -> { + String contentUrl = VfsUtilCore.pathToUrl(myFixture.getTempDirPath()); + model.addContentEntry(contentUrl).addSourceFolder(contentUrl, false); + final JavaModuleExternalPaths extension = model.getModuleExtension(JavaModuleExternalPaths.class); + extension.setExternalAnnotationUrls(new String[]{VfsUtilCore.pathToUrl(myFixture.getTempDirPath())}); + }); + + Project project = myFixture.getProject(); + + JavaCodeStyleSettings.getInstance(project).USE_EXTERNAL_ANNOTATIONS = true; + + BlockingMethodInNonBlockingContextInspection myInspection = new BlockingMethodInNonBlockingContextInspection(); + myInspection.myBlockingAnnotations = + Collections.singletonList(BlockingMethodInNonBlockingContextInspection.DEFAULT_BLOCKING_ANNOTATION); + myInspection.myNonBlockingAnnotations = + Collections.singletonList(BlockingMethodInNonBlockingContextInspection.DEFAULT_NONBLOCKING_ANNOTATION); + myFixture.enableInspections(myInspection); + } + + public void testSimpleAnnotationDetection() { + myFixture.configureByFiles("TestSimpleAnnotationsDetection.java", "Blocking.java", "NonBlocking.java"); + myFixture.testHighlighting(true, false, true, "TestSimpleAnnotationsDetection.java"); + } + + public void testExternalBlockingAnnotationDetection() { + myFixture.configureByFiles("TestExternalAnnotationsDetection.java", "Blocking.java", "NonBlocking.java", "annotations.xml"); + myFixture.testHighlighting(true, false, true, "TestExternalAnnotationsDetection.java"); + } + + public void testThrowsTypeDetection() { + myFixture.configureByFiles("TestThrowsTypeDetection.java", "Blocking.java", "NonBlocking.java"); + myFixture.testHighlighting(true, false, true, "TestThrowsTypeDetection.java"); + } +} diff --git a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/NonNlsUastUtilTest.java b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/NonNlsUastUtilTest.java new file mode 100644 index 00000000..7e2ac8d4 --- /dev/null +++ b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/NonNlsUastUtilTest.java @@ -0,0 +1,49 @@ +package com.intellij.codeInspection.tests.java; + +import com.intellij.jvm.analysis.JvmAnalysisTestsUtil; +import com.intellij.psi.PsiFile; +import com.intellij.testFramework.TestDataPath; +import com.intellij.testFramework.builders.JavaModuleFixtureBuilder; +import com.intellij.testFramework.fixtures.JavaCodeInsightFixtureTestCase; +import com.intellij.util.PathUtil; +import org.jetbrains.annotations.NonNls; +import org.jetbrains.uast.ULiteralExpression; + +import java.util.Set; + +import static com.intellij.codeInspection.NonNlsUastUtil.isNonNlsStringLiteral; +import static com.intellij.codeInspection.tests.JvmAnalysisTestsUastUtil.getUElementsOfTypeFromFile; + +@TestDataPath("$CONTENT_ROOT/testData/codeInspection/nonNls") +public class NonNlsUastUtilTest extends JavaCodeInsightFixtureTestCase { + @Override + protected String getTestDataPath() { + return JvmAnalysisTestsUtil.TEST_DATA_PROJECT_RELATIVE_BASE_PATH + "/codeInspection/nonNls"; + } + + @Override + protected void tuneFixture(JavaModuleFixtureBuilder moduleBuilder) { + moduleBuilder.addLibrary("annotations", PathUtil.getJarPathForClass(NonNls.class)); + } + + public void testNonNlsStringLiterals() { + PsiFile file = myFixture.configureByFile("NonNlsStringLiteral.java"); + Set expressions = getUElementsOfTypeFromFile(file, ULiteralExpression.class); + assertSize(12, expressions); + expressions.forEach(expression -> assertTrue(isNonNlsStringLiteral(expression))); + } + + public void testPlainStringLiterals() { + PsiFile file = myFixture.configureByFile("PlainStringLiteral.java"); + Set expressions = getUElementsOfTypeFromFile(file, ULiteralExpression.class); + assertSize(7, expressions); + expressions.forEach(expression -> assertFalse(isNonNlsStringLiteral(expression))); + } + + public void testLiteralsInNonNlsClass() { + PsiFile file = myFixture.configureByFile("LiteralsInNonNlsClass.java"); + Set expressions = getUElementsOfTypeFromFile(file, ULiteralExpression.class); + assertSize(7, expressions); + expressions.forEach(expression -> assertTrue(isNonNlsStringLiteral(expression))); + } +} diff --git a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/ScheduledForRemovalInspectionTest.kt b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/ScheduledForRemovalInspectionTest.kt new file mode 100644 index 00000000..f79b9009 --- /dev/null +++ b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/ScheduledForRemovalInspectionTest.kt @@ -0,0 +1,22 @@ +package com.intellij.codeInspection.tests.java + +import com.intellij.codeInspection.tests.ScheduledForRemovalInspectionTestBase +import com.intellij.jvm.analysis.JvmAnalysisTestsUtil.TEST_DATA_PROJECT_RELATIVE_BASE_PATH +import com.intellij.testFramework.TestDataPath + +@TestDataPath("/testData/codeInspection/scheduledForRemoval") +class ScheduledForRemovalInspectionTest: ScheduledForRemovalInspectionTestBase() { + override fun getBasePath() = "" + + override fun getTestDataPath() = "${TEST_DATA_PROJECT_RELATIVE_BASE_PATH}/codeInspection/scheduledForRemoval" + + fun testInspection() { + getInspection().myIgnoreInsideImports = false + myFixture.testHighlighting(true, false, false, "ScheduledForRemovalElementsTest.java") + } + + fun testIgnoreImports() { + getInspection().myIgnoreInsideImports = true + myFixture.testHighlighting(true, false, false, "ScheduledForRemovalElementsIgnoreImportsTest.java") + } +} \ No newline at end of file diff --git a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/StringToUpperWithoutLocaleInspectionTest.java b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/StringToUpperWithoutLocaleInspectionTest.java new file mode 100644 index 00000000..99868639 --- /dev/null +++ b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/StringToUpperWithoutLocaleInspectionTest.java @@ -0,0 +1,27 @@ +package com.intellij.codeInspection.tests.java; + +import com.intellij.codeInspection.tests.StringToUpperWithoutLocaleInspectionTestBase; +import com.intellij.jvm.analysis.JvmAnalysisTestsUtil; +import com.intellij.testFramework.TestDataPath; + +@TestDataPath("$CONTENT_ROOT/testData/codeInspection/toUpperWithoutLocale") +public class StringToUpperWithoutLocaleInspectionTest extends StringToUpperWithoutLocaleInspectionTestBase { + @Override + protected String getTestDataPath() { + return JvmAnalysisTestsUtil.TEST_DATA_PROJECT_RELATIVE_BASE_PATH + "/codeInspection/toUpperWithoutLocale"; + } + + public void testSimpleCases() { + myFixture.testHighlighting("SimpleCases.java"); + //TODO test after quickfix once it's implemented + } + + public void testNonNlsCases() { + //TODO test #4 (about equals()) + //TODO test #5 (about @NonNls in the left side of assignment expression) + //TODO test #6 with assigning method return value to variable? If this is not super hard to support. + myFixture.testHighlighting("NonNlsCases.java"); + } + + //TODO test pkg/subPkg +} diff --git a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/UastCallMatcherTest.java b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/UastCallMatcherTest.java new file mode 100644 index 00000000..ca6fa47f --- /dev/null +++ b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/UastCallMatcherTest.java @@ -0,0 +1,30 @@ +package com.intellij.codeInspection.tests.java; + +import com.intellij.codeInspection.tests.UastCallMatcherTestBase; +import com.intellij.jvm.analysis.JvmAnalysisTestsUtil; +import com.intellij.pom.java.LanguageLevel; +import com.intellij.testFramework.TestDataPath; +import com.intellij.testFramework.builders.JavaModuleFixtureBuilder; + +@TestDataPath("$CONTENT_ROOT/testData/codeInspection/uastCallMatcher") +public class UastCallMatcherTest extends UastCallMatcherTestBase { + @Override + protected String getTestDataPath() { + return JvmAnalysisTestsUtil.TEST_DATA_PROJECT_RELATIVE_BASE_PATH + "/codeInspection/uastCallMatcher"; + } + + @Override + protected void tuneFixture(JavaModuleFixtureBuilder moduleBuilder) { + super.tuneFixture(moduleBuilder); + moduleBuilder.setLanguageLevel(LanguageLevel.JDK_1_8); + } + + + public void testCallExpressions() { + doTestCallExpressions("MyClass.java"); + } + + public void testCallableReferences() { + doTestCallableReferences("MethodReferences.java"); + } +} diff --git a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/UnstableApiUsageInspectionTest.kt b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/UnstableApiUsageInspectionTest.kt new file mode 100644 index 00000000..1b509c20 --- /dev/null +++ b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/UnstableApiUsageInspectionTest.kt @@ -0,0 +1,23 @@ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.codeInspection.tests.java + +import com.intellij.codeInspection.tests.UnstableApiUsageInspectionTestBase +import com.intellij.jvm.analysis.JvmAnalysisTestsUtil.TEST_DATA_PROJECT_RELATIVE_BASE_PATH +import com.intellij.testFramework.TestDataPath + +@TestDataPath("/testData/codeInspection/unstableApiUsage") +class UnstableApiUsageInspectionTest : UnstableApiUsageInspectionTestBase() { + override fun getBasePath() = "" + + override fun getTestDataPath() = "${TEST_DATA_PROJECT_RELATIVE_BASE_PATH}/codeInspection/unstableApiUsage" + + fun testInspection() { + getInspection().myIgnoreInsideImports = false + myFixture.testHighlighting(true, false, false, "UnstableElementsTest.java") + } + + fun testIgnoreImports() { + getInspection().myIgnoreInsideImports = true + myFixture.testHighlighting(true, false, false, "UnstableElementsIgnoreImportsTest.java") + } +} diff --git a/jvm/jvm-analysis-java-tests/testSrc/com/intellij/jvm/analysis/JvmAnalysisTestsUtil.java b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/jvm/analysis/JvmAnalysisTestsUtil.java new file mode 100644 index 00000000..c5fceb66 --- /dev/null +++ b/jvm/jvm-analysis-java-tests/testSrc/com/intellij/jvm/analysis/JvmAnalysisTestsUtil.java @@ -0,0 +1,9 @@ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.jvm.analysis; + +import com.intellij.openapi.application.ex.PathManagerEx; + +public final class JvmAnalysisTestsUtil { + public static final String TEST_DATA_PROJECT_RELATIVE_BASE_PATH = + PathManagerEx.getCommunityHomePath() + "/jvm/jvm-analysis-java-tests/testData"; +} -- cgit v1.2.3