Fix saving Kotlin Scripting Setting to xml
^KT-30146 Fixed
This commit is contained in:
+9
-3
@@ -103,22 +103,28 @@ class KotlinScriptingSettings : PersistentStateComponent<Element> {
|
|||||||
KotlinScriptDefinitionKey(this.name, this::class.qualifiedName ?: "unknown")
|
KotlinScriptDefinitionKey(this.name, this::class.qualifiedName ?: "unknown")
|
||||||
|
|
||||||
private fun Element.addScriptDefinitionContentElement(definition: KotlinScriptDefinitionKey, settings: KotlinScriptDefinitionValue) {
|
private fun Element.addScriptDefinitionContentElement(definition: KotlinScriptDefinitionKey, settings: KotlinScriptDefinitionValue) {
|
||||||
Element(SCRIPT_DEFINITION_TAG).apply {
|
addElement(SCRIPT_DEFINITION_TAG).apply {
|
||||||
attribute(KotlinScriptDefinitionKey::className.name, definition.className)
|
attribute(KotlinScriptDefinitionKey::className.name, definition.className)
|
||||||
attribute(KotlinScriptDefinitionKey::definitionName.name, definition.definitionName)
|
attribute(KotlinScriptDefinitionKey::definitionName.name, definition.definitionName)
|
||||||
|
|
||||||
Element(KotlinScriptDefinitionValue::order.name).apply {
|
addElement(KotlinScriptDefinitionValue::order.name).apply {
|
||||||
text = settings.order.toString()
|
text = settings.order.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!settings.isEnabled) {
|
if (!settings.isEnabled) {
|
||||||
Element(KotlinScriptDefinitionValue::isEnabled.name).apply {
|
addElement(KotlinScriptDefinitionValue::isEnabled.name).apply {
|
||||||
text = settings.isEnabled.toString()
|
text = settings.isEnabled.toString()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun Element.addElement(name: String): Element {
|
||||||
|
val element = Element(name)
|
||||||
|
addContent(element)
|
||||||
|
return element
|
||||||
|
}
|
||||||
|
|
||||||
private fun Element.toValue(): KotlinScriptDefinitionValue {
|
private fun Element.toValue(): KotlinScriptDefinitionValue {
|
||||||
val order = getChildText(KotlinScriptDefinitionValue::order.name)?.toInt() ?: Integer.MAX_VALUE
|
val order = getChildText(KotlinScriptDefinitionValue::order.name)?.toInt() ?: Integer.MAX_VALUE
|
||||||
val isEnabled = getChildText(KotlinScriptDefinitionValue::isEnabled.name)?.toBoolean() ?: true
|
val isEnabled = getChildText(KotlinScriptDefinitionValue::isEnabled.name)?.toBoolean() ?: true
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||||
|
* that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.idea.script
|
||||||
|
|
||||||
|
import com.intellij.testFramework.LightProjectDescriptor
|
||||||
|
import org.jdom.output.XMLOutputter
|
||||||
|
import org.jetbrains.kotlin.idea.core.script.ScriptDefinitionsManager
|
||||||
|
import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings
|
||||||
|
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
||||||
|
import org.jetbrains.kotlin.idea.test.KotlinLightProjectDescriptor
|
||||||
|
|
||||||
|
class ScriptOptionsSaveTest : KotlinLightCodeInsightFixtureTestCase() {
|
||||||
|
|
||||||
|
fun testSaveAutoReload() {
|
||||||
|
val project = myFixture.project
|
||||||
|
val settings = KotlinScriptingSettings.getInstance(project)
|
||||||
|
val initialAutoReload = settings.isAutoReloadEnabled
|
||||||
|
|
||||||
|
settings.isAutoReloadEnabled = !initialAutoReload
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
"isAutoReloadEnabled should be set to true",
|
||||||
|
"<KotlinScriptingSettings><option name=\"isAutoReloadEnabled\" value=\"true\" /></KotlinScriptingSettings>",
|
||||||
|
XMLOutputter().outputString(settings.state)
|
||||||
|
)
|
||||||
|
|
||||||
|
settings.isAutoReloadEnabled = initialAutoReload
|
||||||
|
}
|
||||||
|
|
||||||
|
fun testSaveScriptDefinitionOff() {
|
||||||
|
val project = myFixture.project
|
||||||
|
val scriptDefinition = ScriptDefinitionsManager.getInstance(project).getAllDefinitions().first()
|
||||||
|
|
||||||
|
val settings = KotlinScriptingSettings.getInstance(project)
|
||||||
|
|
||||||
|
val initialIsEnabled = settings.isScriptDefinitionEnabled(scriptDefinition)
|
||||||
|
|
||||||
|
settings.setEnabled(scriptDefinition, !initialIsEnabled)
|
||||||
|
|
||||||
|
assertEquals(
|
||||||
|
"scriptDefinition should be off",
|
||||||
|
"<KotlinScriptingSettings><scriptDefinition><order>0</order><isEnabled>false</isEnabled></scriptDefinition></KotlinScriptingSettings>",
|
||||||
|
XMLOutputter().outputString(settings.state).replace("scriptDefinition .*\">".toRegex(), "scriptDefinition>")
|
||||||
|
)
|
||||||
|
|
||||||
|
settings.setEnabled(scriptDefinition, initialIsEnabled)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getProjectDescriptor(): LightProjectDescriptor {
|
||||||
|
return KotlinLightProjectDescriptor.INSTANCE
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user