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.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(" ") ?: "<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)
|
||||
}
|
||||
}
|
||||
}
|
||||
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<IntentionAction>
|
||||
get() {
|
||||
doHighlighting()
|
||||
|
||||
Reference in New Issue
Block a user