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.ClassDescriptor
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe
|
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.isSubpackageOf
|
||||||
|
|
||||||
private enum class RenameType {
|
private enum class RenameType {
|
||||||
JAVA_CLASS
|
JAVA_CLASS
|
||||||
@@ -51,6 +52,7 @@ private enum class RenameType {
|
|||||||
KOTLIN_CLASS
|
KOTLIN_CLASS
|
||||||
KOTLIN_FUNCTION
|
KOTLIN_FUNCTION
|
||||||
KOTLIN_PROPERTY
|
KOTLIN_PROPERTY
|
||||||
|
KOTLIN_PACKAGE
|
||||||
}
|
}
|
||||||
|
|
||||||
fun JsonObject.getString(name: String): String {
|
fun JsonObject.getString(name: String): String {
|
||||||
@@ -89,6 +91,7 @@ public abstract class AbstractRenameTest : MultiFileTestCase() {
|
|||||||
RenameType.KOTLIN_CLASS -> renameKotlinClassTest(renameObject, context)
|
RenameType.KOTLIN_CLASS -> renameKotlinClassTest(renameObject, context)
|
||||||
RenameType.KOTLIN_FUNCTION -> renameKotlinFunctionTest(renameObject, context)
|
RenameType.KOTLIN_FUNCTION -> renameKotlinFunctionTest(renameObject, context)
|
||||||
RenameType.KOTLIN_PROPERTY -> renameKotlinPropertyTest(renameObject, context)
|
RenameType.KOTLIN_PROPERTY -> renameKotlinPropertyTest(renameObject, context)
|
||||||
|
RenameType.KOTLIN_PACKAGE -> renameKotlinPackageTest(renameObject, context)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hintDirective != null) {
|
if (hintDirective != null) {
|
||||||
@@ -158,6 +161,29 @@ public abstract class AbstractRenameTest : MultiFileTestCase() {
|
|||||||
doRenameInKotlinClass(renameParamsObject, context) { classDescriptor -> classDescriptor }
|
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,
|
private fun doRenameInKotlinClass(renameParamsObject: JsonObject, context: TestContext,
|
||||||
findDescriptorToRename: (ClassDescriptor) -> DeclarationDescriptor
|
findDescriptorToRename: (ClassDescriptor) -> DeclarationDescriptor
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -106,6 +106,16 @@ public class RenameTestGenerated extends AbstractRenameTest {
|
|||||||
doTest("idea/testData/refactoring/rename/renameKotlinMethod/renameKotlinMethod.test");
|
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")
|
@TestMetadata("renameKotlinPackageClass/javaWrapperForKotlinPackageClass.test")
|
||||||
public void testRenameKotlinPackageClass_JavaWrapperForKotlinPackageClass() throws Exception {
|
public void testRenameKotlinPackageClass_JavaWrapperForKotlinPackageClass() throws Exception {
|
||||||
doTest("idea/testData/refactoring/rename/renameKotlinPackageClass/javaWrapperForKotlinPackageClass.test");
|
doTest("idea/testData/refactoring/rename/renameKotlinPackageClass/javaWrapperForKotlinPackageClass.test");
|
||||||
|
|||||||
Reference in New Issue
Block a user