Skip to content

Commit

Permalink
Add asserts about output
Browse files Browse the repository at this point in the history
  • Loading branch information
BraisGabin committed Aug 21, 2022
1 parent b3a9279 commit bf79a37
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 7 deletions.
@@ -1,5 +1,6 @@
package io.gitlab.arturbosch.detekt.core

import io.github.detekt.test.utils.StringPrintStream
import io.github.detekt.test.utils.compileForTest
import io.gitlab.arturbosch.detekt.api.CodeSmell
import io.gitlab.arturbosch.detekt.api.Config
Expand Down Expand Up @@ -64,70 +65,97 @@ class AnalyzerSpec(val env: KotlinCoreEnvironment) {
@Test
fun `no findings`() {
val testFile = path.resolve("Test.kt")
val settings = createProcessingSettings(testFile, yamlConfig("configs/config-value-type-correct.yml"))
val output = StringPrintStream()
val settings = createProcessingSettings(
testFile,
yamlConfig("configs/config-value-type-correct.yml"),
outputChannel = output,
)
val analyzer = Analyzer(settings, listOf(StyleRuleSetProvider()), emptyList())

assertThat(settings.use { analyzer.run(listOf(compileForTest(testFile))) }.values.flatten()).isEmpty()
assertThat(output.toString()).isEmpty()
}

@Test
fun `with findings`() {
val testFile = path.resolve("Test.kt")
val settings = createProcessingSettings(testFile, yamlConfig("configs/config-value-type-correct.yml"))
val output = StringPrintStream()
val settings = createProcessingSettings(
testFile,
yamlConfig("configs/config-value-type-correct.yml"),
outputChannel = output,
)
val analyzer = Analyzer(settings, listOf(StyleRuleSetProvider(30)), emptyList())

assertThat(settings.use { analyzer.run(listOf(compileForTest(testFile))) }.values.flatten()).hasSize(1)
assertThat(output.toString()).isEmpty()
}

@Test
fun `with findings and context binding`() {
val testFile = path.resolve("Test.kt")
val settings = createProcessingSettings(testFile, yamlConfig("configs/config-value-type-correct.yml"))
val output = StringPrintStream()
val settings = createProcessingSettings(
testFile,
yamlConfig("configs/config-value-type-correct.yml"),
outputChannel = output,
)
val analyzer = Analyzer(settings, listOf(StyleRuleSetProvider(30)), emptyList())
val ktFile = compileForTest(testFile)
val bindingContext = env.getContextForPaths(listOf(ktFile))

assertThat(settings.use { analyzer.run(listOf(ktFile), bindingContext) }.values.flatten()).hasSize(2)
assertThat(output.toString()).isEmpty()
}

@Test
fun `with findings but ignored`() {
val testFile = path.resolve("Test.kt")
val output = StringPrintStream()
val settings = createProcessingSettings(
testFile,
yamlConfig("configs/config-value-type-correct-ignore-annotated.yml")
yamlConfig("configs/config-value-type-correct-ignore-annotated.yml"),
outputChannel = output,
)
val analyzer = Analyzer(settings, listOf(StyleRuleSetProvider(18)), emptyList())

assertThat(settings.use { analyzer.run(listOf(compileForTest(testFile))) }.values.flatten()).isEmpty()
assertThat(output.toString()).isEmpty()
}

@Test
fun `with faulty rule`() {
val testFile = path.resolve("Test.kt")
val output = StringPrintStream()
val settings = createProcessingSettings(
testFile,
yamlConfig("configs/config-value-type-correct.yml")
yamlConfig("configs/config-value-type-correct.yml"),
outputChannel = output,
)
val analyzer = Analyzer(settings, listOf(FaultyRuleSetProvider()), emptyList())

assertThatThrownBy { settings.use { analyzer.run(listOf(compileForTest(testFile))) } }
.hasCauseInstanceOf(IllegalStateException::class.java)
.hasMessageContaining("Location: ${FaultyRule::class.java.name}")
assertThat(output.toString()).isEmpty()
}

@Test
fun `with faulty rule without stack trace`() {
val testFile = path.resolve("Test.kt")
val output = StringPrintStream()
val settings = createProcessingSettings(
testFile,
yamlConfig("configs/config-value-type-correct.yml")
yamlConfig("configs/config-value-type-correct.yml"),
outputChannel = output,
)
val analyzer = Analyzer(settings, listOf(FaultyRuleNoStackTraceSetProvider()), emptyList())

assertThatThrownBy { settings.use { analyzer.run(listOf(compileForTest(testFile))) } }
.hasCauseInstanceOf(IllegalStateException::class.java)
.hasMessageContaining("Location: ${null}")
assertThat(output.toString()).isEmpty()
}
}
}
Expand Down
Expand Up @@ -7,6 +7,7 @@ import io.github.detekt.tooling.api.spec.ReportsSpec
import io.github.detekt.tooling.dsl.ProcessingSpecBuilder
import io.gitlab.arturbosch.detekt.api.Config
import io.gitlab.arturbosch.detekt.core.reporting.DETEKT_OUTPUT_REPORT_PATHS_KEY
import java.io.PrintStream
import java.nio.file.Path
import java.util.concurrent.AbstractExecutorService
import java.util.concurrent.TimeUnit
Expand All @@ -18,14 +19,15 @@ fun createProcessingSettings(
inputPath: Path? = null,
config: Config = Config.empty,
reportPaths: Collection<ReportsSpec.Report> = emptyList(),
outputChannel: PrintStream = NullPrintStream(),
init: ProcessingSpecBuilder.() -> Unit = { /* no-op */ },
): ProcessingSettings {
val spec = ProcessingSpec {
project {
inputPaths = listOfNotNull(inputPath)
}
logging {
outputChannel = NullPrintStream()
this.outputChannel = outputChannel
errorChannel = NullPrintStream()
}
config {
Expand Down

0 comments on commit bf79a37

Please sign in to comment.