[K2/N] Run new stdlib tests also for K2.

Merge-request: KT-MR-8708
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
This commit is contained in:
Vladimir Sukharev
2023-02-10 10:34:44 +00:00
committed by Space Team
parent f86d28449f
commit 6e434748d1
4 changed files with 86 additions and 3 deletions
@@ -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)
@@ -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"
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
@@ -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<String>.expandGlobs(settings: Settings, noExpandedFilesErrorMessage: () -> String): Set<File> {
val files = buildSet {
this@expandGlobs.forEach { pathPattern ->
@@ -18,6 +18,7 @@ internal annotation class PredefinedTestCase(
val runnerType: TestRunnerType,
val freeCompilerArgs: Array<String>,
val sourceLocations: Array<String>,
val ignoredFiles: Array<String> = [], // TODO Remove it after fix of KT-55902, KT-56023, KT-56483
val ignoredTests: Array<String> = []
)