diff --git a/samt-config/src/main/kotlin/tools/samt/config/SamtConfigurationParser.kt b/samt-config/src/main/kotlin/tools/samt/config/SamtConfigurationParser.kt index 871877bb..fcba4c7b 100644 --- a/samt-config/src/main/kotlin/tools/samt/config/SamtConfigurationParser.kt +++ b/samt-config/src/main/kotlin/tools/samt/config/SamtConfigurationParser.kt @@ -3,6 +3,7 @@ package tools.samt.config import com.charleskorn.kaml.* import kotlinx.serialization.SerializationException import java.nio.file.Path +import kotlin.io.path.Path import kotlin.io.path.exists import kotlin.io.path.inputStream import tools.samt.common.DiagnosticSeverity as CommonDiagnosticSeverity @@ -37,7 +38,8 @@ object SamtConfigurationParser { SamtConfiguration() } - val projectDirectory = path.parent + // a single component relative path like "samt.yaml" will return null as parent, fallback to working directory + val projectDirectory = path.parent ?: Path("") return CommonSamtConfiguration( source = projectDirectory.resolve(parsedConfiguration.source).normalize(), diff --git a/samt-config/src/test/kotlin/tools/samt/config/SamtConfigurationParserTest.kt b/samt-config/src/test/kotlin/tools/samt/config/SamtConfigurationParserTest.kt index 5abfbf77..eb5ba449 100644 --- a/samt-config/src/test/kotlin/tools/samt/config/SamtConfigurationParserTest.kt +++ b/samt-config/src/test/kotlin/tools/samt/config/SamtConfigurationParserTest.kt @@ -2,9 +2,7 @@ package tools.samt.config import com.charleskorn.kaml.YamlException import org.junit.jupiter.api.assertThrows -import kotlin.io.path.Path -import kotlin.io.path.exists -import kotlin.io.path.isDirectory +import kotlin.io.path.* import kotlin.test.BeforeTest import kotlin.test.Test import kotlin.test.assertEquals @@ -143,4 +141,31 @@ class SamtConfigurationParserTest { exception.message ) } + + @Test + fun `single component relative path works`() { + val configPath = Path("samt-minimal.yaml") + try { + testDirectory.resolve("samt-minimal.yaml").copyTo(configPath, overwrite = true) + val samtConfiguration = SamtConfigurationParser.parseConfiguration(configPath) + assertEquals( + tools.samt.common.SamtConfiguration( + source = Path("src"), + plugins = emptyList(), + generators = listOf( + tools.samt.common.SamtGeneratorConfiguration( + name = "samt-kotlin-ktor", + output = Path("out"), + options = mapOf( + "addPrefixToKotlinPackage" to "com.company.samt.generated", + ) + ) + ) + ), + samtConfiguration + ) + } finally { + configPath.deleteIfExists() + } + } }