From 699a2c46b4e47e51a691db00203137233d61e730 Mon Sep 17 00:00:00 2001 From: Salomon BRYS Date: Sun, 7 May 2023 16:00:00 +0200 Subject: [PATCH] Support for android source-set layout version 2 (fixes #53) --- .github/workflows/release.yml | 5 ++ .github/workflows/snapshot.yml | 5 ++ .github/workflows/test.yml | 5 ++ .../kodein/mock/gradle/MocKMPGradlePlugin.kt | 5 +- .../tests-android-new/build.gradle.kts | 68 ++++++++++++++++++ .../tests-android-new/gradle.properties | 5 ++ .../tests-android-new/settings.gradle.kts | 44 ++++++++++++ .../src/androidMain/AndroidManifest.xml | 6 ++ .../res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../tests-android-old/build.gradle.kts | 4 +- .../tests-android-old/gradle.properties | 1 + 11 files changed, 145 insertions(+), 3 deletions(-) create mode 100644 tests-projects/tests-android-new/build.gradle.kts create mode 100644 tests-projects/tests-android-new/gradle.properties create mode 100644 tests-projects/tests-android-new/settings.gradle.kts create mode 100644 tests-projects/tests-android-new/src/androidMain/AndroidManifest.xml create mode 100644 tests-projects/tests-android-new/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 41acb22..bc58951 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -73,6 +73,11 @@ jobs: working-directory: tests-projects/tests-android-old run: ../../gradlew --stacktrace check shell: bash + - name: Check plugin with Android new layout (ubuntu) + if: matrix.os == 'ubuntu-latest' + working-directory: tests-projects/tests-android-new + run: ../../gradlew --stacktrace check + shell: bash - name: Upload (macos / windows) if: matrix.os != 'ubuntu-latest' run: ./gradlew --stacktrace hostOnlyPublish -Porg.kodein.sonatype.repositoryId=${{ needs.create-staging-repository.outputs.repository_id }} diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index f57d999..7357bcf 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -71,6 +71,11 @@ jobs: working-directory: tests-projects/tests-android-old run: ../../gradlew --stacktrace check shell: bash + - name: Check plugin with Android new layout (ubuntu) + if: matrix.os == 'ubuntu-latest' + working-directory: tests-projects/tests-android-new + run: ../../gradlew --stacktrace check + shell: bash - name: Upload (macos / windows) if: matrix.os != 'ubuntu-latest' run: ./gradlew --stacktrace hostOnlyPublish -PgitRef=${{ github.ref }} -Psnapshot=true diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d9b9a03..57aa63a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -57,3 +57,8 @@ jobs: working-directory: tests-projects/tests-android-old run: ../../gradlew --stacktrace check shell: bash + - name: Check plugin with Android new layout (ubuntu) + if: matrix.os == 'ubuntu-latest' + working-directory: tests-projects/tests-android-new + run: ../../gradlew --stacktrace check + shell: bash diff --git a/mockmp-gradle-plugin/src/main/kotlin/org/kodein/mock/gradle/MocKMPGradlePlugin.kt b/mockmp-gradle-plugin/src/main/kotlin/org/kodein/mock/gradle/MocKMPGradlePlugin.kt index 728ba79..ad1c8f3 100644 --- a/mockmp-gradle-plugin/src/main/kotlin/org/kodein/mock/gradle/MocKMPGradlePlugin.kt +++ b/mockmp-gradle-plugin/src/main/kotlin/org/kodein/mock/gradle/MocKMPGradlePlugin.kt @@ -84,7 +84,10 @@ class MocKMPGradlePlugin : Plugin { // Adding KSP JVM result to COMMON source set when (jvmTarget.preset!!.name) { "jvm" -> commonTest.kotlin.srcDir("${project.buildDir}/generated/ksp/${jvmTarget.name}/${jvmTarget.name}Test/kotlin") - "android" -> commonTest.kotlin.srcDir("${project.buildDir}/generated/ksp/${jvmTarget.name}/${jvmTarget.name}DebugUnitTest/kotlin") + "android" -> { + commonTest.kotlin.srcDir("${project.buildDir}/generated/ksp/${jvmTarget.name}/${jvmTarget.name}DebugUnitTest/kotlin") + commonTest.kotlin.srcDir("${project.buildDir}/generated/ksp/${jvmTarget.name}/${jvmTarget.name}UnitTestDebug/kotlin") + } } configureKsp(project, ext) diff --git a/tests-projects/tests-android-new/build.gradle.kts b/tests-projects/tests-android-new/build.gradle.kts new file mode 100644 index 0000000..d5237ff --- /dev/null +++ b/tests-projects/tests-android-new/build.gradle.kts @@ -0,0 +1,68 @@ +plugins { + alias(kodeinGlobals.plugins.android.library) + alias(kodeinGlobals.plugins.kotlin.multiplatform) + id("org.kodein.mock.mockmp") +} + +repositories { + mavenLocal() + google() + mavenCentral() +} + +android { + namespace = "org.kodein.mock.tests_android" + compileSdk = 32 + + defaultConfig { + minSdk = 21 + targetSdk = 32 + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } +} + +kotlin { + android() + ios() + + sourceSets { + val commonMain by getting { + kotlin.srcDir("$rootDir/../../tests/tests-junit4/src/commonMain/kotlin") + dependencies { + implementation(libs.datetime) + } + } + val commonTest by getting { + kotlin.srcDir("$rootDir/../../tests/tests-junit4/src/commonTest/kotlin") + dependencies { + implementation(libs.coroutines.test) + } + } + + val androidUnitTest by getting { + dependencies { + implementation(kodeinGlobals.kotlin.test.junit) + } + } + } +} + +mockmp { + usesHelper = true +} + +// Showing tests in Gradle command line +afterEvaluate { + tasks.withType { + testLogging { + events("passed", "skipped", "failed", "standard_out", "standard_error") + showExceptions = true + showStackTraces = true + } + } +} diff --git a/tests-projects/tests-android-new/gradle.properties b/tests-projects/tests-android-new/gradle.properties new file mode 100644 index 0000000..17ff0a9 --- /dev/null +++ b/tests-projects/tests-android-new/gradle.properties @@ -0,0 +1,5 @@ +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 + +android.useAndroidX=true +android.nonTransitiveRClass=true +kotlin.mpp.androidSourceSetLayoutVersion=2 diff --git a/tests-projects/tests-android-new/settings.gradle.kts b/tests-projects/tests-android-new/settings.gradle.kts new file mode 100644 index 0000000..2d5c155 --- /dev/null +++ b/tests-projects/tests-android-new/settings.gradle.kts @@ -0,0 +1,44 @@ +pluginManagement { + repositories { + mavenLocal() + gradlePluginPortal() + google() + mavenCentral() + } + + resolutionStrategy.eachPlugin { + if (target.id.id == "org.kodein.mock.mockmp") { + val rx = Regex("version = \"(.+)\"") + val match = file("$rootDir/../../build.gradle.kts").useLines { lines -> + lines.mapNotNull { rx.matchEntire(it.trim()) }.firstOrNull() + } ?: error("Could not find parent project version") + val mockmpVersion = match.groupValues[1] + + useModule("org.kodein.mock:mockmp-gradle-plugin:$mockmpVersion") + } + } +} + +@Suppress("UnstableApiUsage") +dependencyResolutionManagement { + repositories { + mavenLocal() + mavenCentral() + maven(url = "https://raw.githubusercontent.com/kosi-libs/kodein-internal-gradle-plugin/mvn-repo") + } + + versionCatalogs { + create("kodeinGlobals") { + val rx = Regex("classpath\\(\"org.kodein.internal.gradle:kodein-internal-gradle-settings:(.+)\"\\)") + val match = file("$rootDir/../../settings.gradle.kts").useLines { lines -> + lines.mapNotNull { rx.matchEntire(it.trim()) }.firstOrNull() + } ?: error("Could not find parent KIGP version") + val kigpVersion = match.groupValues[1] + + from("org.kodein.internal.gradle:kodein-internal-gradle-version-catalog:$kigpVersion") + } + create("libs") { + from(files("../../gradle/libs.versions.toml")) + } + } +} diff --git a/tests-projects/tests-android-new/src/androidMain/AndroidManifest.xml b/tests-projects/tests-android-new/src/androidMain/AndroidManifest.xml new file mode 100644 index 0000000..1f323ca --- /dev/null +++ b/tests-projects/tests-android-new/src/androidMain/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/tests-projects/tests-android-new/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp b/tests-projects/tests-android-new/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..aa7d6427e6fa1074b79ccd52ef67ac15c5637e85 GIT binary patch literal 3844 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