From 6e434748d1d5bf9cd53016385df151866188b247 Mon Sep 17 00:00:00 2001 From: Vladimir Sukharev Date: Fri, 10 Feb 2023 10:34:44 +0000 Subject: [PATCH] [K2/N] Run new stdlib tests also for K2. Merge-request: KT-MR-8708 Merged-by: Vladimir Sukharev --- .../backend/konan/SetupConfiguration.kt | 6 +- .../kotlin/konan/blackboxtest/StdlibTest.kt | 77 ++++++++++++++++++- .../group/PredefinedTestCaseGroupProvider.kt | 5 ++ .../support/group/PredefinedTestCases.kt | 1 + 4 files changed, 86 insertions(+), 3 deletions(-) diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/SetupConfiguration.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/SetupConfiguration.kt index 8279e57487d..2abbf4d9573 100644 --- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/SetupConfiguration.kt +++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/SetupConfiguration.kt @@ -14,9 +14,9 @@ import org.jetbrains.kotlin.konan.file.File import org.jetbrains.kotlin.konan.target.CompilerOutputKind fun CompilerConfiguration.setupFromArguments(arguments: K2NativeCompilerArguments) = with(KonanConfigKeys) { - val commonSources = arguments.commonSources?.toSet().orEmpty() + val commonSources = arguments.commonSources?.toSet().orEmpty().map { it.absoluteNormalizedFile() } arguments.freeArgs.forEach { - addKotlinSourceRoot(it, it in commonSources) + addKotlinSourceRoot(it, it.absoluteNormalizedFile() in commonSources) } // Can be overwritten by explicit arguments below. @@ -253,6 +253,8 @@ fun CompilerConfiguration.setupFromArguments(arguments: K2NativeCompilerArgument putIfNotNull(SAVE_LLVM_IR_DIRECTORY, arguments.saveLlvmIrDirectory) } +private fun String.absoluteNormalizedFile() = java.io.File(this).absoluteFile.normalize() + internal fun CompilerConfiguration.setupCommonOptionsForCaches(konanConfig: KonanConfig) = with(KonanConfigKeys) { put(TARGET, konanConfig.target.toString()) put(DEBUG, konanConfig.debug) diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/StdlibTest.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/StdlibTest.kt index 815ed922c98..17d6c9b4091 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/StdlibTest.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/StdlibTest.kt @@ -9,6 +9,7 @@ package org.jetbrains.kotlin.konan.blackboxtest import org.jetbrains.kotlin.konan.blackboxtest.support.TestCaseId import org.jetbrains.kotlin.konan.blackboxtest.support.TestRunnerType +import org.jetbrains.kotlin.konan.blackboxtest.support.group.K2Pipeline import org.jetbrains.kotlin.konan.blackboxtest.support.group.PredefinedPaths.KOTLIN_NATIVE_DISTRIBUTION import org.jetbrains.kotlin.konan.blackboxtest.support.group.PredefinedTestCase as TC import org.jetbrains.kotlin.konan.blackboxtest.support.group.PredefinedTestCases @@ -52,9 +53,83 @@ class StdlibTest : AbstractNativeBlackBoxTest() { fun worker() = dynamicTestCase(TestCaseId.Named("worker")) } +@Tag("stdlib") +@PredefinedTestCases( + TC( + name = "default", + runnerType = TestRunnerType.DEFAULT, + freeCompilerArgs = [ENABLE_MPP, STDLIB_IS_A_FRIEND, ENABLE_X_STDLIB_API, ENABLE_X_ENCODING_API, ENABLE_RANGE_UNTIL, + "-Xcommon-sources=libraries/stdlib/common/test/jsCollectionFactories.kt", + "-Xcommon-sources=libraries/stdlib/common/test/testUtils.kt", + "-Xcommon-sources=libraries/stdlib/test/testUtils.kt", + "-Xcommon-sources=libraries/stdlib/test/text/StringEncodingTest.kt", + ], + sourceLocations = [ + "libraries/stdlib/test/**.kt", + "libraries/stdlib/common/test/**.kt", + "kotlin-native/backend.native/tests/stdlib_external/text/**.kt", + "kotlin-native/backend.native/tests/stdlib_external/utils.kt", + "kotlin-native/backend.native/tests/stdlib_external/jsCollectionFactoriesActuals.kt" + ], + ignoredFiles = [ + DISABLED_K2_NUMBERS, + DISABLED_K2_MATH, + DISABLED_K2_DURATION, + DISABLED_K2_ARRAYS, + DISABLED_K2_STRING_NUMBER_CONVERSIONS, + DISABLED_K2_UNSIGNED_ARRAYS, + DISABLED_K2_RANGE_ITERATION, + ], + ignoredTests = [DISABLED_STDLIB_TEST] + ), + TC( + name = "worker", + runnerType = TestRunnerType.WORKER, + freeCompilerArgs = [ENABLE_MPP, STDLIB_IS_A_FRIEND, ENABLE_X_STDLIB_API, ENABLE_X_ENCODING_API, ENABLE_RANGE_UNTIL, + "-Xcommon-sources=libraries/stdlib/common/test/jsCollectionFactories.kt", + "-Xcommon-sources=libraries/stdlib/common/test/testUtils.kt", + "-Xcommon-sources=libraries/stdlib/test/testUtils.kt", + "-Xcommon-sources=libraries/stdlib/test/text/StringEncodingTest.kt", + ], + sourceLocations = [ + "libraries/stdlib/test/**.kt", + "libraries/stdlib/common/test/**.kt", + "kotlin-native/backend.native/tests/stdlib_external/text/**.kt", + "kotlin-native/backend.native/tests/stdlib_external/utils.kt", + "kotlin-native/backend.native/tests/stdlib_external/jsCollectionFactoriesActuals.kt" + ], + ignoredFiles = [ + DISABLED_K2_NUMBERS, + DISABLED_K2_MATH, + DISABLED_K2_DURATION, + DISABLED_K2_ARRAYS, + DISABLED_K2_STRING_NUMBER_CONVERSIONS, + DISABLED_K2_UNSIGNED_ARRAYS, + DISABLED_K2_RANGE_ITERATION, + ], + ignoredTests = [DISABLED_STDLIB_TEST] + ) +) +@K2Pipeline +class StdlibK2Test : AbstractNativeBlackBoxTest() { + @TestFactory + fun default() = dynamicTestCase(TestCaseId.Named("default")) + + @TestFactory + fun worker() = dynamicTestCase(TestCaseId.Named("worker")) +} + private const val ENABLE_MPP = "-Xmulti-platform" internal const val STDLIB_IS_A_FRIEND = "-friend-modules=$KOTLIN_NATIVE_DISTRIBUTION/klib/common/stdlib" private const val ENABLE_X_STDLIB_API = "-opt-in=kotlin.ExperimentalStdlibApi" private const val ENABLE_X_ENCODING_API = "-opt-in=kotlin.io.encoding.ExperimentalEncodingApi" private const val ENABLE_RANGE_UNTIL = "-XXLanguage:+RangeUntilOperator" // keep until 1.8 -private const val DISABLED_STDLIB_TEST = "test.collections.CollectionTest.abstractCollectionToArray" \ No newline at end of file +private const val DISABLED_STDLIB_TEST = "test.collections.CollectionTest.abstractCollectionToArray" + +private const val DISABLED_K2_NUMBERS = "libraries/stdlib/test/numbers/NumbersTest.kt" // KT-56023 +private const val DISABLED_K2_MATH = "libraries/stdlib/test/numbers/MathTest.kt" // KT-56023 +private const val DISABLED_K2_DURATION = "libraries/stdlib/test/time/DurationTest.kt" // uses symbols from disabled MathTest.kt (see above) +private const val DISABLED_K2_ARRAYS = "libraries/stdlib/test/collections/ArraysTest.kt" // KT-55902 +private const val DISABLED_K2_STRING_NUMBER_CONVERSIONS = "libraries/stdlib/test/text/StringNumberConversionTest.kt" // KT-55902 +private const val DISABLED_K2_UNSIGNED_ARRAYS = "libraries/stdlib/test/collections/UnsignedArraysTest.kt" // KT-55902 +private const val DISABLED_K2_RANGE_ITERATION = "libraries/stdlib/test/ranges/RangeIterationTest.kt" // KT-56483 diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/group/PredefinedTestCaseGroupProvider.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/group/PredefinedTestCaseGroupProvider.kt index 33b4d414ead..3d46db29595 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/group/PredefinedTestCaseGroupProvider.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/group/PredefinedTestCaseGroupProvider.kt @@ -52,8 +52,10 @@ internal class PredefinedTestCaseGroupProvider(annotation: PredefinedTestCases) directFriendSymbols = emptySet() ) + val ignoredFiles = predefinedTestCase.ignoredFiles.map { it.absoluteNormalizedFile() } predefinedTestCase.sourceLocations .expandGlobs(settings) { "No files found for test case $testCaseId" } + .filterNot { ignoredFiles.contains(it.absoluteNormalizedFile()) } .forEach { file -> module.files += TestFile.createCommitted(file, module) } val testCase = TestCase( @@ -75,6 +77,9 @@ internal class PredefinedTestCaseGroupProvider(annotation: PredefinedTestCases) } } + private fun File.absoluteNormalizedFile() = absoluteFile.normalize() + private fun String.absoluteNormalizedFile() = File(this).absoluteNormalizedFile() + private fun Array.expandGlobs(settings: Settings, noExpandedFilesErrorMessage: () -> String): Set { val files = buildSet { this@expandGlobs.forEach { pathPattern -> diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/group/PredefinedTestCases.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/group/PredefinedTestCases.kt index 262a99f23d4..83d270f4638 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/group/PredefinedTestCases.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/group/PredefinedTestCases.kt @@ -18,6 +18,7 @@ internal annotation class PredefinedTestCase( val runnerType: TestRunnerType, val freeCompilerArgs: Array, val sourceLocations: Array, + val ignoredFiles: Array = [], // TODO Remove it after fix of KT-55902, KT-56023, KT-56483 val ignoredTests: Array = [] )