From ca4410aa530701b40244329896389c3f357d53c5 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 29 Jul 2021 19:24:06 +0300 Subject: [PATCH] Stop auto-generating expected test data on TeamCity in assertEqualsToFile --- .../kotlin/test/services/JUnit5Assertions.kt | 12 +++++++++--- .../jetbrains/kotlin/test/KotlinTestUtils.java | 17 ++++++++++++----- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/JUnit5Assertions.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/JUnit5Assertions.kt index 62d566bad34..3f5ec7271cd 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/JUnit5Assertions.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/JUnit5Assertions.kt @@ -15,13 +15,19 @@ import java.io.IOException import org.junit.jupiter.api.Assertions as JUnit5PlatformAssertions object JUnit5Assertions : AssertionsService() { + private val isTeamCityBuild: Boolean = System.getenv("TEAMCITY_VERSION") != null + override fun assertEqualsToFile(expectedFile: File, actual: String, sanitizer: (String) -> String, message: () -> String) { try { val actualText = actual.trim { it <= ' ' }.convertLineSeparators().trimTrailingWhitespacesAndAddNewlineAtEOF() if (!expectedFile.exists()) { - expectedFile.parentFile.mkdirs() - expectedFile.writeText(actualText) - org.junit.jupiter.api.fail("Expected data file did not exist. Generating: $expectedFile") + if (isTeamCityBuild) { + org.junit.jupiter.api.fail("Expected data file did not exist `$expectedFile`") + } else { + expectedFile.parentFile.mkdirs() + expectedFile.writeText(actualText) + org.junit.jupiter.api.fail("Expected data file did not exist. Generating: $expectedFile") + } } val expected = expectedFile.readText().convertLineSeparators() val expectedText = expected.trim { it <= ' ' }.trimTrailingWhitespacesAndAddNewlineAtEOF() diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java b/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java index dd21ca107a5..1c9795e929c 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java @@ -25,7 +25,6 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.analyzer.AnalysisResult; import org.jetbrains.kotlin.builtins.DefaultBuiltIns; import org.jetbrains.kotlin.builtins.KotlinBuiltIns; -import org.jetbrains.kotlin.checkers.CompilerTestLanguageVersionSettings; import org.jetbrains.kotlin.checkers.CompilerTestLanguageVersionSettingsKt; import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys; import org.jetbrains.kotlin.cli.common.config.ContentRootsKt; @@ -37,7 +36,9 @@ import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles; import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment; import org.jetbrains.kotlin.cli.jvm.config.JvmContentRootsKt; import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime; -import org.jetbrains.kotlin.config.*; +import org.jetbrains.kotlin.config.CommonConfigurationKeys; +import org.jetbrains.kotlin.config.CompilerConfiguration; +import org.jetbrains.kotlin.config.JVMConfigurationKeys; import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl; import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil; import org.jetbrains.kotlin.lexer.KtTokens; @@ -46,6 +47,7 @@ import org.jetbrains.kotlin.psi.KtFile; import org.jetbrains.kotlin.psi.KtPsiFactoryKt; import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil; import org.jetbrains.kotlin.storage.LockBasedStorageManager; +import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase; import org.jetbrains.kotlin.test.util.JUnit4Assertions; import org.jetbrains.kotlin.test.util.KtTestUtil; import org.jetbrains.kotlin.test.util.StringUtilsKt; @@ -61,7 +63,8 @@ import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static org.jetbrains.kotlin.test.InTextDirectivesUtils.*; +import static org.jetbrains.kotlin.test.InTextDirectivesUtils.IGNORE_BACKEND_DIRECTIVE_PREFIX; +import static org.jetbrains.kotlin.test.InTextDirectivesUtils.isIgnoredTarget; public class KotlinTestUtils { public static String TEST_MODULE_NAME = "test-module"; @@ -257,8 +260,12 @@ public class KotlinTestUtils { String actualText = StringUtilsKt.trimTrailingWhitespacesAndAddNewlineAtEOF(StringUtil.convertLineSeparators(actual.trim())); if (!expectedFile.exists()) { - FileUtil.writeToFile(expectedFile, actualText); - Assert.fail("Expected data file did not exist. Generating: " + expectedFile); + if (KtUsefulTestCase.IS_UNDER_TEAMCITY) { + Assert.fail("Expected data file " + expectedFile + " did not exist"); + } else { + FileUtil.writeToFile(expectedFile, actualText); + Assert.fail("Expected data file did not exist. Generating: " + expectedFile); + } } String expected = FileUtil.loadFile(expectedFile, CharsetToolkit.UTF8, true);