AbstractQuickFixMultiModuleTest: refactor and simplify code
Remove dependency on test module names
This commit is contained in:
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.idea.stubs.AbstractMultiModuleTest
|
|||||||
import org.jetbrains.kotlin.idea.test.DirectiveBasedActionUtils
|
import org.jetbrains.kotlin.idea.test.DirectiveBasedActionUtils
|
||||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||||
import org.jetbrains.kotlin.idea.test.allKotlinFiles
|
import org.jetbrains.kotlin.idea.test.allKotlinFiles
|
||||||
import org.jetbrains.kotlin.idea.util.module
|
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
import org.jetbrains.kotlin.test.InTextDirectivesUtils
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
@@ -54,32 +53,7 @@ abstract class AbstractQuickFixMultiModuleTest : AbstractMultiModuleTest() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
if (actionShouldBeAvailable) {
|
if (actionShouldBeAvailable) {
|
||||||
val testDirectory = File(testDataPath)
|
compareToExpected()
|
||||||
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(" ") ?: "<root>"
|
|
||||||
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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (e: ComparisonFailure) {
|
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<IntentionAction>
|
private val availableActions: List<IntentionAction>
|
||||||
get() {
|
get() {
|
||||||
doHighlighting()
|
doHighlighting()
|
||||||
|
|||||||
Reference in New Issue
Block a user