From 44fd9d17ed01c42b26e796b4c77e4467372396ab Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 23 Sep 2015 17:35:00 +0300 Subject: [PATCH] Resource Bundles: Add Rename tests for bundle files and properties #KT-6946 In Progress --- .../renameBundle/after/BarBundle.properties | 2 ++ .../rename/renameBundle/after/PropertyKey.kt | 5 +++++ .../rename/renameBundle/after/usages.kt | 10 ++++++++++ .../renameBundle/before/FooBundle.properties | 2 ++ .../rename/renameBundle/before/PropertyKey.kt | 5 +++++ .../rename/renameBundle/before/usages.kt | 10 ++++++++++ .../rename/renameBundle/renameBundle.test | 5 +++++ .../renameBundleProperty/after/PropertyKey.kt | 5 +++++ .../after/TestBundle.properties | 1 + .../renameBundleProperty/after/usages.kt | 8 ++++++++ .../before/PropertyKey.kt | 5 +++++ .../before/TestBundle.properties | 1 + .../renameBundleProperty/before/usages.kt | 8 ++++++++ .../renameBundleProperty.test | 6 ++++++ .../refactoring/rename/AbstractRenameTest.kt | 20 ++++++++++++++++++- .../rename/RenameTestGenerated.java | 12 +++++++++++ 16 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 idea/testData/refactoring/rename/renameBundle/after/BarBundle.properties create mode 100644 idea/testData/refactoring/rename/renameBundle/after/PropertyKey.kt create mode 100644 idea/testData/refactoring/rename/renameBundle/after/usages.kt create mode 100644 idea/testData/refactoring/rename/renameBundle/before/FooBundle.properties create mode 100644 idea/testData/refactoring/rename/renameBundle/before/PropertyKey.kt create mode 100644 idea/testData/refactoring/rename/renameBundle/before/usages.kt create mode 100644 idea/testData/refactoring/rename/renameBundle/renameBundle.test create mode 100644 idea/testData/refactoring/rename/renameBundleProperty/after/PropertyKey.kt create mode 100644 idea/testData/refactoring/rename/renameBundleProperty/after/TestBundle.properties create mode 100644 idea/testData/refactoring/rename/renameBundleProperty/after/usages.kt create mode 100644 idea/testData/refactoring/rename/renameBundleProperty/before/PropertyKey.kt create mode 100644 idea/testData/refactoring/rename/renameBundleProperty/before/TestBundle.properties create mode 100644 idea/testData/refactoring/rename/renameBundleProperty/before/usages.kt create mode 100644 idea/testData/refactoring/rename/renameBundleProperty/renameBundleProperty.test diff --git a/idea/testData/refactoring/rename/renameBundle/after/BarBundle.properties b/idea/testData/refactoring/rename/renameBundle/after/BarBundle.properties new file mode 100644 index 00000000000..b69774df5a8 --- /dev/null +++ b/idea/testData/refactoring/rename/renameBundle/after/BarBundle.properties @@ -0,0 +1,2 @@ +## FIND_FILE_USAGES +foo.bar = test \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameBundle/after/PropertyKey.kt b/idea/testData/refactoring/rename/renameBundle/after/PropertyKey.kt new file mode 100644 index 00000000000..1e1932b2d0f --- /dev/null +++ b/idea/testData/refactoring/rename/renameBundle/after/PropertyKey.kt @@ -0,0 +1,5 @@ +package org.jetbrains.annotations + +@Retention(AnnotationRetention.BINARY) +@Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.FIELD) +public annotation class PropertyKey(public val resourceBundle: String) \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameBundle/after/usages.kt b/idea/testData/refactoring/rename/renameBundle/after/usages.kt new file mode 100644 index 00000000000..9b8b98c001a --- /dev/null +++ b/idea/testData/refactoring/rename/renameBundle/after/usages.kt @@ -0,0 +1,10 @@ +import org.jetbrains.annotations.PropertyKey + +private val BUNDLE_NAME = "BarBundle" + +public fun message(@PropertyKey(resourceBundle = "BarBundle") key: String) = key +public fun message2(@PropertyKey(resourceBundle = BUNDLE_NAME) key: String) = key + +fun test() { + message("foo.bar") +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameBundle/before/FooBundle.properties b/idea/testData/refactoring/rename/renameBundle/before/FooBundle.properties new file mode 100644 index 00000000000..b69774df5a8 --- /dev/null +++ b/idea/testData/refactoring/rename/renameBundle/before/FooBundle.properties @@ -0,0 +1,2 @@ +## FIND_FILE_USAGES +foo.bar = test \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameBundle/before/PropertyKey.kt b/idea/testData/refactoring/rename/renameBundle/before/PropertyKey.kt new file mode 100644 index 00000000000..1e1932b2d0f --- /dev/null +++ b/idea/testData/refactoring/rename/renameBundle/before/PropertyKey.kt @@ -0,0 +1,5 @@ +package org.jetbrains.annotations + +@Retention(AnnotationRetention.BINARY) +@Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.FIELD) +public annotation class PropertyKey(public val resourceBundle: String) \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameBundle/before/usages.kt b/idea/testData/refactoring/rename/renameBundle/before/usages.kt new file mode 100644 index 00000000000..30004ad19aa --- /dev/null +++ b/idea/testData/refactoring/rename/renameBundle/before/usages.kt @@ -0,0 +1,10 @@ +import org.jetbrains.annotations.PropertyKey + +private val BUNDLE_NAME = "FooBundle" + +public fun message(@PropertyKey(resourceBundle = "FooBundle") key: String) = key +public fun message2(@PropertyKey(resourceBundle = BUNDLE_NAME) key: String) = key + +fun test() { + message("foo.bar") +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameBundle/renameBundle.test b/idea/testData/refactoring/rename/renameBundle/renameBundle.test new file mode 100644 index 00000000000..c35e69c28a8 --- /dev/null +++ b/idea/testData/refactoring/rename/renameBundle/renameBundle.test @@ -0,0 +1,5 @@ +{ + "type": "FILE", + "file": "FooBundle.properties", + "newName": "BarBundle.properties" +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameBundleProperty/after/PropertyKey.kt b/idea/testData/refactoring/rename/renameBundleProperty/after/PropertyKey.kt new file mode 100644 index 00000000000..1e1932b2d0f --- /dev/null +++ b/idea/testData/refactoring/rename/renameBundleProperty/after/PropertyKey.kt @@ -0,0 +1,5 @@ +package org.jetbrains.annotations + +@Retention(AnnotationRetention.BINARY) +@Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.FIELD) +public annotation class PropertyKey(public val resourceBundle: String) \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameBundleProperty/after/TestBundle.properties b/idea/testData/refactoring/rename/renameBundleProperty/after/TestBundle.properties new file mode 100644 index 00000000000..08ea7ddaf3b --- /dev/null +++ b/idea/testData/refactoring/rename/renameBundleProperty/after/TestBundle.properties @@ -0,0 +1 @@ +bar.foo = test \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameBundleProperty/after/usages.kt b/idea/testData/refactoring/rename/renameBundleProperty/after/usages.kt new file mode 100644 index 00000000000..beb1c07a597 --- /dev/null +++ b/idea/testData/refactoring/rename/renameBundleProperty/after/usages.kt @@ -0,0 +1,8 @@ +import org.jetbrains.annotations.PropertyKey + +public fun message(@PropertyKey(resourceBundle = "TestBundle") key: String) = key + +fun test() { + @PropertyKey(resourceBundle = "TestBundle") val s1 = "bar.foo" + message("bar.foo") +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameBundleProperty/before/PropertyKey.kt b/idea/testData/refactoring/rename/renameBundleProperty/before/PropertyKey.kt new file mode 100644 index 00000000000..1e1932b2d0f --- /dev/null +++ b/idea/testData/refactoring/rename/renameBundleProperty/before/PropertyKey.kt @@ -0,0 +1,5 @@ +package org.jetbrains.annotations + +@Retention(AnnotationRetention.BINARY) +@Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.LOCAL_VARIABLE, AnnotationTarget.FIELD) +public annotation class PropertyKey(public val resourceBundle: String) \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameBundleProperty/before/TestBundle.properties b/idea/testData/refactoring/rename/renameBundleProperty/before/TestBundle.properties new file mode 100644 index 00000000000..4cf119bb659 --- /dev/null +++ b/idea/testData/refactoring/rename/renameBundleProperty/before/TestBundle.properties @@ -0,0 +1 @@ +foo.bar = test \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameBundleProperty/before/usages.kt b/idea/testData/refactoring/rename/renameBundleProperty/before/usages.kt new file mode 100644 index 00000000000..eb8aa1bd61e --- /dev/null +++ b/idea/testData/refactoring/rename/renameBundleProperty/before/usages.kt @@ -0,0 +1,8 @@ +import org.jetbrains.annotations.PropertyKey + +public fun message(@PropertyKey(resourceBundle = "TestBundle") key: String) = key + +fun test() { + @PropertyKey(resourceBundle = "TestBundle") val s1 = "foo.bar" + message("foo.bar") +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/renameBundleProperty/renameBundleProperty.test b/idea/testData/refactoring/rename/renameBundleProperty/renameBundleProperty.test new file mode 100644 index 00000000000..e90559cbb3c --- /dev/null +++ b/idea/testData/refactoring/rename/renameBundleProperty/renameBundleProperty.test @@ -0,0 +1,6 @@ +{ + "type": "BUNDLE_PROPERTY", + "file": "TestBundle.properties", + "oldName": "foo.bar", + "newName": "bar.foo" +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/AbstractRenameTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/AbstractRenameTest.kt index dba97327e1c..4d1834c20da 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/AbstractRenameTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/AbstractRenameTest.kt @@ -19,6 +19,8 @@ package org.jetbrains.kotlin.idea.refactoring.rename import com.google.gson.JsonObject import com.google.gson.JsonParser import com.intellij.codeInsight.TargetElementUtilBase +import com.intellij.lang.properties.psi.PropertiesFile +import com.intellij.lang.properties.psi.Property import com.intellij.openapi.extensions.Extensions import com.intellij.openapi.fileEditor.FileDocumentManager import com.intellij.openapi.module.Module @@ -66,7 +68,8 @@ private enum class RenameType { KOTLIN_PROPERTY, KOTLIN_PACKAGE, MARKED_ELEMENT, - FILE + FILE, + BUNDLE_PROPERTY } public abstract class AbstractRenameTest : KotlinMultiFileTestCase() { @@ -102,6 +105,7 @@ public abstract class AbstractRenameTest : KotlinMultiFileTestCase() { RenameType.KOTLIN_PACKAGE -> renameKotlinPackageTest(renameObject, context) RenameType.MARKED_ELEMENT -> renameMarkedElement(renameObject, context) RenameType.FILE -> renameFile(renameObject, context) + RenameType.BUNDLE_PROPERTY -> renameBundleProperty(renameObject, context) } if (hintDirective != null) { @@ -244,6 +248,20 @@ public abstract class AbstractRenameTest : KotlinMultiFileTestCase() { } } + private fun renameBundleProperty(renameParamsObject: JsonObject, context: TestContext) { + val file = renameParamsObject.getString("file") + val oldName = renameParamsObject.getString("oldName") + val newName = renameParamsObject.getString("newName") + + doTestCommittingDocuments { rootDir, rootAfter -> + val mainFile = rootDir.findChild(file)!! + val psiFile = PsiManager.getInstance(context.project).findFile(mainFile) as PropertiesFile + val property = psiFile.findPropertyByKey(oldName) as Property + + runRenameProcessor(context, newName, property, true, true) + } + } + private fun doRenameInKotlinClassOrPackage( renameParamsObject: JsonObject, context: TestContext, findDescriptorToRename: (JetScope) -> DeclarationDescriptor ) { diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java index 59a697fd064..de8f086b314 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java @@ -113,6 +113,18 @@ public class RenameTestGenerated extends AbstractRenameTest { doTest(fileName); } + @TestMetadata("renameBundle/renameBundle.test") + public void testRenameBundle_RenameBundle() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/rename/renameBundle/renameBundle.test"); + doTest(fileName); + } + + @TestMetadata("renameBundleProperty/renameBundleProperty.test") + public void testRenameBundleProperty_RenameBundleProperty() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/rename/renameBundleProperty/renameBundleProperty.test"); + doTest(fileName); + } + @TestMetadata("renameCompareTo/compareTo.test") public void testRenameCompareTo_CompareTo() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/refactoring/rename/renameCompareTo/compareTo.test");