Skip to content

Commit

Permalink
Add tests for #4786 (#4801)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
3flex committed May 3, 2022
1 parent 84ac72e commit ca29f28
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 4 deletions.
Expand Up @@ -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> {
Expand Down
Expand Up @@ -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")
}
}
}
Expand Up @@ -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)

Expand All @@ -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
Expand All @@ -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")
}
}

0 comments on commit ca29f28

Please sign in to comment.