Support running import tests on bootstrap version of gradle plugin
This commit is contained in:
committed by
Alexander Dudinsky
parent
b0c96a61ec
commit
005314ce06
@@ -105,6 +105,7 @@ sourceSets {
|
||||
testsJar()
|
||||
|
||||
projectTest(parallel = false) {
|
||||
dependsOnKotlinPluginInstall()
|
||||
workingDir = rootDir
|
||||
useAndroidSdk()
|
||||
|
||||
|
||||
+3
-3
@@ -36,7 +36,7 @@ class HierarchicalMultiplatformProjectImportingTest : MultiplePluginVersionGradl
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.50+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.50+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testImportHMPPFlag() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
@@ -51,7 +51,7 @@ class HierarchicalMultiplatformProjectImportingTest : MultiplePluginVersionGradl
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.50+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.50+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testImportIntermediateModules() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
@@ -225,7 +225,7 @@ class HierarchicalMultiplatformProjectImportingTest : MultiplePluginVersionGradl
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.50+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.50+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testJvmWithJavaOnHMPP() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
|
||||
@@ -13,13 +13,13 @@ import org.junit.Test
|
||||
class ImportAndCheckHighlighting : MultiplePluginVersionGradleImportingTestCase() {
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.40+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.40+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testMultiplatformLibrary() {
|
||||
importAndCheckHighlighting()
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.40+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.40+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testUnresolvedInMultiplatformLibrary() {
|
||||
importAndCheckHighlighting(false, false)
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.junit.Test
|
||||
class ImportAndCheckNavigation : MultiplePluginVersionGradleImportingTestCase() {
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "5.0+", pluginVersion = "1.3.50+")
|
||||
@PluginTargetVersions(gradleVersion = "5.0+", pluginVersion = "1.3.50+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testNavigationToCommonizedLibrary() {
|
||||
val files = configureAndImportProject()
|
||||
|
||||
|
||||
+20
-16
@@ -21,6 +21,8 @@ import org.junit.After
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
|
||||
const val mppImportTestMinVersionForMaster = "6.0+"
|
||||
|
||||
class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportingTestCase() {
|
||||
|
||||
@Before
|
||||
@@ -39,7 +41,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.10+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.10+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testProjectDependency() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
@@ -217,6 +219,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testFileCollectionDependency() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
@@ -235,7 +238,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.30+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.30+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testUnresolvedDependency() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
@@ -255,7 +258,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "5.0+", pluginVersion = "1.3.30+")
|
||||
@PluginTargetVersions(gradleVersion = "5.0+", pluginVersion = "1.3.30+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testAndroidDependencyOnMPP() {
|
||||
configureByFiles()
|
||||
createProjectSubFile(
|
||||
@@ -359,6 +362,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testTestTasks() {
|
||||
val files = configureByFiles()
|
||||
importProject()
|
||||
@@ -400,7 +404,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.50+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.50+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testImportTestsAndTargets() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
@@ -427,7 +431,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "5.0+", pluginVersion = "1.3.50+")
|
||||
@PluginTargetVersions(gradleVersion = "5.0+", pluginVersion = "1.3.50+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testSingleAndroidTarget() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
@@ -484,7 +488,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.10+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.10+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testDependencyOnRoot() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
@@ -529,7 +533,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.10+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.10+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testNestedDependencies() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
@@ -612,7 +616,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "5.0+", pluginVersion = "1.3.20+")
|
||||
@PluginTargetVersions(gradleVersion = "5.0+", pluginVersion = "1.3.20+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testDetectAndroidSources() {
|
||||
configureByFiles()
|
||||
createProjectSubFile(
|
||||
@@ -634,7 +638,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
* dependencies in multiplatform project included in composite build
|
||||
*/
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.20+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.20+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testPlatformToCommonExpByInComposite() {
|
||||
configureByFiles()
|
||||
importProject(true)
|
||||
@@ -674,7 +678,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
* Test case for issue https://youtrack.jetbrains.com/issue/KT-29757
|
||||
*/
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.40+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.40+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testJavaTransitiveOnMPP() {
|
||||
configureByFiles()
|
||||
importProject(true)
|
||||
@@ -736,7 +740,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
* Test case for issue https://youtrack.jetbrains.com/issue/KT-28822
|
||||
*/
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.41+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.41+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testImportBeforeBuild() {
|
||||
configureByFiles()
|
||||
importProject(true)
|
||||
@@ -799,7 +803,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.20+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.20+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testProductionOnTestFlag() {
|
||||
configureByFiles()
|
||||
importProject(true)
|
||||
@@ -812,7 +816,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.30+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.30+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testJvmWithJava() {
|
||||
configureByFiles()
|
||||
importProject(true)
|
||||
@@ -865,7 +869,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.30+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.30+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testCommonTestTargetPlatform() {
|
||||
configureByFiles()
|
||||
importProject(true)
|
||||
@@ -887,7 +891,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
}
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.60+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.60+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testIgnoreIncompatibleNativeTestTasks() {
|
||||
configureByFiles()
|
||||
importProject()
|
||||
@@ -942,7 +946,7 @@ class NewMultiplatformProjectImportingTest : MultiplePluginVersionGradleImportin
|
||||
|
||||
|
||||
@Test
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.30+")
|
||||
@PluginTargetVersions(gradleVersion = "4.0+", pluginVersion = "1.3.30+", gradleVersionForLatestPlugin = mppImportTestMinVersionForMaster)
|
||||
fun testMutableArtifactLists() {
|
||||
configureByFiles()
|
||||
importProject(true)
|
||||
|
||||
+7
-47
@@ -45,7 +45,7 @@ abstract class MultiplePluginVersionGradleImportingTestCase : GradleImportingTes
|
||||
const val LATEST_SUPPORTED_VERSION = "master"// gradle plugin from current build
|
||||
|
||||
//should be extended with LATEST_SUPPORTED_VERSION
|
||||
private val KOTLIN_GRADLE_PLUGIN_VERSIONS = listOf(MINIMAL_SUPPORTED_VERSION, LATEST_STABLE_VERSUON)
|
||||
private val KOTLIN_GRADLE_PLUGIN_VERSIONS = listOf(MINIMAL_SUPPORTED_VERSION, LATEST_STABLE_VERSUON, LATEST_SUPPORTED_VERSION)
|
||||
private val KOTLIN_GRADLE_PLUGIN_VERSION_DESCRIPTION_TO_VERSION = mapOf(
|
||||
MINIMAL_SUPPORTED_VERSION to MINIMAL_SUPPORTED_GRADLE_PLUGIN_VERSION,
|
||||
LATEST_STABLE_VERSUON to LATEST_STABLE_GRADLE_PLUGIN_VERSION,
|
||||
@@ -61,7 +61,8 @@ abstract class MultiplePluginVersionGradleImportingTestCase : GradleImportingTes
|
||||
@JvmStatic
|
||||
@Parameterized.Parameters(name = "{index}: Gradle-{0}, KotlinGradlePlugin-{1}")
|
||||
fun data(): Collection<Array<Any>> {
|
||||
return AbstractModelBuilderTest.SUPPORTED_GRADLE_VERSIONS.flatMap { gradleVersion ->
|
||||
//TODO(auskov): remove extending list of gradle versions when tested version are advanced
|
||||
return (AbstractModelBuilderTest.SUPPORTED_GRADLE_VERSIONS + arrayOf("6.5")).flatMap { gradleVersion ->
|
||||
KOTLIN_GRADLE_PLUGIN_VERSIONS.map { kotlinVersion ->
|
||||
arrayOf<Any>(
|
||||
gradleVersion[0],
|
||||
@@ -72,33 +73,14 @@ abstract class MultiplePluginVersionGradleImportingTestCase : GradleImportingTes
|
||||
}
|
||||
}
|
||||
|
||||
fun repositories(useKts: Boolean, useMaster: Boolean): String {
|
||||
val flatDirs = arrayOf(
|
||||
"libraries/tools/kotlin-gradle-plugin/build/libs",
|
||||
"prepare/compiler-client-embeddable/build/libs",
|
||||
"prepare/compiler-embeddable/build/libs",
|
||||
"libraries/tools/kotlin-gradle-plugin-api/build/libs",
|
||||
"compiler/compiler-runner/build/libs",
|
||||
"libraries/tools/kotlin-gradle-plugin-model/build/libs",
|
||||
"plugins/scripting/scripting-compiler-embeddable/build/libs"
|
||||
)
|
||||
fun repositories(useKts: Boolean): String {
|
||||
val customRepositories = arrayOf("https://dl.bintray.com/kotlin/kotlin-dev", "http://dl.bintray.com/kotlin/kotlin-eap")
|
||||
val customMavenRepositories = customRepositories.map { if (useKts) "maven(\"$it\")" else "maven { url '$it' } " }.joinToString("\n")
|
||||
val baseFolder = File(".").absolutePath.replace("\\", "/")
|
||||
val quote = if (useKts) '"' else '\''
|
||||
val flatDirRepositories = if (useMaster)
|
||||
flatDirs.map { "$quote$baseFolder/$it$quote" }.joinToString(
|
||||
",\n",
|
||||
if (useKts) "flatDir { dirs(" else "flatDir { dirs ",
|
||||
if (useKts) ")}" else "}"
|
||||
)
|
||||
else
|
||||
""
|
||||
return """
|
||||
mavenLocal()
|
||||
google()
|
||||
jcenter()
|
||||
$customMavenRepositories
|
||||
$flatDirRepositories
|
||||
""".trimIndent()
|
||||
}
|
||||
|
||||
@@ -106,30 +88,8 @@ abstract class MultiplePluginVersionGradleImportingTestCase : GradleImportingTes
|
||||
val unitedProperties = HashMap(properties ?: emptyMap())
|
||||
unitedProperties["kotlin_plugin_version"] = gradleKotlinPluginVersion
|
||||
|
||||
unitedProperties["kotlin_plugin_repositories"] = repositories(false, gradleKotlinPluginVersionType == LATEST_SUPPORTED_VERSION)
|
||||
unitedProperties["kts_kotlin_plugin_repositories"] = repositories(true, gradleKotlinPluginVersionType == LATEST_SUPPORTED_VERSION)
|
||||
|
||||
unitedProperties["extraPluginDependencies"] = if (gradleKotlinPluginVersionType == LATEST_SUPPORTED_VERSION)
|
||||
"""
|
||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$gradleKotlinPluginVersion")
|
||||
classpath("org.jetbrains.kotlin:kotlin-compiler-embeddable:$gradleKotlinPluginVersion")
|
||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin-api:$gradleKotlinPluginVersion")
|
||||
classpath("org.jetbrains.kotlin:kotlin-compiler-runner:$gradleKotlinPluginVersion")
|
||||
classpath("org.jetbrains.kotlin:kotlin-compiler-client-embeddable:$gradleKotlinPluginVersion")
|
||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin-model:$gradleKotlinPluginVersion")
|
||||
""".trimIndent()
|
||||
else
|
||||
""
|
||||
|
||||
unitedProperties["kts_resolution_strategy"] = if (gradleKotlinPluginVersionType == LATEST_SUPPORTED_VERSION)
|
||||
"""resolutionStrategy {
|
||||
eachPlugin {
|
||||
if(requested.id.id == "org.jetbrains.kotlin.multiplatform") {
|
||||
useModule("org.jetbrains.kotlin:kotlin-gradle-plugin:$gradleKotlinPluginVersion")
|
||||
}
|
||||
}
|
||||
}""".trimIndent()
|
||||
else ""
|
||||
unitedProperties["kotlin_plugin_repositories"] = repositories(false)
|
||||
unitedProperties["kts_kotlin_plugin_repositories"] = repositories(true)
|
||||
return super.configureByFiles(unitedProperties)
|
||||
}
|
||||
}
|
||||
|
||||
+8
-2
@@ -48,11 +48,16 @@ public class PluginTargetVersionsRule extends TestWatcher {
|
||||
@Nullable
|
||||
private CustomMatcher pluginVersionMatcher;
|
||||
|
||||
@Nullable
|
||||
private CustomMatcher gradleVersionMatcherForLatestPlugin;
|
||||
|
||||
@NotNull
|
||||
public boolean matches(String gradleVersion, String pluginVersion, boolean isLatestPluginVersion) {
|
||||
boolean matchGradleVersion = gradleVersionMatcher == null || gradleVersionMatcher.matches(gradleVersion);
|
||||
if (isLatestPluginVersion) {
|
||||
if (gradleVersionMatcherForLatestPlugin != null) {
|
||||
return gradleVersionMatcherForLatestPlugin.matches(gradleVersion);
|
||||
}
|
||||
return matchGradleVersion;
|
||||
}
|
||||
boolean pluginVersionMatches = pluginVersionMatcher == null || pluginVersionMatcher.matches(pluginVersion);
|
||||
@@ -68,7 +73,8 @@ public class PluginTargetVersionsRule extends TestWatcher {
|
||||
}
|
||||
if (pluginTargetVersions == null) return;
|
||||
|
||||
gradleVersionMatcher = VersionMatcherRule.produceMatcher("Gradle", new TargetVersionsImpl(pluginTargetVersions.gradleVersion()));
|
||||
pluginVersionMatcher = VersionMatcherRule.produceMatcher("Plugin", new TargetVersionsImpl(pluginTargetVersions.pluginVersion()));
|
||||
gradleVersionMatcher = pluginTargetVersions.gradleVersion().isEmpty() ? null : VersionMatcherRule.produceMatcher("Gradle", new TargetVersionsImpl(pluginTargetVersions.gradleVersion()));
|
||||
pluginVersionMatcher = pluginTargetVersions.pluginVersion().isEmpty() ? null : VersionMatcherRule.produceMatcher("Plugin", new TargetVersionsImpl(pluginTargetVersions.pluginVersion()));
|
||||
gradleVersionMatcherForLatestPlugin = pluginTargetVersions.gradleVersionForLatestPlugin().isEmpty() ? null : VersionMatcherRule.produceMatcher("Gradle for latest plugin", new TargetVersionsImpl(pluginTargetVersions.gradleVersionForLatestPlugin()));
|
||||
}
|
||||
}
|
||||
|
||||
+4
-2
@@ -12,7 +12,9 @@ import java.lang.annotation.*;
|
||||
@Target({ElementType.TYPE, ElementType.METHOD})
|
||||
public @interface PluginTargetVersions {
|
||||
|
||||
String gradleVersion();
|
||||
String gradleVersion() default "";
|
||||
|
||||
String pluginVersion();
|
||||
String pluginVersion() default "";
|
||||
|
||||
String gradleVersionForLatestPlugin() default "";
|
||||
}
|
||||
Reference in New Issue
Block a user