diff --git a/compiler/build-tools/kotlin-build-tools-api-tests/src/main/kotlin/compilation/assertions/logAssertions.kt b/compiler/build-tools/kotlin-build-tools-api-tests/src/main/kotlin/compilation/assertions/logAssertions.kt index 5400cbb36e6..30e43b8340e 100644 --- a/compiler/build-tools/kotlin-build-tools-api-tests/src/main/kotlin/compilation/assertions/logAssertions.kt +++ b/compiler/build-tools/kotlin-build-tools-api-tests/src/main/kotlin/compilation/assertions/logAssertions.kt @@ -14,7 +14,7 @@ fun CompilationOutcome.assertLogContainsLines(logLevel: LogLevel, vararg expecte fun CompilationOutcome.assertLogContainsLines(logLevel: LogLevel, expectedLines: Set) { 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) { 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: diff --git a/compiler/build-tools/kotlin-build-tools-api-tests/src/main/kotlin/compilation/model/AbstractModule.kt b/compiler/build-tools/kotlin-build-tools-api-tests/src/main/kotlin/compilation/model/AbstractModule.kt index 48e16d2a263..b8d13ef55dc 100644 --- a/compiler/build-tools/kotlin-build-tools-api-tests/src/main/kotlin/compilation/model/AbstractModule.kt +++ b/compiler/build-tools/kotlin-build-tools-api-tests/src/main/kotlin/compilation/model/AbstractModule.kt @@ -12,8 +12,22 @@ import org.junit.jupiter.api.Assertions.assertEquals import java.nio.file.Path private class CompilationOutcomeImpl( - override val logLines: Map>, + rawLogLines: Map>, ) : CompilationOutcome { + private val _logLines by lazy { + rawLogLines.mapValues { (_, lines) -> lines.toList() } + } + + override val logLines: Map> + get() = _logLines + + private val _uniqueLogLines by lazy { + rawLogLines.mapValues { (_, lines) -> lines.toSet() } + } + + override val uniqueLogLines: Map> + get() = _uniqueLogLines + var maxLogLevel: LogLevel = LogLevel.ERROR private set var expectedResult = CompilationResult.COMPILATION_SUCCESS diff --git a/compiler/build-tools/kotlin-build-tools-api-tests/src/main/kotlin/compilation/model/CompilationOutcome.kt b/compiler/build-tools/kotlin-build-tools-api-tests/src/main/kotlin/compilation/model/CompilationOutcome.kt index 45402f5a488..897613dc197 100644 --- a/compiler/build-tools/kotlin-build-tools-api-tests/src/main/kotlin/compilation/model/CompilationOutcome.kt +++ b/compiler/build-tools/kotlin-build-tools-api-tests/src/main/kotlin/compilation/model/CompilationOutcome.kt @@ -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> + val logLines: Map> + + val uniqueLogLines: Map> fun requireLogLevel(logLevel: LogLevel)