mirror of
https://github.com/jlengrand/detekt.git
synced 2026-03-10 08:11:23 +00:00
* Add CLI tests to ensure jvm-target and language-version flags are properly mapped * Make errors while mapping jvm-target & language-version inputs more descriptive * Return IAE instead of ISE when jvm-target & language-version fails to parse * Add tests ensuring jvmTarget & languageVersion are mapped to CLI flags
This commit is contained in:
@@ -47,13 +47,21 @@ class MultipleExistingPathConverter : DetektInputPathConverter<Path> {
|
||||
}
|
||||
|
||||
class LanguageVersionConverter : IStringConverter<LanguageVersion> {
|
||||
override fun convert(value: String): LanguageVersion =
|
||||
checkNotNull(LanguageVersion.fromFullVersionString(value)) { "Invalid value passed to --language-version" }
|
||||
override fun convert(value: String): LanguageVersion {
|
||||
val validValues by lazy { LanguageVersion.values().joinToString { it.versionString } }
|
||||
return requireNotNull(LanguageVersion.fromFullVersionString(value)) {
|
||||
"\"$value\" passed to --language-version, expected one of [$validValues]"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class JvmTargetConverter : IStringConverter<JvmTarget> {
|
||||
override fun convert(value: String): JvmTarget =
|
||||
checkNotNull(JvmTarget.fromString(value)) { "Invalid value passed to --jvm-target" }
|
||||
override fun convert(value: String): JvmTarget {
|
||||
val validValues by lazy { JvmTarget.values().joinToString { it.description } }
|
||||
return requireNotNull(JvmTarget.fromString(value)) {
|
||||
"\"$value\" passed to --jvm-target, expected one of [$validValues]"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class ClasspathResourceConverter : IStringConverter<URL> {
|
||||
|
||||
@@ -121,4 +121,26 @@ internal class CliArgsSpec {
|
||||
assertThat(spec.rulesSpec.activateAllRules).isTrue()
|
||||
}
|
||||
}
|
||||
|
||||
@Nested
|
||||
inner class `type resolution parameters are accepted` {
|
||||
|
||||
@Test
|
||||
fun `--jvm-target is accepted`() {
|
||||
val spec = parseArguments(arrayOf("--jvm-target", "11")).toSpec()
|
||||
assertThat(spec.compilerSpec.jvmTarget).isEqualTo("11")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `--jvm-target with decimal is accepted`() {
|
||||
val spec = parseArguments(arrayOf("--jvm-target", "1.8")).toSpec()
|
||||
assertThat(spec.compilerSpec.jvmTarget).isEqualTo("1.8")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `--language-version is accepted`() {
|
||||
val spec = parseArguments(arrayOf("--language-version", "1.6")).toSpec()
|
||||
assertThat(spec.compilerSpec.languageVersion).isEqualTo("1.6")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,10 @@ class DetektJvmSpec {
|
||||
reports.txt.required.set(false)
|
||||
}
|
||||
}
|
||||
tasks.named("detektTest", Detekt::class.java) {
|
||||
it.jvmTarget = "1.8"
|
||||
it.languageVersion = "1.6"
|
||||
}
|
||||
},
|
||||
).also(DslGradleRunner::setupProject)
|
||||
|
||||
@@ -41,6 +45,8 @@ class DetektJvmSpec {
|
||||
assertThat(argumentString).contains("--report sarif:")
|
||||
assertThat(argumentString).doesNotContain("--report txt:")
|
||||
assertThat(argumentString).contains("--classpath")
|
||||
assertThat(argumentString).doesNotContain("--jvm-target")
|
||||
assertThat(argumentString).doesNotContain("--language-version")
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -55,5 +61,7 @@ class DetektJvmSpec {
|
||||
assertThat(argumentString).contains("--report sarif:")
|
||||
assertThat(argumentString).doesNotContain("--report txt:")
|
||||
assertThat(argumentString).contains("--classpath")
|
||||
assertThat(argumentString).contains("--jvm-target 1.8")
|
||||
assertThat(argumentString).contains("--language-version 1.6")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user