Convert KotlinChangeSignatureTest to light test case

This commit is contained in:
Dmitry Jemerov
2017-03-23 16:27:26 +01:00
parent e9998aa329
commit 159c2382b4
3 changed files with 27 additions and 40 deletions
@@ -1,4 +1,4 @@
<caret>import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.lang.Override; import java.lang.Override;
@@ -1,4 +1,4 @@
<caret>import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
interface J<A> extends T<A> { interface J<A> extends T<A> {
@Override @Override
@@ -19,18 +19,15 @@ package org.jetbrains.kotlin.idea.refactoring.changeSignature
import com.intellij.codeInsight.TargetElementUtil import com.intellij.codeInsight.TargetElementUtil
import com.intellij.codeInsight.TargetElementUtil.ELEMENT_NAME_ACCEPTED import com.intellij.codeInsight.TargetElementUtil.ELEMENT_NAME_ACCEPTED
import com.intellij.codeInsight.TargetElementUtil.REFERENCED_ELEMENT_ACCEPTED import com.intellij.codeInsight.TargetElementUtil.REFERENCED_ELEMENT_ACCEPTED
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.util.text.StringUtil import com.intellij.openapi.util.text.StringUtil
import com.intellij.psi.JavaPsiFacade import com.intellij.psi.*
import com.intellij.psi.PsiElementFactory
import com.intellij.psi.PsiMethod
import com.intellij.psi.PsiType
import com.intellij.psi.impl.java.stubs.index.JavaFullClassNameIndex import com.intellij.psi.impl.java.stubs.index.JavaFullClassNameIndex
import com.intellij.refactoring.BaseRefactoringProcessor import com.intellij.refactoring.BaseRefactoringProcessor
import com.intellij.refactoring.changeSignature.ChangeSignatureProcessor import com.intellij.refactoring.changeSignature.ChangeSignatureProcessor
import com.intellij.refactoring.changeSignature.ParameterInfoImpl import com.intellij.refactoring.changeSignature.ParameterInfoImpl
import com.intellij.refactoring.util.CanonicalTypes import com.intellij.refactoring.util.CanonicalTypes
import com.intellij.refactoring.util.CommonRefactoringUtil import com.intellij.refactoring.util.CommonRefactoringUtil
import com.intellij.testFramework.LightProjectDescriptor
import com.intellij.testFramework.UsefulTestCase import com.intellij.testFramework.UsefulTestCase
import com.intellij.util.VisibilityUtil import com.intellij.util.VisibilityUtil
import junit.framework.ComparisonFailure import junit.framework.ComparisonFailure
@@ -44,9 +41,9 @@ import org.jetbrains.kotlin.idea.refactoring.changeSignature.ui.KotlinMethodNode
import org.jetbrains.kotlin.idea.search.allScope import org.jetbrains.kotlin.idea.search.allScope
import org.jetbrains.kotlin.idea.stubindex.KotlinFullClassNameIndex import org.jetbrains.kotlin.idea.stubindex.KotlinFullClassNameIndex
import org.jetbrains.kotlin.idea.stubindex.KotlinTopLevelFunctionFqnNameIndex import org.jetbrains.kotlin.idea.stubindex.KotlinTopLevelFunctionFqnNameIndex
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
import org.jetbrains.kotlin.idea.test.DirectiveBasedActionUtils import org.jetbrains.kotlin.idea.test.DirectiveBasedActionUtils
import org.jetbrains.kotlin.idea.test.KotlinCodeInsightTestCase import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
@@ -61,31 +58,25 @@ import org.jetbrains.kotlin.utils.sure
import java.io.File import java.io.File
import java.util.* import java.util.*
class KotlinChangeSignatureTest : KotlinCodeInsightTestCase() { class KotlinChangeSignatureTest : KotlinLightCodeInsightFixtureTestCase() {
companion object { companion object {
private val BUILT_INS = DefaultBuiltIns.Instance private val BUILT_INS = DefaultBuiltIns.Instance
private val EXTENSIONS = arrayOf(".kt", ".java") private val EXTENSIONS = arrayOf(".kt", ".java")
} }
private var editors: MutableList<Editor>? = null
override fun getTestProjectJdk() = PluginTestCaseBase.mockJdk()
override fun getTestDataPath() = File(PluginTestCaseBase.getTestDataPathBase(), "/refactoring/changeSignature").path + File.separator override fun getTestDataPath() = File(PluginTestCaseBase.getTestDataPathBase(), "/refactoring/changeSignature").path + File.separator
override fun setUp() { override fun getProjectDescriptor(): LightProjectDescriptor = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE
super.setUp()
editors = ArrayList<Editor>()
ConfigLibraryUtil.configureKotlinRuntime(module)
}
override fun tearDown() { override fun tearDown() {
ConfigLibraryUtil.unConfigureKotlinRuntime(module) files = emptyList()
editors!!.clear() psiFiles = PsiFile.EMPTY_ARRAY
editors = null
super.tearDown() super.tearDown()
} }
lateinit var files: List<String>
lateinit var psiFiles: Array<PsiFile>
private fun findCallers(method: PsiMethod): LinkedHashSet<PsiMethod> { private fun findCallers(method: PsiMethod): LinkedHashSet<PsiMethod> {
val root = KotlinMethodNode(method, HashSet(), project, Runnable { }) val root = KotlinMethodNode(method, HashSet(), project, Runnable { })
return (0..root.childCount - 1).flatMapTo(LinkedHashSet<PsiMethod>()) { return (0..root.childCount - 1).flatMapTo(LinkedHashSet<PsiMethod>()) {
@@ -94,16 +85,14 @@ class KotlinChangeSignatureTest : KotlinCodeInsightTestCase() {
} }
private fun configureFiles() { private fun configureFiles() {
editors!!.clear() val fileList = mutableListOf<String>()
var i = 0 var i = 0
indexLoop@ while (true) { indexLoop@ while (true) {
for (extension in EXTENSIONS) { for (extension in EXTENSIONS) {
val extraFileName = getTestName(false) + "Before" + (if (i > 0) "." + i else "") + extension val extraFileName = getTestName(false) + "Before" + (if (i > 0) "." + i else "") + extension
val extraFile = File(testDataPath + extraFileName) val extraFile = File(testDataPath + extraFileName)
if (extraFile.exists()) { if (extraFile.exists()) {
configureByFile(extraFileName) fileList.add(extraFileName)
editors!!.add(editor)
i++ i++
continue@indexLoop continue@indexLoop
} }
@@ -111,7 +100,8 @@ class KotlinChangeSignatureTest : KotlinCodeInsightTestCase() {
break break
} }
setActiveEditor(editors!![0]) psiFiles = myFixture.configureByFiles(*fileList.toTypedArray())
files = fileList
} }
private fun createChangeInfo(): KotlinChangeInfo { private fun createChangeInfo(): KotlinChangeInfo {
@@ -229,21 +219,18 @@ class KotlinChangeSignatureTest : KotlinCodeInsightTestCase() {
private fun compareEditorsWithExpectedData() { private fun compareEditorsWithExpectedData() {
//noinspection ConstantConditions //noinspection ConstantConditions
val checkErrorsAfter = InTextDirectivesUtils.isDirectiveDefined(getPsiFile(editors!![0].document)!!.text, val checkErrorsAfter = InTextDirectivesUtils.isDirectiveDefined(file!!.text, "// CHECK_ERRORS_AFTER")
"// CHECK_ERRORS_AFTER") for ((file, psiFile) in files zip psiFiles) {
for (editor in editors!!) { val afterFilePath = file.replace("Before.", "After.")
setActiveEditor(editor)
val currentFile = file
val afterFilePath = currentFile.name.replace("Before.", "After.")
try { try {
checkResultByFile(afterFilePath) myFixture.checkResultByFile(file, afterFilePath, true)
} }
catch (e: ComparisonFailure) { catch (e: ComparisonFailure) {
KotlinTestUtils.assertEqualsToFile(File(testDataPath + afterFilePath), getEditor()) KotlinTestUtils.assertEqualsToFile(File(testDataPath + afterFilePath), psiFile.text)
} }
if (checkErrorsAfter && currentFile is KtFile) { if (checkErrorsAfter && psiFile is KtFile) {
DirectiveBasedActionUtils.checkForUnexpectedErrors(currentFile) DirectiveBasedActionUtils.checkForUnexpectedErrors(psiFile)
} }
} }
} }
@@ -258,7 +245,7 @@ class KotlinChangeSignatureTest : KotlinCodeInsightTestCase() {
// --------------------------------- Tests --------------------------------- // --------------------------------- Tests ---------------------------------
fun testBadSelection() { fun testBadSelection() {
configureByFile(getTestName(false) + "Before.kt") myFixture.configureByFile(getTestName(false) + "Before.kt")
TestCase.assertNull(KotlinChangeSignatureHandler().findTargetMember(file, editor)) TestCase.assertNull(KotlinChangeSignatureHandler().findTargetMember(file, editor))
} }