From 01bff0e156c5d2e6c79a7e98421b075619b17798 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Wed, 21 Mar 2018 15:11:43 +0100 Subject: [PATCH] AbstractQuickFixMultiModuleTest: refactor and simplify code Remove dependency on test module names --- .../AbstractQuickFixMultiModuleTest.kt | 47 ++++++++----------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiModuleTest.kt b/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiModuleTest.kt index 957be43528c..e83455287c5 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiModuleTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiModuleTest.kt @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.idea.stubs.AbstractMultiModuleTest import org.jetbrains.kotlin.idea.test.DirectiveBasedActionUtils import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.idea.test.allKotlinFiles -import org.jetbrains.kotlin.idea.util.module import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.kotlin.test.KotlinTestUtils @@ -54,32 +53,7 @@ abstract class AbstractQuickFixMultiModuleTest : AbstractMultiModuleTest() { ) if (actionShouldBeAvailable) { - val testDirectory = File(testDataPath) - val projectDirectory = File("$testDataPath${getTestName(true)}") - for (moduleDirectory in projectDirectory.listFiles()) { - val dirName = moduleDirectory.name - for (file in moduleDirectory.walkTopDown()) { - if (!file.path.endsWith(".after")) continue - try { - val packageName = file.readLines().find { it.startsWith("package") }?.substringAfter(" ") ?: "" - val editedFile = allFilesInProject.mapNotNull { - val candidate = it.containingDirectory?.findFile(file.name.removeSuffix(".after")) as? KtFile - val isUnderTestRoot = candidate != null && "// TEST" in candidate.text - candidate?.takeIf { - it.packageFqName.toString() == packageName && - it.module?.let { module -> - module.name + ("Test".takeIf { isUnderTestRoot } ?: "") == dirName - } == true - } - }.singleOrNull() ?: error("Cannot find suitable candidate for file ${file.name} from directory $dirName") - setActiveEditor(editedFile.findExistingEditor() ?: createEditor(editedFile.virtualFile)) - checkResultByFile(file.relativeTo(testDirectory).path) - } - catch (e: ComparisonFailure) { - KotlinTestUtils.assertEqualsToFile(file, editor) - } - } - } + compareToExpected() } } catch (e: ComparisonFailure) { @@ -95,6 +69,25 @@ abstract class AbstractQuickFixMultiModuleTest : AbstractMultiModuleTest() { }, "", "") } + private fun compareToExpected() { + val projectDirectory = File("$testDataPath${getTestName(true)}") + val afterFiles = projectDirectory.walkTopDown().filter { it.path.endsWith(".after") }.toList() + + for (editedFile in project.allKotlinFiles()) { + val afterFileInTmpProject = editedFile.containingDirectory?.findFile(file.name + ".after") ?: continue + val afterFileInTestData = afterFiles.single { + it.readText() == File(afterFileInTmpProject.virtualFile.path).readText() + } + + setActiveEditor(editedFile.findExistingEditor() ?: createEditor(editedFile.virtualFile)) + try { + checkResultByFile(afterFileInTestData.relativeTo(File(testDataPath)).path) + } catch (e: ComparisonFailure) { + KotlinTestUtils.assertEqualsToFile(afterFileInTestData, editor) + } + } + } + private val availableActions: List get() { doHighlighting()