add a test for the dev kit inspection: try to write stateless EP;
authorSergey Ignatov <sergey.ignatov@jetbrains.com>
Tue, 3 Nov 2015 13:29:28 +0000 (16:29 +0300)
committerSergey Ignatov <sergey.ignatov@jetbrains.com>
Tue, 3 Nov 2015 13:30:53 +0000 (16:30 +0300)
on IDEA-CR-6432

plugins/devkit/testData/inspections/statefulEp/Ext.java [new file with mode: 0644]
plugins/devkit/testData/inspections/statefulEp/Fix.java [new file with mode: 0644]
plugins/devkit/testData/inspections/statefulEp/NonFix.java [new file with mode: 0644]
plugins/devkit/testData/inspections/statefulEp/plugin.xml [new file with mode: 0644]
plugins/devkit/testSources/inspections/StatefulEpInspectionTest.java [new file with mode: 0644]

diff --git a/plugins/devkit/testData/inspections/statefulEp/Ext.java b/plugins/devkit/testData/inspections/statefulEp/Ext.java
new file mode 100644 (file)
index 0000000..33088df
--- /dev/null
@@ -0,0 +1,12 @@
+public class Ext {
+  <warning descr="Potential memory leak: don't hold PsiElement, use SmartPsiElementPointer instead">final com.intellij.psi.PsiElement pe;</warning>
+  <warning descr="Don't use PsiReference as a field in extension">final com.intellij.psi.PsiReference r;</warning>
+  <warning descr="Don't use Project as a field in extension">com.intellij.openapi.project.Project p;</warning>
+  final com.intellij.openapi.project.Project pf;
+  public Ext() {
+    super();
+    pe = null;
+    r =null;
+    p = pf = null;
+  }
+}
\ No newline at end of file
diff --git a/plugins/devkit/testData/inspections/statefulEp/Fix.java b/plugins/devkit/testData/inspections/statefulEp/Fix.java
new file mode 100644 (file)
index 0000000..e092dc4
--- /dev/null
@@ -0,0 +1,12 @@
+public class Fix extends com.intellij.codeInspection.LocalQuickFix {
+  <warning descr="Potential memory leak: don't hold PsiElement, use SmartPsiElementPointer instead; also see LocalQuickFixOnPsiElement">final com.intellij.psi.PsiElement pe;</warning>
+  <warning descr="Don't use PsiReference as a field in extension">final com.intellij.psi.PsiReference r;</warning>
+  <warning descr="Don't use Project as a field in extension">com.intellij.openapi.project.Project p;</warning>
+  final com.intellij.openapi.project.Project pf;
+  public Fix() {
+    super();
+    pe = null;
+    r =null;
+    p = pf = null;
+  }
+}
\ No newline at end of file
diff --git a/plugins/devkit/testData/inspections/statefulEp/NonFix.java b/plugins/devkit/testData/inspections/statefulEp/NonFix.java
new file mode 100644 (file)
index 0000000..64cef85
--- /dev/null
@@ -0,0 +1,12 @@
+public class NonFix {
+  final com.intellij.psi.PsiElement pe;
+  final com.intellij.psi.PsiReference r;
+  com.intellij.openapi.project.Project p;
+  final com.intellij.openapi.project.Project pf;
+  public NonFix() {
+    super();
+    pe = null;
+    r =null;
+    p = pf = null;
+  }
+}
\ No newline at end of file
diff --git a/plugins/devkit/testData/inspections/statefulEp/plugin.xml b/plugins/devkit/testData/inspections/statefulEp/plugin.xml
new file mode 100644 (file)
index 0000000..dcfcc02
--- /dev/null
@@ -0,0 +1,8 @@
+<idea-plugin>
+  <extensionPoints>
+    <extensionPoint name="ep" beanClass="EP"/>
+  </extensionPoints>
+  <extensions>
+    <ep implementation="Ext"/>
+  </extensions>
+</idea-plugin>
\ No newline at end of file
diff --git a/plugins/devkit/testSources/inspections/StatefulEpInspectionTest.java b/plugins/devkit/testSources/inspections/StatefulEpInspectionTest.java
new file mode 100644 (file)
index 0000000..722511a
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2000-2015 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.jetbrains.idea.devkit.inspections;
+
+import com.intellij.openapi.application.PluginPathManager;
+import com.intellij.testFramework.TestDataPath;
+
+@TestDataPath("$CONTENT_ROOT/testData/inspections/statefulEp")
+public class StatefulEpInspectionTest extends PluginModuleTestCase {
+  @Override
+  protected String getBasePath() {
+    return PluginPathManager.getPluginHomePathRelative("devkit") + "/testData/inspections/statefulEp";
+  }
+
+  @Override
+  protected void setUp() throws Exception {
+    super.setUp();
+    myFixture.addClass("package com.intellij.openapi.project; public class Project {}");
+    myFixture.addClass("package com.intellij.psi; public class PsiElement {}");
+    myFixture.addClass("package com.intellij.psi; public class PsiReference {}");
+    myFixture.addClass("package com.intellij.codeInspection; public class LocalQuickFix {}");
+    myFixture.enableInspections(new StatefulEpInspection());
+  }
+
+  public void testLocalQuickFix() {
+    myFixture.testHighlighting("Fix.java");
+  }
+
+  public void testNonFix() {
+    myFixture.testHighlighting("NonFix.java");
+  }
+
+  public void testExt() {
+    setPluginXml("plugin.xml");
+    myFixture.testHighlighting("Ext.java");
+  }
+}