diff --git a/python/testSrc/com/jetbrains/python/PythonInspectionsTest.java b/python/testSrc/com/jetbrains/python/PythonInspectionsTest.java index c42cb9ee3a27..16e9a321904d 100644 --- a/python/testSrc/com/jetbrains/python/PythonInspectionsTest.java +++ b/python/testSrc/com/jetbrains/python/PythonInspectionsTest.java @@ -1,52 +1,51 @@ package com.jetbrains.python; import com.intellij.codeInspection.LocalInspectionTool; +import com.intellij.codeInspection.ex.LocalInspectionToolWrapper; import com.intellij.openapi.application.PathManager; -import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.testFramework.InspectionTestCase; +import com.jetbrains.python.fixtures.PyLightFixtureTestCase; import com.jetbrains.python.inspections.*; /** * @author yole */ -public class PythonInspectionsTest extends InspectionTestCase { - @Override - protected Sdk getTestProjectJdk() { - return PythonMockSdk.findOrCreate(); - } - - public void testReturnValueFromInit() throws Exception { +public class PythonInspectionsTest extends PyLightFixtureTestCase { + public void testReturnValueFromInit() throws Throwable { final JythonManager manager = JythonManager.getInstance(); manager.execScriptFromResource("inspections/inspections.py"); // could be moved to setUp() if more jython-based inspections existed doTest(getTestName(true), PythonPyInspectionToolProvider.getInstance().createLocalInspectionTool("ReturnValueFromInitInspection")); } - public void testPyMethodFirstArgAssignmentInspection() throws Exception { + private void doTest(String testName, LocalInspectionTool localInspectionTool) throws Throwable { + myFixture.testInspection(testName, new LocalInspectionToolWrapper(localInspectionTool)); + } + + public void testPyMethodFirstArgAssignmentInspection() throws Throwable { LocalInspectionTool inspection = new PyMethodFirstArgAssignmentInspection(); doTest(getTestName(false), inspection); } - public void testPyUnreachableCodeInspection() throws Exception { + public void testPyUnreachableCodeInspection() throws Throwable { LocalInspectionTool inspection = new PyUnreachableCodeInspection(); doTest(getTestName(false), inspection); } - public void testPyUnresolvedReferencesInspection() throws Exception { + public void testPyUnresolvedReferencesInspection() throws Throwable { LocalInspectionTool inspection = new PyUnresolvedReferencesInspection(); doTest(getTestName(false), inspection); } - public void testPyArgumentListInspection() throws Exception { + public void testPyArgumentListInspection() throws Throwable { LocalInspectionTool inspection = new PyArgumentListInspection(); doTest(getTestName(false), inspection); } - public void testPyRedeclarationInspection() throws Exception { + public void testPyRedeclarationInspection() throws Throwable { LocalInspectionTool inspection = new PyRedeclarationInspection(); doTest(getTestName(false), inspection); } - public void testPyStringFormatInspection() throws Exception { + public void testPyStringFormatInspection() throws Throwable { LocalInspectionTool inspection = new PyStringFormatInspection(); doTest(getTestName(false), inspection); } diff --git a/python/testSrc/com/jetbrains/python/fixtures/PyLightFixtureTestCase.java b/python/testSrc/com/jetbrains/python/fixtures/PyLightFixtureTestCase.java new file mode 100644 index 000000000000..72bcf2c3ca92 --- /dev/null +++ b/python/testSrc/com/jetbrains/python/fixtures/PyLightFixtureTestCase.java @@ -0,0 +1,67 @@ +package com.jetbrains.python.fixtures; + +import com.intellij.openapi.module.EmptyModuleType; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.module.ModuleType; +import com.intellij.openapi.projectRoots.Sdk; +import com.intellij.openapi.roots.ModifiableRootModel; +import com.intellij.testFramework.LightProjectDescriptor; +import com.intellij.testFramework.UsefulTestCase; +import com.intellij.testFramework.fixtures.CodeInsightTestFixture; +import com.intellij.testFramework.fixtures.IdeaProjectTestFixture; +import com.intellij.testFramework.fixtures.IdeaTestFixtureFactory; +import com.intellij.testFramework.fixtures.TestFixtureBuilder; +import com.intellij.testFramework.fixtures.impl.LightTempDirTestFixtureImpl; +import com.jetbrains.python.PythonMockSdk; +import org.jetbrains.annotations.Nullable; + +/** + * @author yole + */ +public class PyLightFixtureTestCase extends UsefulTestCase { + private static final PyLightProjectDescriptor ourPyDescriptor = new PyLightProjectDescriptor(); + + protected CodeInsightTestFixture myFixture; + + @Override + protected void setUp() throws Exception { + super.setUp(); + IdeaTestFixtureFactory factory = IdeaTestFixtureFactory.getFixtureFactory(); + TestFixtureBuilder fixtureBuilder = factory.createLightFixtureBuilder(getProjectDescriptor()); + final IdeaProjectTestFixture fixture = fixtureBuilder.getFixture(); + myFixture = IdeaTestFixtureFactory.getFixtureFactory().createCodeInsightFixture(fixture, new LightTempDirTestFixtureImpl()); + myFixture.setUp(); + + myFixture.setTestDataPath(getTestDataPath()); + } + + protected String getTestDataPath() { + return null; + } + + @Override + protected void tearDown() throws Exception { + myFixture.tearDown(); + myFixture = null; + super.tearDown(); + } + + @Nullable + protected LightProjectDescriptor getProjectDescriptor() { + return ourPyDescriptor; + } + + private static class PyLightProjectDescriptor implements LightProjectDescriptor { + public ModuleType getModuleType() { + return EmptyModuleType.getInstance(); + } + + public Sdk getSdk() { + return PythonMockSdk.findOrCreate(); + } + + public void configureModule(Module module, ModifiableRootModel model) { + } + } + +}