Minor, cleanup AbstractQuickFixMultiFileTest

This commit is contained in:
Alexander Udalov
2017-09-19 14:17:34 +03:00
parent 23d6690581
commit 113c83b47a
2 changed files with 15 additions and 33 deletions
@@ -45,7 +45,7 @@ public abstract class AbstractAndroidQuickFixMultiFileTest extends AbstractQuick
} }
@Override @Override
protected void doTestWithExtraFile(@NotNull String beforeFileName) throws Exception { protected void doTestWithExtraFile(@NotNull String beforeFileName) {
addManifest(); addManifest();
super.doTestWithExtraFile(beforeFileName); super.doTestWithExtraFile(beforeFileName);
} }
@@ -59,7 +59,7 @@ public abstract class AbstractAndroidQuickFixMultiFileTest extends AbstractQuick
ApplicationManager.getApplication().runWriteAction(facetModel::commit); ApplicationManager.getApplication().runWriteAction(facetModel::commit);
} }
private void addManifest() throws Exception { private void addManifest() {
myFixture.configureByFile("idea/testData/android/AndroidManifest.xml"); myFixture.configureByFile("idea/testData/android/AndroidManifest.xml");
} }
} }
@@ -20,7 +20,6 @@ import com.intellij.codeInsight.CodeInsightSettings
import com.intellij.codeInsight.daemon.quickFix.ActionHint import com.intellij.codeInsight.daemon.quickFix.ActionHint
import com.intellij.codeInsight.intention.IntentionAction import com.intellij.codeInsight.intention.IntentionAction
import com.intellij.codeInspection.InspectionEP import com.intellij.codeInspection.InspectionEP
import com.intellij.codeInspection.InspectionProfileEntry
import com.intellij.codeInspection.LocalInspectionEP import com.intellij.codeInspection.LocalInspectionEP
import com.intellij.ide.highlighter.JavaFileType import com.intellij.ide.highlighter.JavaFileType
import com.intellij.openapi.command.CommandProcessor import com.intellij.openapi.command.CommandProcessor
@@ -47,12 +46,10 @@ import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.testFramework.runWriteAction import org.jetbrains.kotlin.test.testFramework.runWriteAction
import java.io.File import java.io.File
import java.io.IOException
import java.util.* import java.util.*
import java.util.regex.Pattern import java.util.regex.Pattern
abstract class AbstractQuickFixMultiFileTest : KotlinLightCodeInsightFixtureTestCase() { abstract class AbstractQuickFixMultiFileTest : KotlinLightCodeInsightFixtureTestCase() {
@Throws(Exception::class)
protected open fun doTestWithExtraFile(beforeFileName: String) { protected open fun doTestWithExtraFile(beforeFileName: String) {
enableInspections(beforeFileName) enableInspections(beforeFileName)
@@ -64,7 +61,6 @@ abstract class AbstractQuickFixMultiFileTest : KotlinLightCodeInsightFixtureTest
} }
} }
@Throws(IOException::class, ClassNotFoundException::class)
private fun enableInspections(beforeFileName: String) { private fun enableInspections(beforeFileName: String) {
val inspectionFile = findInspectionFile(File(beforeFileName).parentFile) val inspectionFile = findInspectionFile(File(beforeFileName).parentFile)
if (inspectionFile != null) { if (inspectionFile != null) {
@@ -79,15 +75,10 @@ abstract class AbstractQuickFixMultiFileTest : KotlinLightCodeInsightFixtureTest
ContainerUtil.addAll<InspectionEP, LocalInspectionEP, List<InspectionEP>>(eps, *Extensions.getExtensions(LocalInspectionEP.LOCAL_INSPECTION)) ContainerUtil.addAll<InspectionEP, LocalInspectionEP, List<InspectionEP>>(eps, *Extensions.getExtensions(LocalInspectionEP.LOCAL_INSPECTION))
ContainerUtil.addAll<InspectionEP, InspectionEP, List<InspectionEP>>(eps, *Extensions.getExtensions(InspectionEP.GLOBAL_INSPECTION)) ContainerUtil.addAll<InspectionEP, InspectionEP, List<InspectionEP>>(eps, *Extensions.getExtensions(InspectionEP.GLOBAL_INSPECTION))
var tool: InspectionProfileEntry? = null val tool = eps.firstOrNull { it.implementationClass == klass.name }?.instantiateTool()
for (ep in eps) { ?: error("Could not find inspection tool for class: $klass")
if (klass.name == ep.implementationClass) {
tool = ep.instantiateTool()
}
}
assert(tool != null) { "Could not find inspection tool for class: " + klass }
myFixture.enableInspections(tool!!) myFixture.enableInspections(tool)
} }
override fun setUp() { override fun setUp() {
@@ -105,11 +96,8 @@ abstract class AbstractQuickFixMultiFileTest : KotlinLightCodeInsightFixtureTest
* * * *
* @param beforeFile will be added last, as subFiles are dependencies of it * @param beforeFile will be added last, as subFiles are dependencies of it
*/ */
protected fun configureMultiFileTest(subFiles: List<TestFile>, beforeFile: TestFile): List<VirtualFile> { private fun configureMultiFileTest(subFiles: List<TestFile>, beforeFile: TestFile): List<VirtualFile> {
val vFiles = mutableListOf<VirtualFile>() val vFiles = subFiles.map(this::createTestFile).toMutableList()
for (subFile in subFiles) {
vFiles.add(createTestFile(subFile))
}
val beforeVFile = createTestFile(beforeFile) val beforeVFile = createTestFile(beforeFile)
vFiles.add(beforeVFile) vFiles.add(beforeVFile)
myFixture.configureFromExistingVirtualFile(beforeVFile) myFixture.configureFromExistingVirtualFile(beforeVFile)
@@ -122,14 +110,13 @@ abstract class AbstractQuickFixMultiFileTest : KotlinLightCodeInsightFixtureTest
private fun createTestFile(testFile: TestFile): VirtualFile { private fun createTestFile(testFile: TestFile): VirtualFile {
return runWriteAction { return runWriteAction {
val vFile = myFixture.tempDirFixture.createFile(testFile.path) val vFile = myFixture.tempDirFixture.createFile(testFile.path)
vFile.setCharset(CharsetToolkit.UTF8_CHARSET) vFile.charset = CharsetToolkit.UTF8_CHARSET
VfsUtil.saveText(vFile, testFile.content) VfsUtil.saveText(vFile, testFile.content)
vFile vFile
} }
} }
@Throws(Exception::class) private fun doMultiFileTest(beforeFileName: String) {
protected fun doMultiFileTest(beforeFileName: String) {
val multifileText = FileUtil.loadFile(File(beforeFileName), true) val multifileText = FileUtil.loadFile(File(beforeFileName), true)
val subFiles = KotlinTestUtils.createTestFiles( val subFiles = KotlinTestUtils.createTestFiles(
@@ -137,11 +124,9 @@ abstract class AbstractQuickFixMultiFileTest : KotlinLightCodeInsightFixtureTest
multifileText, multifileText,
object : KotlinTestUtils.TestFileFactoryNoModules<TestFile>() { object : KotlinTestUtils.TestFileFactoryNoModules<TestFile>() {
override fun create(fileName: String, text: String, directives: Map<String, String>): TestFile { override fun create(fileName: String, text: String, directives: Map<String, String>): TestFile {
var text = text
if (text.startsWith("// FILE")) { if (text.startsWith("// FILE")) {
val firstLineDropped = StringUtil.substringAfter(text, "\n")!! // Drop the first line
return TestFile(fileName, StringUtil.substringAfter(text, "\n")!!)
text = firstLineDropped
} }
return TestFile(fileName, text) return TestFile(fileName, text)
} }
@@ -205,7 +190,6 @@ abstract class AbstractQuickFixMultiFileTest : KotlinLightCodeInsightFixtureTest
}, "", "") }, "", "")
} }
@Throws(Exception::class)
private fun doTest(beforeFileName: String) { private fun doTest(beforeFileName: String) {
val mainFile = File(beforeFileName) val mainFile = File(beforeFileName)
val originalFileText = FileUtil.loadFile(mainFile, true) val originalFileText = FileUtil.loadFile(mainFile, true)
@@ -213,7 +197,7 @@ abstract class AbstractQuickFixMultiFileTest : KotlinLightCodeInsightFixtureTest
val mainFileDir = mainFile.parentFile!! val mainFileDir = mainFile.parentFile!!
val mainFileName = mainFile.name val mainFileName = mainFile.name
val extraFiles = mainFileDir.listFiles { dir, name -> name.startsWith(extraFileNamePrefix(mainFileName)) && name != mainFileName }!! val extraFiles = mainFileDir.listFiles { _, name -> name.startsWith(extraFileNamePrefix(mainFileName)) && name != mainFileName }!!
val testFiles = ArrayList<String>() val testFiles = ArrayList<String>()
testFiles.add(mainFile.name) testFiles.add(mainFile.name)
@@ -245,13 +229,11 @@ abstract class AbstractQuickFixMultiFileTest : KotlinLightCodeInsightFixtureTest
KotlinTestUtils.assertEqualsToFile(File(afterFilePath), editor) KotlinTestUtils.assertEqualsToFile(File(afterFilePath), editor)
} }
val mainFile = myFixture.file for (file in myFixture.file.containingDirectory.files) {
val mainFileName = mainFile.name
for (file in mainFile.containingDirectory.files) {
val fileName = file.name val fileName = file.name
if (fileName == mainFileName || !fileName.startsWith(extraFileNamePrefix(myFixture.file.name))) continue if (fileName == myFixture.file.name || !fileName.startsWith(extraFileNamePrefix(myFixture.file.name))) continue
val extraFileFullPath = beforeFileName.replace(mainFileName, fileName) val extraFileFullPath = beforeFileName.replace(myFixture.file.name, fileName)
val afterFile = File(extraFileFullPath.replace(".before.", ".after.")) val afterFile = File(extraFileFullPath.replace(".before.", ".after."))
if (afterFile.exists()) { if (afterFile.exists()) {
KotlinTestUtils.assertEqualsToFile(afterFile, file.text) KotlinTestUtils.assertEqualsToFile(afterFile, file.text)