From bc85375a1e3bb9b2dfdb8e914512c8e53ee6e119 Mon Sep 17 00:00:00 2001 From: "Alexander.Likhachev" Date: Thu, 7 Mar 2024 20:27:55 +0100 Subject: [PATCH] [BTA tests] Provide an optimized way for making exact log line assertions ^KT-61860 In Progress --- .../compilation/assertions/logAssertions.kt | 4 ++-- .../kotlin/compilation/model/AbstractModule.kt | 16 +++++++++++++++- .../compilation/model/CompilationOutcome.kt | 4 +++- 3 files changed, 20 insertions(+), 4 deletions(-) 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)