diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt index e9f90c9576e..4bfc1c14734 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt @@ -20,9 +20,6 @@ import kotlin.io.path.appendText @NativeGradlePluginTests class AppleFrameworkIT : KGPBaseTest() { - // TODO(Dmitrii Krasnov): remove it, when KT-58104 will be fixed - override val defaultBuildOptions = super.defaultBuildOptions.copy(statisticsForceValidation = false) - @DisplayName("Assembling AppleFrameworkForXcode tasks for IosArm64") @OptIn(EnvironmentalVariablesOverride::class) @GradleAndroidTest @@ -30,7 +27,7 @@ class AppleFrameworkIT : KGPBaseTest() { fun shouldAssembleAppleFrameworkForXcodeForIosArm64( gradleVersion: GradleVersion, agpVersion: String, - jdkProvider: JdkVersions.ProvidedJdk + jdkProvider: JdkVersions.ProvidedJdk, ) { nativeProject( @@ -78,7 +75,7 @@ class AppleFrameworkIT : KGPBaseTest() { fun shouldAssembleAppleFrameworkForXcodeForArm64AndX64Simulators( gradleVersion: GradleVersion, agpVersion: String, - jdkProvider: JdkVersions.ProvidedJdk + jdkProvider: JdkVersions.ProvidedJdk, ) { nativeProject( @@ -114,7 +111,7 @@ class AppleFrameworkIT : KGPBaseTest() { fun shouldCheckThatMacOSFrameworkHasSymlinks( gradleVersion: GradleVersion, agpVersion: String, - jdkProvider: JdkVersions.ProvidedJdk + jdkProvider: JdkVersions.ProvidedJdk, ) { nativeProject( @@ -148,7 +145,7 @@ class AppleFrameworkIT : KGPBaseTest() { fun shouldFailWithExecutingEmbedAndSignAppleFrameworkForXcode( gradleVersion: GradleVersion, agpVersion: String, - jdkProvider: JdkVersions.ProvidedJdk + jdkProvider: JdkVersions.ProvidedJdk, ) { nativeProject("sharedAppleFramework", gradleVersion, buildJdk = jdkProvider.location) { buildAndFail( @@ -167,7 +164,7 @@ class AppleFrameworkIT : KGPBaseTest() { fun shouldCheckAllRegisteredTasksWithXcodeEnvironmentForDebugIosArm64( gradleVersion: GradleVersion, agpVersion: String, - jdkProvider: JdkVersions.ProvidedJdk + jdkProvider: JdkVersions.ProvidedJdk, ) { val buildOptions = defaultBuildOptions.copy( androidVersion = agpVersion @@ -212,7 +209,7 @@ class AppleFrameworkIT : KGPBaseTest() { fun shouldCheckEmbedAndSignAppleFrameworkForXcodeDoesNotRequireXcodeEnv( gradleVersion: GradleVersion, agpVersion: String, - jdkProvider: JdkVersions.ProvidedJdk + jdkProvider: JdkVersions.ProvidedJdk, ) { val buildOptions = defaultBuildOptions.copy( androidVersion = agpVersion @@ -264,7 +261,7 @@ class AppleFrameworkIT : KGPBaseTest() { fun shouldCheckThatStaticFrameworkForArm64IsBuildAndNotEmbedded( gradleVersion: GradleVersion, agpVersion: String, - jdkProvider: JdkVersions.ProvidedJdk + jdkProvider: JdkVersions.ProvidedJdk, ) { nativeProject( @@ -309,7 +306,7 @@ class AppleFrameworkIT : KGPBaseTest() { fun shouldReportConfErrorsToXcodeWhenRequestedByEmbedAndSign( gradleVersion: GradleVersion, agpVersion: String, - jdkProvider: JdkVersions.ProvidedJdk + jdkProvider: JdkVersions.ProvidedJdk, ) { val buildOptions = defaultBuildOptions.copy( androidVersion = agpVersion @@ -354,7 +351,7 @@ class AppleFrameworkIT : KGPBaseTest() { fun shouldReportCompilationErrorsToXcodeWhenRequestedByEmbedAndSign( gradleVersion: GradleVersion, agpVersion: String, - jdkProvider: JdkVersions.ProvidedJdk + jdkProvider: JdkVersions.ProvidedJdk, ) { val buildOptions = defaultBuildOptions.copy( androidVersion = agpVersion @@ -393,7 +390,7 @@ class AppleFrameworkIT : KGPBaseTest() { fun shouldPrintCompilationErrorsWithGradleStyle( gradleVersion: GradleVersion, agpVersion: String, - jdkProvider: JdkVersions.ProvidedJdk + jdkProvider: JdkVersions.ProvidedJdk, ) { val buildOptions = defaultBuildOptions.copy( androidVersion = agpVersion @@ -432,7 +429,7 @@ class AppleFrameworkIT : KGPBaseTest() { fun shouldPrintCompilationErrorsWithXcodeStyle( gradleVersion: GradleVersion, agpVersion: String, - jdkProvider: JdkVersions.ProvidedJdk + jdkProvider: JdkVersions.ProvidedJdk, ) { val buildOptions = defaultBuildOptions.copy( androidVersion = agpVersion @@ -475,7 +472,7 @@ class AppleFrameworkIT : KGPBaseTest() { fun shouldReportErrorsToXcodeWhenEmbedAndSignRequestedAndDisableCompilerDaemon( gradleVersion: GradleVersion, agpVersion: String, - jdkProvider: JdkVersions.ProvidedJdk + jdkProvider: JdkVersions.ProvidedJdk, ) { val buildOptions = defaultBuildOptions.copy( androidVersion = agpVersion @@ -525,7 +522,7 @@ class AppleFrameworkIT : KGPBaseTest() { @JdkVersions(versions = [JavaVersion.VERSION_11]) fun smokeTestWithAppleGradlePlugin( gradleVersion: GradleVersion, - providedJdk: JdkVersions.ProvidedJdk + providedJdk: JdkVersions.ProvidedJdk, ) { nativeProject( diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleSiliconIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleSiliconIT.kt index 09b3076b260..74f19de9a91 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleSiliconIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleSiliconIT.kt @@ -19,9 +19,6 @@ import kotlin.test.fail @NativeGradlePluginTests class AppleSiliconIT : KGPBaseTest() { - // TODO(Dmitrii Krasnov): remove it, when KT-58104 will be fixed - override val defaultBuildOptions = super.defaultBuildOptions.copy(statisticsForceValidation = false) - private val host = HostManager.host @DisplayName("Tests compilation") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CommonNativeIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CommonNativeIT.kt index 85a9758c41b..3a90ac0c5cd 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CommonNativeIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CommonNativeIT.kt @@ -17,9 +17,6 @@ import java.util.* @NativeGradlePluginTests class CommonNativeIT : KGPBaseTest() { - // TODO(Dmitrii Krasnov): remove it, when KT-58104 will be fixed - override val defaultBuildOptions = super.defaultBuildOptions.copy(statisticsForceValidation = false) - private val String.withPrefix get() = "native-apple-devices-common/$this" @DisplayName("Common ios") @@ -59,7 +56,7 @@ class CommonNativeIT : KGPBaseTest() { projectName: String, libTargets: List, appTargets: List, - gradleVersion: GradleVersion + gradleVersion: GradleVersion, ) { nativeProject(projectName.withPrefix, gradleVersion) { diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/FatFrameworkIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/FatFrameworkIT.kt index d93ba33b65d..b7250758489 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/FatFrameworkIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/FatFrameworkIT.kt @@ -47,8 +47,6 @@ class FatFrameworkIT : KGPBaseTest() { nativeProject( "native-fat-framework/smoke", gradleVersion, - // TODO(Dmitrii Krasnov): return default statisticsForceValidation, when KT-58104 will be fixed - buildOptions = defaultBuildOptions.copy(statisticsForceValidation = false) ) { buildGradleKts.modify { it.checkedReplace("iosArm32()", "watchosArm32()") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/XCFrameworkIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/XCFrameworkIT.kt index 8faff8a7b31..9493bc415a9 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/XCFrameworkIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/XCFrameworkIT.kt @@ -18,9 +18,6 @@ import org.junit.jupiter.api.condition.OS @NativeGradlePluginTests class XCFrameworkIT : KGPBaseTest() { - // TODO(Dmitrii Krasnov): remove it, when KT-58104 will be fixed - override val defaultBuildOptions = super.defaultBuildOptions.copy(statisticsForceValidation = false) - @DisplayName("Assembling shared debug XCFramework for all available ios and watchos targets ") @GradleTest fun shouldAssembleXCFrameworkForAllAvailableTargets(gradleVersion: GradleVersion) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatHandlerTest.kt b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatHandlerTest.kt new file mode 100644 index 00000000000..79763bcf6c6 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/test/kotlin/org/jetbrains/kotlin/gradle/plugin/statistics/KotlinBuildStatHandlerTest.kt @@ -0,0 +1,67 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.plugin.statistics + +import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType +import org.jetbrains.kotlin.konan.target.KonanTarget +import org.jetbrains.kotlin.statistics.metrics.StringAnonymizationPolicy +import org.jetbrains.kotlin.statistics.metrics.StringMetrics +import org.junit.jupiter.api.DisplayName +import kotlin.test.Test + +class KotlinBuildStatHandlerTest { + + @DisplayName("Checks that all KonanTarget names are presented in MPP_PLATFORMS statistic's report validator") + @Test + fun mppPlatformsShouldContainsllKonanTargetsTest() { + val regex = Regex(StringMetrics.MPP_PLATFORMS.anonymization.validationRegexp()) + + val konanTargetsMissedInMppPlatforms = KonanTarget::class.sealedSubclasses + .mapNotNull { sealedClass -> sealedClass.objectInstance } + .filter { sealedClass -> !regex.matches(sealedClass.name) } + + assert(konanTargetsMissedInMppPlatforms.isEmpty()) { + "There are platforms $konanTargetsMissedInMppPlatforms which are not presented in MPP_PLATFORMS regex" + } + } + + @DisplayName("Checks that all KotlinPlatformType names are presented in MPP_PLATFORMS statistic's report validator") + @Test + fun mppPlatformsShouldContainAllKotlinPlatformTypeTest() { + val regex = Regex(StringMetrics.MPP_PLATFORMS.anonymization.validationRegexp()) + + val kotlinPlatformTypesMissedInMppPlatforms = KotlinPlatformType.values() + .map { platformType -> platformType.name } + .filter { platformTypeName -> !regex.matches(platformTypeName) } + + assert(kotlinPlatformTypesMissedInMppPlatforms.isEmpty()) { + "There are platform types $kotlinPlatformTypesMissedInMppPlatforms which are not presented in MPP_PLATFORMS regex" + } + } + + + @DisplayName("Checks that only values listed in KotlinPlatformType and KonanTarget are included in MPP_PLATFORMS") + @Test + fun mppPlatformsShouldContainOnlyKonanTargetsAndKotlinPlatformTypeTest() { + val allowedMppValues = + (StringMetrics.MPP_PLATFORMS.anonymization as StringAnonymizationPolicy.AllowedListAnonymizer) + .allowedValues + + val kotlinPlatformTypesMissedInMppPlatforms = KotlinPlatformType.values() + .map { platformType -> platformType.name } + + val konanTargetsMissedInMppPlatforms = KonanTarget::class.sealedSubclasses + .mapNotNull { sealedClass -> sealedClass.objectInstance } + .map { koltinTarget -> koltinTarget.name } + + + val extraValues = allowedMppValues - kotlinPlatformTypesMissedInMppPlatforms - konanTargetsMissedInMppPlatforms + assert(extraValues.isEmpty()) { + "There are platforms $extraValues which are presented in MPP_PLATFORMS regex," + + " but they are presented neither in konan targets nor in kotlin platform types" + } + } +} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/StringMetrics.kt b/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/StringMetrics.kt index c5ebf7df005..af5197f3539 100644 --- a/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/StringMetrics.kt +++ b/libraries/tools/kotlin-gradle-statistics/src/main/kotlin/org/jetbrains/kotlin/statistics/metrics/StringMetrics.kt @@ -24,62 +24,35 @@ enum class StringMetrics(val type: StringOverridePolicy, val anonymization: Stri CONCAT, AllowedListAnonymizer( listOf( "common", - "metadata", + "native", "jvm", "js", - "arm32", - "arm64", - "mips32", - "mipsel32", - "x64", - "android", + "android_x64", + "android_x86", "androidJvm", - "androidApp", - "androidNativeArm", - "androidNativeArm32", "android_arm32", - "androidNativeArm64", "android_arm64", - "androidNative", - "androidNativeX86", - "androidNativeX64", - "iosArm", - "iosArm32", "ios_arm32", - "iosArm64", "ios_arm64", "ios_simulator_arm64", - "ios", "ios_x64", - "iosSim", - "iosX64", - "watchos", - "watchosArm32", - "watchosArm64", - "watchosX86", - "tvos", - "tvosArm64", - "tvosX64", - "linux", - "linuxArm32Hfp", + "watchos_arm32", + "watchos_arm64", + "watchos_x86", + "watchos_x64", + "watchos_simulator_arm64", + "watchos_device_arm64", + "tvos_arm64", + "tvos_x64", + "tvos_simulator_arm64", "linux_arm32_hfp", - "linuxMips32", "linux_mips32", - "linuxMipsel32", "linux_mipsel32", - "linuxX64", "linux_arm64", "linux_x64", - "macos", - "osx", - "macosX64", "macos_x64", "macos_arm64", - "mingw", - "mingwX64", "mingw_x64", - "mingwX86", - "mingw_X86", "mingw_x86", "wasm32", "wasm"