mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-189985 - RegistrationProblemsInspection - Move action tests from PluginXmlFunctionalTest to specific classes
GitOrigin-RevId: b4779798a4fd314163a7579926375bbe365b73a8
This commit is contained in:
committed by
intellij-monorepo-bot
parent
375689d19f
commit
21d9d47e6a
+1
@@ -0,0 +1 @@
|
||||
another.key=My Text
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
my.key=My Text
|
||||
advanced.setting.mySettingKey=Advanced Setting Key
|
||||
+9
-31
@@ -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", "<keymap/>")
|
||||
myFixture.testHighlighting()
|
||||
}
|
||||
|
||||
@SuppressWarnings("ComponentNotRegistered")
|
||||
void testActionCompletion() {
|
||||
configureByFile()
|
||||
@@ -827,12 +805,12 @@ public class MyErrorHandler extends ErrorReportSubmitter {}
|
||||
true)
|
||||
}
|
||||
static List<IntentionAction> actions(HighlightInfo info) {
|
||||
List<IntentionAction> result = new ArrayList<IntentionAction>();
|
||||
List<IntentionAction> result = new ArrayList<IntentionAction>()
|
||||
info.findRegisteredQuickFix((descriptor,range) -> {
|
||||
result.add(descriptor.getAction())
|
||||
return null;
|
||||
});
|
||||
return result;
|
||||
return null
|
||||
})
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
|
||||
+24
@@ -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", "<keymap/>");
|
||||
myFixture.testHighlighting("ActionComplexHighlighting.xml");
|
||||
}
|
||||
}
|
||||
|
||||
+107
@@ -0,0 +1,107 @@
|
||||
<idea-plugin>
|
||||
<resource-bundle>MyBundle</resource-bundle>
|
||||
|
||||
<actions>
|
||||
<group id="myGroup">
|
||||
<group id="myRecursiveGroup"/>
|
||||
<action id="myRecursiveAction" class="foo.bar.BarAction"/>
|
||||
</group>
|
||||
<action id="myAction" class="foo.bar.BarAction" keymap="MyKeymap">
|
||||
<keyboard-shortcut first-keystroke="F" keymap="MyKeymap"/>
|
||||
<mouse-shortcut keystroke="button2" keymap="MyKeymap"/>
|
||||
</action>
|
||||
|
||||
<group id=<error descr="Value must not be empty">""</error>/>
|
||||
<group id="withClass" class="foo.bar.BarGroup"/>
|
||||
<group id="invalidClass" class="<error descr="'java.lang.String' is not assignable to 'com.intellij.openapi.actionSystem.ActionGroup'">java.lang.String</error>"/>
|
||||
|
||||
<<warning descr="'id' should be specified">group</warning> class="foo.bar.BarGroup"/>
|
||||
|
||||
<group id="groupWithUseShortcutOf" class="foo.bar.GroupWithCanBePerformed" use-shortcut-of="myAction"/>
|
||||
<group id="groupWithUseShortcutOfInvalid" class="foo.bar.GroupWithCanBePerformed" use-shortcut-of="<error descr="Cannot resolve action 'INVALID_VALUE'">INVALID_VALUE</error>"/>
|
||||
<<error descr="'class' must be specified with 'use-shortcut-of'">group</error> id="groupWithUseShortcutOfWithoutClassAttribute" use-shortcut-of="myAction"/>
|
||||
<group id="groupWithUseShortcutOfCanBePerformedNotOverridden" class="<error descr="Must override ActionGroup.canBePerformed(DataContext) with 'use-shortcut-of'">foo.bar.BarGroup</error>" use-shortcut-of="myAction"/>
|
||||
|
||||
|
||||
|
||||
<action id=<error descr="Value must not be empty">""</error> class="foo.bar.BarAction"/>
|
||||
<action id="invalidClass" class="<error descr="'java.lang.String' is not assignable to 'com.intellij.openapi.actionSystem.AnAction'">java.lang.String</error>" />
|
||||
|
||||
<action id="withUseShortcutOf" class="foo.bar.BarAction" use-shortcut-of="myAction"/>
|
||||
<action id="withUseShortcutOfGroupInvalid" class="foo.bar.BarAction" use-shortcut-of="<error descr="Cannot resolve action 'myGroup'">myGroup</error>"/>
|
||||
<action id="withUseShortcutOfInvalid" class="foo.bar.BarAction" use-shortcut-of="<error descr="Cannot resolve action 'INVALID_VALUE'">INVALID_VALUE</error>"/>
|
||||
<action id="withKeymapInvalid" class="foo.bar.BarAction" keymap="<error descr="Cannot resolve keymap 'INVALID_VALUE'">INVALID_VALUE</error>">
|
||||
<keyboard-shortcut first-keystroke="F" keymap="<error descr="Cannot resolve keymap 'INVALID_VALUE'">INVALID_VALUE</error>"/>
|
||||
<mouse-shortcut keystroke="button2" keymap="<error descr="Cannot resolve keymap 'INVALID_VALUE'">INVALID_VALUE</error>"/>
|
||||
</action>
|
||||
|
||||
<action id="testAddToGroup" class="foo.bar.BarAction">
|
||||
<add-to-group group-id="myGroup"/>
|
||||
<add-to-group group-id="<error descr="Cannot resolve group 'myAction'">myAction</error>"/>
|
||||
<add-to-group group-id="<error descr="Cannot resolve group 'INVALID_VALUE'">INVALID_VALUE</error>"/>
|
||||
|
||||
<add-to-group group-id="myGroup" relative-to-action="myAction" anchor="after"/>
|
||||
<add-to-group group-id="myGroup" relative-to-action="<error descr="Cannot resolve action or group 'INVALID_VALUE'">INVALID_VALUE</error>" anchor="after"/>
|
||||
|
||||
<<error descr="'anchor' must be specified with 'relative-to-action'">add-to-group</error> group-id="myGroup" relative-to-action="myAction"/>
|
||||
<add-to-group group-id="myGroup" relative-to-action="myAction" anchor="<error descr="Must use 'after'|'before' with 'relative-to-action'">first</error>"/>
|
||||
</action>
|
||||
|
||||
<action id="testSynonymAttributes" class="foo.bar.BarAction">
|
||||
<synonym text="Syn Text"/>
|
||||
<synonym key="<error descr="Cannot resolve property key">INVALID_KEY</error>"/>
|
||||
|
||||
<<error descr="'<synonym>' must specify either 'key' or 'text' attribute">synonym</error>/>
|
||||
<<error descr="'<synonym>' must not specify both 'key' or 'text' attributes">synonym</error> text="Syn Text" key="<error descr="Cannot resolve property key">INVALID_KEY</error>"/>
|
||||
</action>
|
||||
|
||||
<reference id="myGroup"/>
|
||||
<reference id="myAction"/>
|
||||
<reference id="myRecursiveGroup"/>
|
||||
<reference id="myRecursiveAction"/>
|
||||
<reference id="<error descr="Cannot resolve action or group 'INVALID_VALUE'">INVALID_VALUE</error>"/>
|
||||
|
||||
<reference ref="myGroup"/>
|
||||
<reference ref="myAction"/>
|
||||
<reference ref="myRecursiveGroup"/>
|
||||
<reference ref="myRecursiveAction"/>
|
||||
<reference ref="<error descr="Cannot resolve action or group 'INVALID_VALUE'">INVALID_VALUE</error>"/>
|
||||
|
||||
<action id="WithDefaultConstructor" class="foo.ActionWithDefaultConstructor"/>
|
||||
</actions>
|
||||
|
||||
|
||||
<!-- separator/synonym I18N -->
|
||||
<actions>
|
||||
<group id="separatorGroup">
|
||||
<separator key="my.key"/>
|
||||
<separator key="<error descr="Cannot resolve property key">INVALID_KEY</error>"/>
|
||||
</group>
|
||||
<group id="synonymGroup">
|
||||
<action class="foo.bar.BarAction">
|
||||
<synonym key="my.key"/>
|
||||
<synonym key="<error descr="Cannot resolve property key">INVALID_KEY</error>"/>
|
||||
</action>
|
||||
<reference ref="myGroup">
|
||||
<synonym key="my.key"/>
|
||||
<synonym key="<error descr="Cannot resolve property key">INVALID_KEY</error>"/>
|
||||
</reference>
|
||||
</group>
|
||||
</actions>
|
||||
<actions resource-bundle="AnotherBundle">
|
||||
<group id="separatorGroupWithCustomResourceBundle">
|
||||
<separator key="another.key"/>
|
||||
<separator key="<error descr="Cannot resolve property key">my.key</error>"/>
|
||||
</group>
|
||||
|
||||
<group id="synonymGroupWithCustomResourceBundle">
|
||||
<action class="foo.bar.BarAction">
|
||||
<synonym key="another.key"/>
|
||||
<synonym key="<error descr="Cannot resolve property key">my.key</error>"/>
|
||||
</action>
|
||||
</group>
|
||||
</actions>
|
||||
|
||||
<actions resource-bundle="<error descr="Cannot resolve property bundle">INVALID_BUNDLE</error>"/>
|
||||
|
||||
</idea-plugin>
|
||||
+1
@@ -0,0 +1 @@
|
||||
another.key=My Text
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
my.key=My Text
|
||||
advanced.setting.mySettingKey=Advanced Setting Key
|
||||
+34
@@ -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", "<keymap/>");
|
||||
myFixture.testHighlighting("ActionComplexHighlighting.xml");
|
||||
}
|
||||
|
||||
private void addKotlinClass(String fileName, @Language("kotlin") String code) {
|
||||
myFixture.addFileToProject(fileName, code);
|
||||
}
|
||||
}
|
||||
|
||||
+2
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user