Reuse intention test data in inspection tests

This commit is contained in:
Alexey Sedunov
2014-04-08 14:20:44 +04:00
parent 32a2e63ae5
commit f5fb2ea0ab
10 changed files with 183 additions and 33 deletions
@@ -1,5 +1,6 @@
<root>
<item name='com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase com.intellij.psi.PsiManager getPsiManager()'>
<item
name='com.intellij.testFramework.fixtures.CodeInsightTestFixture com.intellij.openapi.vfs.VirtualFile copyDirectoryToProject(java.lang.String, java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='com.intellij.testFramework.fixtures.CodeInsightTestFixture void assertPreferredCompletionItems(int, java.lang.String...)'>
@@ -7,4 +8,10 @@
<val name="value" val="&quot;fun assertPreferredCompletionItems(selected: Int, vararg expected: String)&quot;"/>
</annotation>
</item>
<item name='com.intellij.testFramework.fixtures.IdeaProjectTestFixture com.intellij.openapi.project.Project getProject()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
<item name='com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase com.intellij.psi.PsiManager getPsiManager()'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -0,0 +1,6 @@
<root>
<item
name='com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl com.intellij.openapi.vfs.VirtualFile copyDirectoryToProject(java.lang.String, java.lang.String)'>
<annotation name='org.jetbrains.annotations.NotNull'/>
</item>
</root>
@@ -391,7 +391,7 @@ fun main(args: Array<String>) {
}
testClass(javaClass<AbstractJetInspectionTest>()) {
model("codeInsight/inspections", extension = null, recursive = false)
model("intentions", pattern = "^(inspections\\.test)$", singleClass = true)
}
testClass(javaClass<AbstractHierarchyTest>()) {
@@ -1,10 +0,0 @@
<problems>
<problem>
<file>main.kt</file>
<line>3</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/src/main.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Explicit 'get'</problem_class>
<description>Replace 'get' call with index operator</description>
</problem>
</problems>
@@ -1,4 +0,0 @@
fun foo() {
val a = Array<Int>(10) { it }
println(a.get(5))
}
@@ -0,0 +1,127 @@
<problems>
<problem>
<file>unnamedAndNamed.kt</file>
<line>6</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/unnamedAndNamed.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Explicit 'get'</problem_class>
<description>Replace 'get' call with index operator</description>
</problem>
<problem>
<file>unacceptableVararg.kt</file>
<line>7</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/unacceptableVararg.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Explicit 'get'</problem_class>
<description>Replace 'get' call with index operator</description>
</problem>
<problem>
<file>singleNamedArgument.kt</file>
<line>6</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/singleNamedArgument.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Explicit 'get'</problem_class>
<description>Replace 'get' call with index operator</description>
</problem>
<problem>
<file>singleArgument.kt</file>
<line>6</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/singleArgument.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Explicit 'get'</problem_class>
<description>Replace 'get' call with index operator</description>
</problem>
<problem>
<file>namedAndFunction.kt</file>
<line>6</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/namedAndFunction.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Explicit 'get'</problem_class>
<description>Replace 'get' call with index operator</description>
</problem>
<problem>
<file>multiArgument.kt</file>
<line>6</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/multiArgument.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Explicit 'get'</problem_class>
<description>Replace 'get' call with index operator</description>
</problem>
<problem>
<file>missingDefaultArgument.kt</file>
<line>7</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/missingDefaultArgument.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Explicit 'get'</problem_class>
<description>Replace 'get' call with index operator</description>
</problem>
<problem>
<file>missingArgument.kt</file>
<line>8</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/missingArgument.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Explicit 'get'</problem_class>
<description>Replace 'get' call with index operator</description>
</problem>
<problem>
<file>invalidArgument.kt</file>
<line>8</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/invalidArgument.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Explicit 'get'</problem_class>
<description>Replace 'get' call with index operator</description>
</problem>
<problem>
<file>functionalArgument.kt</file>
<line>6</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/functionalArgument.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Explicit 'get'</problem_class>
<description>Replace 'get' call with index operator</description>
</problem>
<problem>
<file>extensionFunction.kt</file>
<line>6</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/extensionFunction.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Explicit 'get'</problem_class>
<description>Replace 'get' call with index operator</description>
</problem>
<problem>
<file>duplicateArguments.kt</file>
<line>9</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/duplicateArguments.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Explicit 'get'</problem_class>
<description>Replace 'get' call with index operator</description>
</problem>
<problem>
<file>argumentAndFunction.kt</file>
<line>6</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/argumentAndFunction.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Explicit 'get'</problem_class>
<description>Replace 'get' call with index operator</description>
</problem>
<problem>
<file>acceptableVararg.kt</file>
<line>6</line>
<module>light_idea_test_case</module>
<entry_point TYPE="file" FQNAME="temp:///src/acceptableVararg.kt" />
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Explicit 'get'</problem_class>
<description>Replace 'get' call with index operator</description>
</problem>
</problems>
@@ -23,24 +23,42 @@ import com.intellij.codeInspection.LocalInspectionTool
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase
import com.intellij.testFramework.LightProjectDescriptor
import org.jetbrains.jet.plugin.JetLightProjectDescriptor
import org.jetbrains.jet.plugin.PluginTestCaseBase
import com.intellij.codeInspection.InspectionEP
import com.intellij.codeInspection.ex.LocalInspectionToolWrapper
import com.intellij.analysis.AnalysisScope
import com.intellij.codeInspection.ex.InspectionManagerEx
import com.intellij.testFramework.InspectionTestUtil
import com.intellij.codeInspection.InspectionManager
import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl
import org.jetbrains.jet.JetTestCaseBuilder
public abstract class AbstractJetInspectionTest: LightCodeInsightFixtureTestCase() {
override fun getProjectDescriptor(): LightProjectDescriptor = JetLightProjectDescriptor.INSTANCE
override fun setUp() {
super.setUp()
myFixture!!.setTestDataPath("${PluginTestCaseBase.getTestDataPathBase()}/codeInsight/inspections")
}
protected fun doTest(path: String) {
val testDir = File(path).getName()
val optionsFile = File(path)
val options = FileUtil.loadFile(optionsFile, true)
val options = FileUtil.loadFile(File(path, "options.test"), true)
val inspectionClass = Class.forName(InTextDirectivesUtils.findStringWithPrefixes(options, "// INSPECTION_CLASS: ")!!)
val toolWrapper = LocalInspectionToolWrapper(inspectionClass.newInstance() as LocalInspectionTool)
myFixture!!.testInspection(testDir, LocalInspectionToolWrapper(inspectionClass.newInstance() as LocalInspectionTool))
val inspectionsTestDir = optionsFile.getParentFile()!!
val srcDir = inspectionsTestDir.getParentFile()!!
with(myFixture!!) {
setTestDataPath("${JetTestCaseBuilder.getHomeDirectory()}/$srcDir")
val virtualFiles = srcDir
.listFiles { it.getName().endsWith(".kt") }!!
.map { configureByFile(it.getName())!!.getVirtualFile()!! }
val scope = AnalysisScope(getProject(), virtualFiles)
scope.invalidate()
val inspectionManager = (InspectionManager.getInstance(getProject()) as InspectionManagerEx)
val globalContext = CodeInsightTestFixtureImpl.createGlobalContextForTool(scope, getProject(), inspectionManager, toolWrapper)
InspectionTestUtil.runTool(toolWrapper, scope, globalContext, inspectionManager)
InspectionTestUtil.compareToolResults(globalContext, toolWrapper, false, inspectionsTestDir.getPath())
}
}
}
@@ -30,15 +30,15 @@ import org.jetbrains.jet.plugin.codeInsight.AbstractJetInspectionTest;
/** This class is generated by {@link org.jetbrains.jet.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("idea/testData/codeInsight/inspections")
@TestMetadata("idea/testData/intentions")
public class JetInspectionTestGenerated extends AbstractJetInspectionTest {
public void testAllFilesPresentInInspections() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("idea/testData/codeInsight/inspections"), Pattern.compile("^([^\\.]+)$"), false);
public void testAllFilesPresentInIntentions() throws Exception {
JetTestUtils.assertAllTestsPresentInSingleGeneratedClass(this.getClass(), "org.jetbrains.jet.generators.tests.TestsPackage", new File("idea/testData/intentions"), Pattern.compile("^(inspections\\.test)$"));
}
@TestMetadata("replaceGet")
public void testReplaceGet() throws Exception {
doTest("idea/testData/codeInsight/inspections/replaceGet");
@TestMetadata("attributeCallReplacements/replaceGetIntention/inspectionData/inspections.test")
public void testAttributeCallReplacements_replaceGetIntention_inspectionData_Inspections_test() throws Exception {
doTest("idea/testData/intentions/attributeCallReplacements/replaceGetIntention/inspectionData/inspections.test");
}
}
@@ -2193,6 +2193,7 @@ public class CodeTransformationTestGenerated extends AbstractCodeTransformationT
}
@TestMetadata("idea/testData/intentions/attributeCallReplacements/replaceGetIntention")
@InnerTestClasses({})
public static class ReplaceGetIntention extends AbstractCodeTransformationTest {
@TestMetadata("acceptableVararg.kt")
public void testAcceptableVararg() throws Exception {
@@ -2278,6 +2279,11 @@ public class CodeTransformationTestGenerated extends AbstractCodeTransformationT
doTestReplaceGetIntention("idea/testData/intentions/attributeCallReplacements/replaceGetIntention/unnamedAndNamed.kt");
}
public static Test innerSuite() {
TestSuite suite = new TestSuite("ReplaceGetIntention");
suite.addTestSuite(ReplaceGetIntention.class);
return suite;
}
}
@TestMetadata("idea/testData/intentions/attributeCallReplacements/replaceContainsIntention")
@@ -3210,7 +3216,7 @@ public class CodeTransformationTestGenerated extends AbstractCodeTransformationT
suite.addTestSuite(ReplaceItWithExplicitFunctionLiteralParam.class);
suite.addTestSuite(RemoveBraces.class);
suite.addTestSuite(AddBraces.class);
suite.addTestSuite(ReplaceGetIntention.class);
suite.addTest(ReplaceGetIntention.innerSuite());
suite.addTestSuite(ReplaceContainsIntention.class);
suite.addTestSuite(ReplaceBinaryInfixIntention.class);
suite.addTestSuite(ReplaceUnaryPrefixIntention.class);