Skip to content

Commit 9ab38ba

Browse files
Fix quality flaw: Add missing test case for KotlinSensor (exception when reading kotlin file) (#138)
1 parent 9ed5814 commit 9ab38ba

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

sonar-kotlin-plugin/src/test/java/org/sonarsource/kotlin/plugin/KotlinSensorTest.kt

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,19 @@
1919
*/
2020
package org.sonarsource.kotlin.plugin
2121

22+
import io.mockk.every
23+
import io.mockk.spyk
2224
import org.assertj.core.api.Assertions
23-
import org.junit.Ignore
2425
import org.junit.jupiter.api.Test
2526
import org.sonar.api.batch.rule.CheckFactory
2627
import org.sonar.api.batch.sensor.highlighting.TypeOfText
2728
import org.sonar.api.batch.sensor.issue.internal.DefaultNoSonarFilter
2829
import org.sonar.api.config.internal.MapSettings
2930
import org.sonar.api.measures.CoreMetrics
31+
import org.sonar.api.utils.log.LoggerLevel
3032
import org.sonarsource.kotlin.testing.AbstractSensorTest
3133
import org.sonarsource.kotlin.testing.assertTextRange
34+
import java.io.IOException
3235
import kotlin.time.ExperimentalTime
3336

3437
@ExperimentalTime
@@ -157,6 +160,26 @@ internal class KotlinSensorTest : AbstractSensorTest() {
157160
Assertions.assertThat(textPointer.lineOffset()).isEqualTo(14)
158161
Assertions.assertThat(logTester.logs())
159162
.contains(String.format("Unable to parse file: %s. Parse error at position 1:14", inputFile.uri()))
163+
}
164+
165+
@Test
166+
fun test_fail_reading() {
167+
val inputFile = spyk(createInputFile("file1.kt", "class A { fun f() = TODO() }"))
168+
context.fileSystem().add(inputFile)
169+
every { inputFile.contents() } throws IOException("Can't read")
170+
every { inputFile.toString() } returns "file1.kt"
171+
172+
val checkFactory = checkFactory("S1764")
173+
sensor(checkFactory).execute(context)
174+
val analysisErrors = context.allAnalysisErrors()
175+
Assertions.assertThat(analysisErrors).hasSize(1)
176+
val analysisError = analysisErrors.iterator().next()
177+
Assertions.assertThat(analysisError.inputFile()).isEqualTo(inputFile)
178+
Assertions.assertThat(analysisError.message()).isEqualTo("Unable to parse file: file1.kt")
179+
val textPointer = analysisError.location()
180+
Assertions.assertThat(textPointer).isNull()
181+
182+
Assertions.assertThat(logTester.logs(LoggerLevel.ERROR)).contains("Cannot read 'file1.kt': Can't read")
160183
}
161184

162185
@Test

0 commit comments

Comments
 (0)