| package com.intellij.configurationScript | |
| import com.intellij.configurationScript.providers.PluginsConfiguration | |
| import com.intellij.configurationScript.schemaGenerators.PluginJsonSchemaGenerator | |
| import com.intellij.testFramework.ProjectRule | |
| import com.intellij.testFramework.assertions.Assertions.assertThat | |
| import org.intellij.lang.annotations.Language | |
| import org.junit.ClassRule | |
| import org.junit.Test | |
| import org.snakeyaml.engine.v2.nodes.MappingNode | |
| class PropertyValueReaderTest { | |
| companion object { | |
| @JvmField | |
| @ClassRule | |
| val projectRule = ProjectRule() | |
| } | |
| @Test | |
| fun collection() { | |
| val result = doReadPluginsConfiguration(""" | |
| plugins: | |
| repositories: | |
| - foo | |
| - bar | |
| - http://example.com | |
| """) | |
| val options = PluginsConfiguration() | |
| options.repositories.addAll(listOf("foo", "bar", "http://example.com")) | |
| assertThat(result).isEqualTo(options) | |
| } | |
| @Test | |
| fun `list of objects`() { | |
| val result = JdkAutoHints() | |
| readIntoObject(result, readYaml(""" | |
| sdks: | |
| - sdkName: foo | |
| sdkPath: /home/foo | |
| """).value) | |
| assertThat(result.sdks).hasSize(1) | |
| val sdks = result.sdks | |
| assertThat(sdks).hasSize(1) | |
| } | |
| } | |
| private fun readYaml(@Language("YAML") data: String): MappingNode { | |
| return doRead(data.trimIndent().reader())!! | |
| } | |
| private fun doReadPluginsConfiguration(@Suppress("SameParameterValue") @Language("YAML") data: String): PluginsConfiguration? { | |
| return readIntoObject(PluginsConfiguration(), findValueNodeByPath(PluginJsonSchemaGenerator.plugins, readYaml(data).value)!!) | |
| } |