Migrated the rest part of git connected cocoapods tests to the new test dsl (junit 5 and gradle test kit)

#KT-51553 In Progress
This commit is contained in:
Dmitrii Krasnov
2023-06-05 13:54:00 +02:00
committed by Space Team
parent 3ce61f988f
commit 455aa4a76a
2 changed files with 77 additions and 91 deletions
@@ -212,7 +212,7 @@ class CocoaPodsGitIT : KGPBaseTest() {
val anotherPodName = "Alamofire"
val anotherPodRepo = "https://github.com/Alamofire/Alamofire"
buildGradleKts.addPod(anotherPodName, produceGitBlock(anotherPodRepo))
testImport(listOf(defaultPodRepo, anotherPodRepo)) {
testImport(repos = listOf(defaultPodRepo, anotherPodRepo)) {
assertTasksExecuted(
podspecTaskName,
@@ -312,7 +312,7 @@ class CocoaPodsGitIT : KGPBaseTest() {
}
}
@DisplayName("Pod Build UTD after clean")
@DisplayName("Pod Build is not UTD after clean")
@GradleTest
fun testPodBuildUTDClean(gradleVersion: GradleVersion) {
nativeProjectWithCocoapodsAndIosAppPodFile(gradleVersion = gradleVersion) {
@@ -403,7 +403,74 @@ class CocoaPodsGitIT : KGPBaseTest() {
assertTasksUpToDate(defaultPodGenTaskName)
}
}
}
@DisplayName("UTD for spec repos")
@GradleTest
fun testSpecReposUTD(gradleVersion: GradleVersion) {
nativeProjectWithCocoapodsAndIosAppPodFile(gradleVersion = gradleVersion) {
buildGradleKts.addPod("AFNetworking")
build(defaultPodGenTaskName) {
assertTasksExecuted(defaultPodGenTaskName)
}
buildGradleKts.addSpecRepo("https://github.com/alozhkin/spec_repo_example.git")
build(defaultPodGenTaskName) {
assertTasksExecuted(defaultPodGenTaskName)
}
build(defaultPodGenTaskName) {
assertTasksUpToDate(defaultPodGenTaskName)
}
}
}
@DisplayName("Import subspecs")
@GradleTest
fun testImportSubspecs(gradleVersion: GradleVersion) {
nativeProjectWithCocoapodsAndIosAppPodFile(gradleVersion = gradleVersion) {
buildGradleKts.addPod("SDWebImage/Core")
buildGradleKts.addPod("SDWebImage/MapKit")
testImport()
}
}
@DisplayName("Checking useLibraries mode")
@GradleTest
fun testUseLibrariesMode(gradleVersion: GradleVersion) {
nativeProjectWithCocoapodsAndIosAppPodFile(gradleVersion = gradleVersion) {
buildGradleKts.addCocoapodsBlock("useLibraries()")
buildGradleKts.addPod("AFNetworking", configuration = "headers = \"AFNetworking/AFNetworking.h\"")
testImport()
}
}
@DisplayName("Checking that useLibraries mode warns when pod is added without headers specified")
@GradleTest
fun testUseLibrariesModeWarnsWhenPodIsAddedWithoutHeadersSpecified(gradleVersion: GradleVersion) {
nativeProjectWithCocoapodsAndIosAppPodFile(gradleVersion = gradleVersion) {
buildGradleKts.addCocoapodsBlock("useLibraries()")
buildGradleKts.addPod("AFNetworking")
testImport {
assertOutputContains("w: Pod 'AFNetworking' should have 'headers' property specified when using 'useLibraries()'")
}
}
}
@DisplayName("Spec repos import")
@GradleTest
fun testSpecReposImport(gradleVersion: GradleVersion) {
val podName = "example"
val podRepo = "https://github.com/alozhkin/spec_repo"
nativeProjectWithCocoapodsAndIosAppPodFile(gradleVersion = gradleVersion) {
buildGradleKts.addPod(podName)
buildGradleKts.addSpecRepo(podRepo)
testImport(repos = listOf(podRepo)) {
podImportAsserts(buildGradleKts)
}
}
}
private fun doTestGit(
@@ -423,7 +490,7 @@ class CocoaPodsGitIT : KGPBaseTest() {
val buildScript = if (isGradleBuildScript) buildGradle else buildGradleKts
buildScript.addPod(pod, produceGitBlock(repo, branch, commit, tag))
testImport(listOf(repo)) {
testImport(repos = listOf(repo)) {
podImportAsserts(buildScript)
testImportAssertions()
}
@@ -493,6 +560,7 @@ class CocoaPodsGitIT : KGPBaseTest() {
}
private fun TestProject.testImport(
taskName: String = podImportTaskName,
repos: List<String> = listOf(defaultPodRepo),
vararg args: String,
assertions: BuildResult.() -> Unit = {},
@@ -500,10 +568,8 @@ class CocoaPodsGitIT : KGPBaseTest() {
isRepoAvailable(repos)
build(podImportTaskName, *args) {
build(taskName, *args) {
assertions()
}
}
}
@@ -6,12 +6,10 @@
package org.jetbrains.kotlin.gradle.native
import org.jetbrains.kotlin.gradle.*
import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin
import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin.Companion.DUMMY_FRAMEWORK_TASK_NAME
import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin.Companion.POD_BUILD_TASK_NAME
import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin.Companion.POD_GEN_TASK_NAME
import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin.Companion.POD_IMPORT_TASK_NAME
import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin.Companion.POD_INSTALL_TASK_NAME
import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin.Companion.POD_SETUP_BUILD_TASK_NAME
import org.jetbrains.kotlin.gradle.plugin.cocoapods.KotlinCocoapodsPlugin.Companion.POD_SPEC_TASK_NAME
import org.jetbrains.kotlin.gradle.testbase.ImportMode
import org.jetbrains.kotlin.gradle.testbase.cocoaPodsEnvironmentVariables
@@ -54,19 +52,12 @@ class CocoaPodsIT : BaseGradleIT() {
private val dummyTaskName = ":$DUMMY_FRAMEWORK_TASK_NAME"
private val podspecTaskName = ":$POD_SPEC_TASK_NAME"
private val podGenTaskName = ":$POD_GEN_TASK_NAME"
private val podImportTaskName = ":$POD_IMPORT_TASK_NAME"
private val podInstallTaskName = ":$POD_INSTALL_TASK_NAME"
private val defaultPodRepo = "https://github.com/AFNetworking/AFNetworking"
private val defaultPodName = "AFNetworking"
private val defaultFamily = "ios"
private val defaultPodGenTaskName = podGenFullTaskName()
private val defaultPodInstallSyntheticTaskName = ":podInstallSyntheticIos"
private fun podGenFullTaskName(familyName: String = defaultFamily) =
podGenTaskName + familyName.replaceFirstChar { if (it.isLowerCase()) it.titlecase(Locale.getDefault()) else it.toString() }
private lateinit var hooks: CustomHooks
private lateinit var project: BaseGradleIT.Project
@@ -111,17 +102,6 @@ class CocoaPodsIT : BaseGradleIT() {
project.testSynthetic(":second-library:podImport")
}
@Test
fun testSpecReposImport() {
val podName = "example"
val podRepo = "https://github.com/alozhkin/spec_repo"
with(project.gradleBuildScript()) {
addPod(podName)
addSpecRepo(podRepo)
}
project.testImportWithAsserts(listOf(podRepo))
}
@Test
fun testSyntheticProjectPodfileGeneration() {
val gradleProject = transformProjectWithPluginsDsl(cocoapodsSingleKtPod, gradleVersion)
@@ -251,6 +231,7 @@ class CocoaPodsIT : BaseGradleIT() {
project.testImport()
}
@Test
fun testChangeFrameworkTypeUTD() {
project.gradleBuildScript().appendToCocoapodsBlock(
@@ -290,26 +271,6 @@ class CocoaPodsIT : BaseGradleIT() {
project.testImport()
}
@Test
fun testSpecReposUTD() {
with(project.gradleBuildScript()) {
addPod("AFNetworking")
}
hooks.addHook {
assertTasksExecuted(defaultPodGenTaskName)
}
project.testSynthetic(defaultPodGenTaskName)
with(project.gradleBuildScript()) {
addSpecRepo("https://github.com/alozhkin/spec_repo_example.git")
}
project.testSynthetic(defaultPodGenTaskName)
hooks.rewriteHooks {
assertTasksUpToDate(defaultPodGenTaskName)
}
project.testSynthetic(defaultPodGenTaskName)
}
@Test
fun testPodInstallInvalidatesUTD() {
with(project.gradleBuildScript()) {
@@ -328,15 +289,6 @@ class CocoaPodsIT : BaseGradleIT() {
project.testSynthetic(defaultPodInstallSyntheticTaskName)
}
@Test
fun testImportSubspecs() {
with(project.gradleBuildScript()) {
addPod("SDWebImage/Core")
addPod("SDWebImage/MapKit")
}
project.testImport(listOf(defaultPodRepo))
}
@Test
fun testUTDPodspec() {
project.testWithWrapper(podspecTaskName)
@@ -378,9 +330,6 @@ class CocoaPodsIT : BaseGradleIT() {
project.testSynthetic(podInstallTaskName)
}
// other tests
@Test
fun supportPodsWithDependencies() {
with(project.gradleBuildScript()) {
@@ -420,31 +369,6 @@ class CocoaPodsIT : BaseGradleIT() {
}
}
@Test
fun testUseLibrariesMode() {
with(project) {
gradleBuildScript().appendToCocoapodsBlock("useLibraries()")
gradleBuildScript().addPod("AFNetworking", configuration = "headers = \"AFNetworking/AFNetworking.h\"")
testImport()
}
}
@Test
fun testUseLibrariesModeWarnWhenPodIsAddedWithoutHeadersSpecified() {
with(project) {
gradleBuildScript().appendToCocoapodsBlock("useLibraries()")
gradleBuildScript().addPod("AFNetworking")
hooks.addHook {
assertContains("w: Pod 'AFNetworking' should have 'headers' property specified when using 'useLibraries()'")
}
testImport()
}
}
@Test
fun testCocoapodsWithRegularFrameworkDefinition() {
with(project) {
@@ -906,7 +830,6 @@ class CocoaPodsIT : BaseGradleIT() {
}
}
private fun Project.testImportWithAsserts(
repos: List<String> = listOf(),
vararg args: String,
@@ -965,7 +888,6 @@ class CocoaPodsIT : BaseGradleIT() {
appendToCocoapodsBlock(podBlock)
}
private fun File.addSpecRepo(specRepo: String) = appendToCocoapodsBlock("url(\"$specRepo\")".wrap("specRepos"))
private fun File.appendToKotlinBlock(str: String) = appendLine(str.wrap("kotlin"))
@@ -980,8 +902,6 @@ class CocoaPodsIT : BaseGradleIT() {
""".trimMargin()
private fun File.appendLine(s: String) = appendText("\n$s")
// proposition phase
private fun isRepoAvailable(repo: String): Boolean {
@@ -1022,12 +942,12 @@ class CocoaPodsIT : BaseGradleIT() {
} else {
assertTasksSkipped("$taskPrefix:$podInstall")
}
assertTasksRegisteredByPrefix(listOf("$taskPrefix:$POD_GEN_TASK_NAME"))
assertTasksRegisteredByPrefix(listOf("$taskPrefix:${KotlinCocoapodsPlugin.POD_GEN_TASK_NAME}"))
if (buildScriptText.matches("pod\\(.*\\)".toRegex())) {
assertTasksExecutedByPrefix(listOf("$taskPrefix:$POD_GEN_TASK_NAME"))
assertTasksExecutedByPrefix(listOf("$taskPrefix:${KotlinCocoapodsPlugin.POD_GEN_TASK_NAME}"))
}
with(listOf(POD_SETUP_BUILD_TASK_NAME, POD_BUILD_TASK_NAME).map { "$taskPrefix:$it" }) {
with(listOf(KotlinCocoapodsPlugin.POD_SETUP_BUILD_TASK_NAME, KotlinCocoapodsPlugin.POD_BUILD_TASK_NAME).map { "$taskPrefix:$it" }) {
if (buildScriptText.matches("pod\\(.*\\)".toRegex())) {
assertTasksRegisteredByPrefix(this)
assertTasksExecutedByPrefix(this)