From 21d9d47e6a7da688cae2e672dc5b32e2c2d256fe Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Wed, 2 Nov 2022 15:41:29 +0100 Subject: [PATCH] IDEA-189985 - RegistrationProblemsInspection - Move action tests from PluginXmlFunctionalTest to specific classes GitOrigin-RevId: b4779798a4fd314163a7579926375bbe365b73a8 --- .../actions/ActionComplexHighlighting.xml} | 0 .../xml/actions/AnotherBundle.properties | 1 + .../xml/actions/MyBundle.properties | 2 + .../PluginXmlFunctionalTest.groovy | 40 ++----- ...mlDomInspectionActionHighlightingTest.java | 24 ++++ .../xml/actions/ActionComplexHighlighting.xml | 107 ++++++++++++++++++ .../xml/actions/AnotherBundle.properties | 1 + .../xml/actions/MyBundle.properties | 2 + ...mlDomInspectionActionHighlightingTest.java | 34 ++++++ .../PluginXmlDomInspectionTestBase.java | 2 + 10 files changed, 182 insertions(+), 31 deletions(-) rename plugins/devkit/devkit-java-tests/testData/{codeInsight/ActionHighlighting.xml => inspections/registrationProblems/xml/actions/ActionComplexHighlighting.xml} (100%) create mode 100644 plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/AnotherBundle.properties create mode 100644 plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/MyBundle.properties create mode 100644 plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/ActionComplexHighlighting.xml create mode 100644 plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/AnotherBundle.properties create mode 100644 plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/MyBundle.properties diff --git a/plugins/devkit/devkit-java-tests/testData/codeInsight/ActionHighlighting.xml b/plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/ActionComplexHighlighting.xml similarity index 100% rename from plugins/devkit/devkit-java-tests/testData/codeInsight/ActionHighlighting.xml rename to plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/ActionComplexHighlighting.xml diff --git a/plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/AnotherBundle.properties b/plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/AnotherBundle.properties new file mode 100644 index 000000000000..fdc9fcf3b6ff --- /dev/null +++ b/plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/AnotherBundle.properties @@ -0,0 +1 @@ +another.key=My Text \ No newline at end of file diff --git a/plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/MyBundle.properties b/plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/MyBundle.properties new file mode 100644 index 000000000000..0721566edff3 --- /dev/null +++ b/plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/MyBundle.properties @@ -0,0 +1,2 @@ +my.key=My Text +advanced.setting.mySettingKey=Advanced Setting Key \ No newline at end of file diff --git a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy index afb08f585f4a..5f4a7521e9cd 100644 --- a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy +++ b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy @@ -110,9 +110,9 @@ class PluginXmlFunctionalTest extends JavaCodeInsightFixtureTestCase { String ideCore = PathUtil.getJarPathForClass(Configurable.class) moduleBuilder.addLibrary("ide-core", ideCore) String ideCoreImpl = PathUtil.getJarPathForClass(NotificationGroupEP.class) - moduleBuilder.addLibrary("ide-core-impl", ideCoreImpl); + moduleBuilder.addLibrary("ide-core-impl", ideCoreImpl) - moduleBuilder.addLibrary("util-ui", PathUtil.getJarPathForClass(AllIcons.class)); + moduleBuilder.addLibrary("util-ui", PathUtil.getJarPathForClass(AllIcons.class)) } // Gradle-like setup, but JBList not in Library @@ -232,9 +232,9 @@ class PluginXmlFunctionalTest extends JavaCodeInsightFixtureTestCase { String moduleDescriptorFilename = name+ ".xml" VirtualFile moduleRoot = myFixture.tempDirFixture.findOrCreateDir(name) VirtualFile file = myFixture.copyFileToProject(moduleDescriptorFilename, "/" + name + "/" + moduleDescriptorFilename) - Module dependencyModule = PsiTestUtil.addModule(getProject(), StdModuleTypes.JAVA, name, moduleRoot); - ModuleRootModificationUtil.setModuleSdk(dependencyModule, IdeaTestUtil.getMockJdk17()); - ModuleRootModificationUtil.addDependency(getModule(), dependencyModule); + Module dependencyModule = PsiTestUtil.addModule(getProject(), StdModuleTypes.JAVA, name, moduleRoot) + ModuleRootModificationUtil.setModuleSdk(dependencyModule, IdeaTestUtil.getMockJdk17()) + ModuleRootModificationUtil.addDependency(getModule(), dependencyModule) return file } @@ -690,28 +690,6 @@ public class MyErrorHandler extends ErrorReportSubmitter {} myFixture.checkResultByFile(getTestName(true) + "_after.xml") } - @SuppressWarnings("ComponentNotRegistered") - void testActionHighlighting() { - configureByFile() - myFixture.copyFileToProject("MyBundle.properties") - myFixture.copyFileToProject("AnotherBundle.properties") - myFixture.addClass("package foo.bar; public class BarAction extends com.intellij.openapi.actionSystem.AnAction { }") - myFixture.addClass("""package foo; class PackagePrivateActionBase extends com.intellij.openapi.actionSystem.AnAction { - PackagePrivateActionBase() {} - } """) - myFixture.addClass("package foo; public class ActionWithDefaultConstructor extends PackagePrivateActionBase { }") - myFixture.addClass("package foo.bar; public class BarGroup extends com.intellij.openapi.actionSystem.ActionGroup { }") - myFixture.addClass("package foo.bar; import org.jetbrains.annotations.NotNull;" + - "public class GroupWithCanBePerformed extends com.intellij.openapi.actionSystem.ActionGroup { " + - " @Override " + - " public boolean canBePerformed(@NotNull com.intellij.openapi.actionSystem.DataContext context) {" + - " return true;" + - " }" + - "}") - myFixture.addFileToProject("keymaps/MyKeymap.xml", "") - myFixture.testHighlighting() - } - @SuppressWarnings("ComponentNotRegistered") void testActionCompletion() { configureByFile() @@ -827,12 +805,12 @@ public class MyErrorHandler extends ErrorReportSubmitter {} true) } static List actions(HighlightInfo info) { - List result = new ArrayList(); + List result = new ArrayList() info.findRegisteredQuickFix((descriptor,range) -> { result.add(descriptor.getAction()) - return null; - }); - return result; + return null + }) + return result } diff --git a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionActionHighlightingTest.java b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionActionHighlightingTest.java index 1abd1a48d6fd..7d1f78c6f8f8 100644 --- a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionActionHighlightingTest.java +++ b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionActionHighlightingTest.java @@ -28,4 +28,28 @@ public class PluginXmlDomInspectionActionHighlightingTest extends PluginXmlDomIn public void testActionWrongClass() { myFixture.testHighlighting("ActionWrongClass.xml"); } + + @SuppressWarnings({"ComponentNotRegistered", "removal"}) + public void testActionComplexHighlighting() { + myFixture.copyFileToProject("MyBundle.properties"); + myFixture.copyFileToProject("AnotherBundle.properties"); + myFixture.addClass("package foo.bar; public class BarAction extends com.intellij.openapi.actionSystem.AnAction {}"); + myFixture.addClass(""" + package foo; + class PackagePrivateActionBase extends com.intellij.openapi.actionSystem.AnAction { + PackagePrivateActionBase() {} + }"""); + myFixture.addClass("package foo; public class ActionWithDefaultConstructor extends PackagePrivateActionBase {}"); + myFixture.addClass("package foo.bar; public class BarGroup extends com.intellij.openapi.actionSystem.ActionGroup {}"); + myFixture.addClass(""" + package foo.bar; + import org.jetbrains.annotations.NotNull; + public class GroupWithCanBePerformed extends com.intellij.openapi.actionSystem.ActionGroup { + @Override + public boolean canBePerformed(@NotNull com.intellij.openapi.actionSystem.DataContext context) { return true; } + }"""); + + myFixture.addFileToProject("keymaps/MyKeymap.xml", ""); + myFixture.testHighlighting("ActionComplexHighlighting.xml"); + } } diff --git a/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/ActionComplexHighlighting.xml b/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/ActionComplexHighlighting.xml new file mode 100644 index 000000000000..3d108fa24096 --- /dev/null +++ b/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/ActionComplexHighlighting.xml @@ -0,0 +1,107 @@ + + MyBundle + + + + + + + + + + + + ""/> + + java.lang.String"/> + + <group class="foo.bar.BarGroup"/> + + + INVALID_VALUE"/> + <group id="groupWithUseShortcutOfWithoutClassAttribute" use-shortcut-of="myAction"/> + foo.bar.BarGroup" use-shortcut-of="myAction"/> + + + + "" class="foo.bar.BarAction"/> + java.lang.String" /> + + + myGroup"/> + INVALID_VALUE"/> + INVALID_VALUE"> + INVALID_VALUE"/> + INVALID_VALUE"/> + + + + + myAction"/> + INVALID_VALUE"/> + + + INVALID_VALUE" anchor="after"/> + + <add-to-group group-id="myGroup" relative-to-action="myAction"/> + first"/> + + + + + INVALID_KEY"/> + + <synonym/> + <synonym text="Syn Text" key="INVALID_KEY"/> + + + + + + + INVALID_VALUE"/> + + + + + + INVALID_VALUE"/> + + + + + + + + + + INVALID_KEY"/> + + + + + INVALID_KEY"/> + + + + INVALID_KEY"/> + + + + + + + my.key"/> + + + + + + my.key"/> + + + + + INVALID_BUNDLE"/> + + \ No newline at end of file diff --git a/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/AnotherBundle.properties b/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/AnotherBundle.properties new file mode 100644 index 000000000000..fdc9fcf3b6ff --- /dev/null +++ b/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/AnotherBundle.properties @@ -0,0 +1 @@ +another.key=My Text \ No newline at end of file diff --git a/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/MyBundle.properties b/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/MyBundle.properties new file mode 100644 index 000000000000..0721566edff3 --- /dev/null +++ b/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/MyBundle.properties @@ -0,0 +1,2 @@ +my.key=My Text +advanced.setting.mySettingKey=Advanced Setting Key \ No newline at end of file diff --git a/plugins/devkit/devkit-kotlin-tests/testSrc/org/jetbrains/idea/devkit/kotlin/inspections/KtPluginXmlDomInspectionActionHighlightingTest.java b/plugins/devkit/devkit-kotlin-tests/testSrc/org/jetbrains/idea/devkit/kotlin/inspections/KtPluginXmlDomInspectionActionHighlightingTest.java index 6c79331e1014..9307e168278f 100644 --- a/plugins/devkit/devkit-kotlin-tests/testSrc/org/jetbrains/idea/devkit/kotlin/inspections/KtPluginXmlDomInspectionActionHighlightingTest.java +++ b/plugins/devkit/devkit-kotlin-tests/testSrc/org/jetbrains/idea/devkit/kotlin/inspections/KtPluginXmlDomInspectionActionHighlightingTest.java @@ -2,6 +2,7 @@ package org.jetbrains.idea.devkit.kotlin.inspections; import com.intellij.testFramework.TestDataPath; +import org.intellij.lang.annotations.Language; import org.jetbrains.idea.devkit.inspections.PluginXmlDomInspectionTestBase; import org.jetbrains.idea.devkit.kotlin.DevkitKtTestsUtil; @@ -29,4 +30,37 @@ public class KtPluginXmlDomInspectionActionHighlightingTest extends PluginXmlDom public void testActionWrongClass() { myFixture.testHighlighting("ActionWrongClass.xml"); } + + public void testActionComplexHighlighting() { + myFixture.copyFileToProject("MyBundle.properties"); + myFixture.copyFileToProject("AnotherBundle.properties"); + addKotlinClass("foo/bar/BarAction.kt", + """ + package foo.bar + class BarAction : com.intellij.openapi.actionSystem.AnAction() {}"""); + addKotlinClass("foo/InternalActionBase.kt", """ + package foo + internal class InternalActionBase : com.intellij.openapi.actionSystem.AnAction() { + constructor() {} + }"""); + addKotlinClass("foo/ActionWithDefaultConstructor.kt", """ + package foo + class ActionWithDefaultConstructor : InternalActionBase() {}"""); + addKotlinClass("foo/bar/BarGroup.kt", """ + package foo.bar + public class BarGroup : com.intellij.openapi.actionSystem.ActionGroup() {}"""); + addKotlinClass("foo/bar/GroupWithCanBePerformed.kt", """ + package foo.bar + public class GroupWithCanBePerformed : com.intellij.openapi.actionSystem.ActionGroup() { + override fun canBePerformed(context: com.intellij.openapi.actionSystem.DataContext): Boolean { + return true + } + }"""); + myFixture.addFileToProject("keymaps/MyKeymap.xml", ""); + myFixture.testHighlighting("ActionComplexHighlighting.xml"); + } + + private void addKotlinClass(String fileName, @Language("kotlin") String code) { + myFixture.addFileToProject(fileName, code); + } } diff --git a/plugins/devkit/devkit-tests/src/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionTestBase.java b/plugins/devkit/devkit-tests/src/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionTestBase.java index a6073f4107f2..27dc0ea64d0d 100644 --- a/plugins/devkit/devkit-tests/src/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionTestBase.java +++ b/plugins/devkit/devkit-tests/src/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionTestBase.java @@ -8,7 +8,9 @@ public abstract class PluginXmlDomInspectionTestBase extends LightJavaCodeInsigh @Override protected void setUp() throws Exception { super.setUp(); + myFixture.addClass("package com.intellij.openapi.actionSystem; public interface DataContext {}"); myFixture.addClass("package com.intellij.openapi.actionSystem; public class AnAction {}"); + myFixture.addClass("package com.intellij.openapi.actionSystem; public abstract class ActionGroup extends AnAction {}"); myFixture.addClass("package com.intellij.openapi.components; public interface ApplicationComponent {}"); myFixture.enableInspections(new PluginXmlDomInspection()); }