Test for KT-365 Support renaming packages
#KT-365 Obsolete
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
package some.bar.other
|
||||
|
||||
class Test
|
||||
@@ -0,0 +1,3 @@
|
||||
package some.bar.other
|
||||
|
||||
fun testFunction() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
package some.bar.more
|
||||
|
||||
import some.bar.other.Test
|
||||
|
||||
fun test() {
|
||||
some.bar.more.test()
|
||||
some.bar.other.testFunction()
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
package some.foo.other
|
||||
|
||||
class Test
|
||||
@@ -0,0 +1,3 @@
|
||||
package some.foo.other
|
||||
|
||||
fun testFunction() {}
|
||||
@@ -0,0 +1,8 @@
|
||||
package some.foo.more
|
||||
|
||||
import some.foo.other.Test
|
||||
|
||||
fun test() {
|
||||
some.foo.more.test()
|
||||
some.foo.other.testFunction()
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"type": "KOTLIN_PACKAGE",
|
||||
"fqn": "some.foo",
|
||||
"newName": "bar",
|
||||
"mainFile": "ForClassImport.kt",
|
||||
"comment": "KT-365 Support renaming packages"
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"type": "KOTLIN_PACKAGE",
|
||||
"fqn": "some.foo",
|
||||
"newName": "bar",
|
||||
"comment": "KT-365 Support renaming packages"
|
||||
}
|
||||
@@ -44,6 +44,7 @@ import org.jetbrains.jet.lang.resolve.BindingContextUtils
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe
|
||||
import org.jetbrains.jet.lang.resolve.name.isSubpackageOf
|
||||
|
||||
private enum class RenameType {
|
||||
JAVA_CLASS
|
||||
@@ -51,6 +52,7 @@ private enum class RenameType {
|
||||
KOTLIN_CLASS
|
||||
KOTLIN_FUNCTION
|
||||
KOTLIN_PROPERTY
|
||||
KOTLIN_PACKAGE
|
||||
}
|
||||
|
||||
fun JsonObject.getString(name: String): String {
|
||||
@@ -89,6 +91,7 @@ public abstract class AbstractRenameTest : MultiFileTestCase() {
|
||||
RenameType.KOTLIN_CLASS -> renameKotlinClassTest(renameObject, context)
|
||||
RenameType.KOTLIN_FUNCTION -> renameKotlinFunctionTest(renameObject, context)
|
||||
RenameType.KOTLIN_PROPERTY -> renameKotlinPropertyTest(renameObject, context)
|
||||
RenameType.KOTLIN_PACKAGE -> renameKotlinPackageTest(renameObject, context)
|
||||
}
|
||||
|
||||
if (hintDirective != null) {
|
||||
@@ -158,6 +161,29 @@ public abstract class AbstractRenameTest : MultiFileTestCase() {
|
||||
doRenameInKotlinClass(renameParamsObject, context) { classDescriptor -> classDescriptor }
|
||||
}
|
||||
|
||||
private fun renameKotlinPackageTest(renameParamsObject: JsonObject, context: TestContext) {
|
||||
val fqn = FqNameUnsafe(renameParamsObject.getString("fqn")).toSafe()
|
||||
val newName = renameParamsObject.getString("newName")
|
||||
val mainFilePath = renameParamsObject.getNullableString("mainFile") ?: "${getTestDirName(false)}.kt"
|
||||
|
||||
doTest { rootDir, rootAfter ->
|
||||
val mainFile = rootDir.findChild(mainFilePath)!!
|
||||
val document = FileDocumentManager.getInstance()!!.getDocument(mainFile)!!
|
||||
val jetFile = PsiDocumentManager.getInstance(context.project).getPsiFile(document) as JetFile
|
||||
|
||||
val fileFqn = jetFile.getPackageDirective()!!.getFqName()
|
||||
Assert.assertTrue("File '${mainFilePath}' should have package containing ${fqn}", fileFqn.isSubpackageOf(fqn))
|
||||
|
||||
val packageSegment = jetFile.getPackageDirective()!!.getPackageNames()[fqn.pathSegments().size - 1]
|
||||
val segmentReference = packageSegment.getReference()!!
|
||||
|
||||
val psiElement = segmentReference.resolve()!!
|
||||
|
||||
val substitution = RenamePsiElementProcessor.forElement(psiElement).substituteElementToRename(psiElement, null)
|
||||
RenameProcessor(context.project, substitution, newName, true, true).run()
|
||||
}
|
||||
}
|
||||
|
||||
private fun doRenameInKotlinClass(renameParamsObject: JsonObject, context: TestContext,
|
||||
findDescriptorToRename: (ClassDescriptor) -> DeclarationDescriptor
|
||||
) {
|
||||
|
||||
@@ -106,6 +106,16 @@ public class RenameTestGenerated extends AbstractRenameTest {
|
||||
doTest("idea/testData/refactoring/rename/renameKotlinMethod/renameKotlinMethod.test");
|
||||
}
|
||||
|
||||
@TestMetadata("renameKotlinPackage/renameInOtherFile.test")
|
||||
public void testRenameKotlinPackage_RenameInOtherFile() throws Exception {
|
||||
doTest("idea/testData/refactoring/rename/renameKotlinPackage/renameInOtherFile.test");
|
||||
}
|
||||
|
||||
@TestMetadata("renameKotlinPackage/renameKotlinPackage.test")
|
||||
public void testRenameKotlinPackage_RenameKotlinPackage() throws Exception {
|
||||
doTest("idea/testData/refactoring/rename/renameKotlinPackage/renameKotlinPackage.test");
|
||||
}
|
||||
|
||||
@TestMetadata("renameKotlinPackageClass/javaWrapperForKotlinPackageClass.test")
|
||||
public void testRenameKotlinPackageClass_JavaWrapperForKotlinPackageClass() throws Exception {
|
||||
doTest("idea/testData/refactoring/rename/renameKotlinPackageClass/javaWrapperForKotlinPackageClass.test");
|
||||
|
||||
Reference in New Issue
Block a user