[Gradle] Use proper approach to local repository

^KT-65528 In Progress
This commit is contained in:
Yahor Berdnikau
2024-02-02 23:03:53 +01:00
committed by Space Team
parent eac48d065b
commit ad5ee28d58
4 changed files with 43 additions and 13 deletions
@@ -9,9 +9,11 @@ import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.testbase.* import org.jetbrains.kotlin.gradle.testbase.*
import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.extension.ExtensionContext import org.junit.jupiter.api.extension.ExtensionContext
import org.junit.jupiter.api.io.TempDir
import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.ParameterizedTest
import org.junit.jupiter.params.provider.Arguments import org.junit.jupiter.params.provider.Arguments
import org.junit.jupiter.params.provider.ArgumentsSource import org.junit.jupiter.params.provider.ArgumentsSource
import java.nio.file.Path
import java.util.stream.Stream import java.util.stream.Stream
import java.util.zip.ZipFile import java.util.zip.ZipFile
import kotlin.io.path.deleteIfExists import kotlin.io.path.deleteIfExists
@@ -29,8 +31,13 @@ internal class HierarchicalStructureOptInMigrationArtifactContentMppIT : KGPBase
fun testArtifactFormatAndContent( fun testArtifactFormatAndContent(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
hmppMode: Mode, hmppMode: Mode,
@TempDir localRepository: Path,
) { ) {
project("new-mpp-published", gradleVersion) { project(
projectName = "new-mpp-published",
gradleVersion = gradleVersion,
localRepoDir = localRepository,
) {
gradleProperties.deleteIfExists() gradleProperties.deleteIfExists()
val hierarchicalStructureFlag = when (hmppMode) { val hierarchicalStructureFlag = when (hmppMode) {
@@ -52,7 +59,7 @@ internal class HierarchicalStructureOptInMigrationArtifactContentMppIT : KGPBase
).toTypedArray() ).toTypedArray()
) { ) {
val metadataJarEntries = ZipFile( val metadataJarEntries = ZipFile(
projectPath.resolve("../repo/com/example/bar/my-lib-bar/1.0/my-lib-bar-1.0.jar").toFile() localRepository.resolve("com/example/bar/my-lib-bar/1.0/my-lib-bar-1.0.jar").toFile()
).use { zip -> ).use { zip ->
zip.entries().asSequence().toList().map { it.name } zip.entries().asSequence().toList().map { it.name }
} }
@@ -14,6 +14,8 @@ import org.jetbrains.kotlin.konan.target.KonanTarget
import org.jetbrains.kotlin.tooling.KotlinToolingMetadata import org.jetbrains.kotlin.tooling.KotlinToolingMetadata
import org.jetbrains.kotlin.tooling.parseJsonOrThrow import org.jetbrains.kotlin.tooling.parseJsonOrThrow
import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.io.TempDir
import java.nio.file.Path
import kotlin.io.path.appendText import kotlin.io.path.appendText
import kotlin.io.path.readText import kotlin.io.path.readText
import kotlin.test.assertEquals import kotlin.test.assertEquals
@@ -31,9 +33,14 @@ class KotlinToolingMetadataMppIT : KGPBaseTest() {
@GradleTest @GradleTest
@DisplayName("Check published metadata contains right data") @DisplayName("Check published metadata contains right data")
fun checkPublishedMetadata( fun checkPublishedMetadata(
gradleVersion: GradleVersion gradleVersion: GradleVersion,
@TempDir localRepository: Path,
) { ) {
project("new-mpp-published", gradleVersion) { project(
projectName = "new-mpp-published",
gradleVersion = gradleVersion,
localRepoDir = localRepository
) {
build("publish") { build("publish") {
assertTasksExecuted(":$buildKotlinToolingMetadataTaskName") assertTasksExecuted(":$buildKotlinToolingMetadataTaskName")
@@ -53,8 +60,8 @@ class KotlinToolingMetadataMppIT : KGPBaseTest() {
) )
/* Check metadata file in published repository */ /* Check metadata file in published repository */
val publishedMetadataJson = projectPath.parent.resolve( val publishedMetadataJson = localRepository.resolve(
"repo/com/example/bar/my-lib-bar/1.0/my-lib-bar-1.0-kotlin-tooling-metadata.json" "com/example/bar/my-lib-bar/1.0/my-lib-bar-1.0-kotlin-tooling-metadata.json"
).readText() ).readText()
assertEquals( assertEquals(
@@ -88,8 +95,13 @@ class KotlinToolingMetadataMppIT : KGPBaseTest() {
@DisplayName("KotlinToolingMetadata should be not published when disabled") @DisplayName("KotlinToolingMetadata should be not published when disabled")
fun checkPublishingWithKotlinToolingMetadataArtifactDisabled( fun checkPublishingWithKotlinToolingMetadataArtifactDisabled(
gradleVersion: GradleVersion, gradleVersion: GradleVersion,
@TempDir localRepository: Path,
) { ) {
project("new-mpp-published", gradleVersion) { project(
projectName = "new-mpp-published",
gradleVersion = gradleVersion,
localRepoDir = localRepository
) {
gradleProperties.appendText("\nkotlin.mpp.enableKotlinToolingMetadataArtifact=false") gradleProperties.appendText("\nkotlin.mpp.enableKotlinToolingMetadataArtifact=false")
build("publish") { build("publish") {
assertFileNotExists(defaultKotlinToolingMetadataJsonPath) assertFileNotExists(defaultKotlinToolingMetadataJsonPath)
@@ -101,9 +113,14 @@ class KotlinToolingMetadataMppIT : KGPBaseTest() {
@GradleTest @GradleTest
@DisplayName("KotlinToolingMetadata tasks are avaialbe in Kotlin JS browser project") @DisplayName("KotlinToolingMetadata tasks are avaialbe in Kotlin JS browser project")
fun tasksAreAvailableInKotlinJsBrowser( fun tasksAreAvailableInKotlinJsBrowser(
gradleVersion: GradleVersion gradleVersion: GradleVersion,
@TempDir localRepository: Path
) { ) {
project("kotlin-js-browser-project", gradleVersion) { project(
projectName = "kotlin-js-browser-project",
gradleVersion = gradleVersion,
localRepoDir = localRepository
) {
build(buildKotlinToolingMetadataTaskName) { build(buildKotlinToolingMetadataTaskName) {
assertTasksExecuted(":app:$buildKotlinToolingMetadataTaskName") assertTasksExecuted(":app:$buildKotlinToolingMetadataTaskName")
assertTasksExecuted(":base:$buildKotlinToolingMetadataTaskName") assertTasksExecuted(":base:$buildKotlinToolingMetadataTaskName")
@@ -14,6 +14,8 @@ import org.jetbrains.kotlin.gradle.testbase.*
import org.jetbrains.kotlin.gradle.util.parseCompilerArgumentsFromBuildOutput import org.jetbrains.kotlin.gradle.util.parseCompilerArgumentsFromBuildOutput
import org.jetbrains.kotlin.konan.target.HostManager import org.jetbrains.kotlin.konan.target.HostManager
import org.junit.jupiter.api.DisplayName import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.io.TempDir
import java.nio.file.Path
import kotlin.io.path.appendText import kotlin.io.path.appendText
@DisplayName("'kotlin.experimental.tryNext' option") @DisplayName("'kotlin.experimental.tryNext' option")
@@ -162,10 +164,14 @@ class TryNextIT : KGPBaseTest() {
@DisplayName("MPP: language version default is changed to next") @DisplayName("MPP: language version default is changed to next")
@MppGradlePluginTests @MppGradlePluginTests
@GradleTest @GradleTest
fun languageVersionChangedMpp(gradleVersion: GradleVersion) { fun languageVersionChangedMpp(
gradleVersion: GradleVersion,
@TempDir localRepository: Path,
) {
project( project(
"new-mpp-published", "new-mpp-published",
gradleVersion, gradleVersion,
localRepoDir = localRepository,
buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG) buildOptions = defaultBuildOptions.copy(logLevel = LogLevel.DEBUG)
) { ) {
enableTryNext() enableTryNext()
@@ -349,5 +355,5 @@ class TryNextIT : KGPBaseTest() {
""".trimMargin() """.trimMargin()
) )
private val nextKotlinLanguageVersion = KotlinVersion.values().first { it > KotlinVersion.DEFAULT }.version private val nextKotlinLanguageVersion = KotlinVersion.entries.first { it > KotlinVersion.DEFAULT }.version
} }
@@ -5,7 +5,7 @@ plugins {
repositories { repositories {
mavenLocal() mavenLocal()
maven("../repo") maven("<localRepo>")
mavenCentral() mavenCentral()
} }
@@ -90,6 +90,6 @@ kotlin {
publishing { publishing {
repositories { repositories {
maven("../repo") maven("<localRepo>")
} }
} }