[BTA tests] Provide an optimized way for making exact log line assertions

^KT-61860 In Progress
This commit is contained in:
Alexander.Likhachev
2024-03-07 20:27:55 +01:00
committed by Space Team
parent 95b832fa8b
commit bc85375a1e
3 changed files with 20 additions and 4 deletions
@@ -14,7 +14,7 @@ fun CompilationOutcome.assertLogContainsLines(logLevel: LogLevel, vararg expecte
fun CompilationOutcome.assertLogContainsLines(logLevel: LogLevel, expectedLines: Set<String>) {
requireLogLevel(logLevel)
val absentLines = expectedLines.filter { !logLines.getValue(logLevel).contains(it) }
val absentLines = expectedLines.filter { !uniqueLogLines.getValue(logLevel).contains(it) }
assert(absentLines.isEmpty()) {
"""
|The following lines were expected to be printed on $logLevel level, however they were not:
@@ -29,7 +29,7 @@ fun CompilationOutcome.assertLogDoesNotContainLines(logLevel: LogLevel, vararg e
fun CompilationOutcome.assertLogDoesNotContainLines(logLevel: LogLevel, expectedLines: Set<String>) {
requireLogLevel(logLevel)
val presentLines = expectedLines.filter { logLines.getValue(logLevel).contains(it) }
val presentLines = expectedLines.filter { uniqueLogLines.getValue(logLevel).contains(it) }
assert(presentLines.isEmpty()) {
"""
|The following lines were not expected to be printed on $logLevel level, however they were:
@@ -12,8 +12,22 @@ import org.junit.jupiter.api.Assertions.assertEquals
import java.nio.file.Path
private class CompilationOutcomeImpl(
override val logLines: Map<LogLevel, Collection<String>>,
rawLogLines: Map<LogLevel, Collection<String>>,
) : CompilationOutcome {
private val _logLines by lazy {
rawLogLines.mapValues { (_, lines) -> lines.toList() }
}
override val logLines: Map<LogLevel, List<String>>
get() = _logLines
private val _uniqueLogLines by lazy {
rawLogLines.mapValues { (_, lines) -> lines.toSet() }
}
override val uniqueLogLines: Map<LogLevel, Set<String>>
get() = _uniqueLogLines
var maxLogLevel: LogLevel = LogLevel.ERROR
private set
var expectedResult = CompilationResult.COMPILATION_SUCCESS
@@ -8,7 +8,9 @@ package org.jetbrains.kotlin.buildtools.api.tests.compilation.model
import org.jetbrains.kotlin.buildtools.api.CompilationResult
interface CompilationOutcome {
val logLines: Map<LogLevel, Collection<String>>
val logLines: Map<LogLevel, List<String>>
val uniqueLogLines: Map<LogLevel, Set<String>>
fun requireLogLevel(logLevel: LogLevel)