From 17dd83e476d9b7d045e6f688ca36b0d17857a3cf Mon Sep 17 00:00:00 2001 From: Salomon BRYS Date: Thu, 2 Jul 2020 12:19:29 +0200 Subject: [PATCH] Tests in their own module so that they can run on Android with the connectedCheck task --- build.gradle.kts | 53 ++++++-------- settings.gradle.kts | 4 +- tests/build.gradle.kts | 73 +++++++++++++++++++ tests/src/androidMain/AndroidManifest.xml | 3 + .../kotlin}/fr/acinq/secp256k1/Placeholder.kt | 2 +- .../java/fr/acinq/secp256k1/AndroidTest.kt | 7 ++ .../fr/acinq/secp256k1/Secp256k1Test.kt | 0 7 files changed, 109 insertions(+), 33 deletions(-) create mode 100644 tests/build.gradle.kts create mode 100644 tests/src/androidMain/AndroidManifest.xml rename {src/androidTest/java => tests/src/androidMain/kotlin}/fr/acinq/secp256k1/Placeholder.kt (58%) create mode 100644 tests/src/androidTest/java/fr/acinq/secp256k1/AndroidTest.kt rename {src => tests/src}/commonTest/kotlin/fr/acinq/secp256k1/Secp256k1Test.kt (100%) diff --git a/build.gradle.kts b/build.gradle.kts index 4804a37..8844b7b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -36,12 +36,6 @@ kotlin { implementation(kotlin("stdlib-common")) } } - val commonTest by sourceSets.getting { - dependencies { - implementation(kotlin("test-common")) - implementation(kotlin("test-annotations-common")) - } - } jvm { compilations.all { @@ -50,11 +44,6 @@ kotlin { compilations["main"].dependencies { implementation(kotlin("stdlib-jdk8")) } - compilations["test"].dependencies { - implementation(project(":jni:jvm")) - implementation(kotlin("stdlib-jdk8")) - implementation(kotlin("test-junit")) - } } fun org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget.secp256k1CInterop(target: String) { @@ -89,27 +78,31 @@ kotlin { } // Disable cross compilation -afterEvaluate { - val currentOs = org.gradle.internal.os.OperatingSystem.current() - val targets = when { - currentOs.isLinux -> listOf() - currentOs.isMacOsX -> listOf("linux") - currentOs.isWindows -> listOf("linux") - else -> listOf("linux") - }.mapNotNull { kotlin.targets.findByName(it) as? org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget } +allprojects { + plugins.withId("org.jetbrains.kotlin.multiplatform") { + afterEvaluate { + val currentOs = org.gradle.internal.os.OperatingSystem.current() + val targets = when { + currentOs.isLinux -> listOf() + currentOs.isMacOsX -> listOf("linux") + currentOs.isWindows -> listOf("linux") + else -> listOf("linux") + }.mapNotNull { kotlin.targets.findByName(it) as? org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget } - configure(targets) { - compilations.all { - cinterops.all { tasks[interopProcessingTaskName].enabled = false } - compileKotlinTask.enabled = false - tasks[processResourcesTaskName].enabled = false - } - binaries.all { linkTask.enabled = false } + configure(targets) { + compilations.all { + cinterops.all { tasks[interopProcessingTaskName].enabled = false } + compileKotlinTask.enabled = false + tasks[processResourcesTaskName].enabled = false + } + binaries.all { linkTask.enabled = false } - mavenPublication { - val publicationToDisable = this - tasks.withType().all { onlyIf { publication != publicationToDisable } } - tasks.withType().all { onlyIf { publication.get() != publicationToDisable } } + mavenPublication { + val publicationToDisable = this + tasks.withType().all { onlyIf { publication != publicationToDisable } } + tasks.withType().all { onlyIf { publication.get() != publicationToDisable } } + } + } } } } diff --git a/settings.gradle.kts b/settings.gradle.kts index b48c3ed..3175a7e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -12,6 +12,6 @@ include( ":native", ":jni", ":jni:android", - ":jni:jvm" -// ":jni" + ":jni:jvm", + ":tests" ) \ No newline at end of file diff --git a/tests/build.gradle.kts b/tests/build.gradle.kts new file mode 100644 index 0000000..82225a6 --- /dev/null +++ b/tests/build.gradle.kts @@ -0,0 +1,73 @@ +plugins { + kotlin("multiplatform") + id("com.android.library") +} + +kotlin { + explicitApi() + + val commonMain by sourceSets.getting { + dependencies { + implementation(kotlin("stdlib-common")) + implementation(rootProject) + } + } + val commonTest by sourceSets.getting { + dependencies { + implementation(kotlin("test-annotations-common")) + } + } + + jvm { + compilations.all { + kotlinOptions.jvmTarget = "1.8" + } + compilations["main"].dependencies { + implementation(kotlin("stdlib-jdk8")) + implementation(project(":jni:jvm")) + } + compilations["test"].dependencies { + implementation(kotlin("test-junit")) + } + } + + android { + compilations.all { + kotlinOptions.jvmTarget = "1.8" + } + sourceSets["androidMain"].dependencies { + implementation(kotlin("stdlib-jdk8")) + implementation(project(":jni:android")) + } + sourceSets["androidTest"].dependencies { + implementation(kotlin("test-junit")) + implementation("androidx.test.ext:junit:1.1.1") + implementation("androidx.test.espresso:espresso-core:3.2.0") + } + } + + linuxX64("linux") + + ios() +} + +android { + defaultConfig { + compileSdkVersion(30) + minSdkVersion(21) + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } + + sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") + + afterEvaluate { + tasks.withType().all { + enabled = false + } + } +} diff --git a/tests/src/androidMain/AndroidManifest.xml b/tests/src/androidMain/AndroidManifest.xml new file mode 100644 index 0000000..40e03fe --- /dev/null +++ b/tests/src/androidMain/AndroidManifest.xml @@ -0,0 +1,3 @@ + + + diff --git a/src/androidTest/java/fr/acinq/secp256k1/Placeholder.kt b/tests/src/androidMain/kotlin/fr/acinq/secp256k1/Placeholder.kt similarity index 58% rename from src/androidTest/java/fr/acinq/secp256k1/Placeholder.kt rename to tests/src/androidMain/kotlin/fr/acinq/secp256k1/Placeholder.kt index ca388d2..f54be9e 100644 --- a/src/androidTest/java/fr/acinq/secp256k1/Placeholder.kt +++ b/tests/src/androidMain/kotlin/fr/acinq/secp256k1/Placeholder.kt @@ -1,4 +1,4 @@ package fr.acinq.secp256k1 -class Placeholder {} +class Placeholder diff --git a/tests/src/androidTest/java/fr/acinq/secp256k1/AndroidTest.kt b/tests/src/androidTest/java/fr/acinq/secp256k1/AndroidTest.kt new file mode 100644 index 0000000..bc59f6d --- /dev/null +++ b/tests/src/androidTest/java/fr/acinq/secp256k1/AndroidTest.kt @@ -0,0 +1,7 @@ +package fr.acinq.secp256k1 + +import org.junit.Test +import kotlin.test.assertEquals + + +class AndroidTest {} diff --git a/src/commonTest/kotlin/fr/acinq/secp256k1/Secp256k1Test.kt b/tests/src/commonTest/kotlin/fr/acinq/secp256k1/Secp256k1Test.kt similarity index 100% rename from src/commonTest/kotlin/fr/acinq/secp256k1/Secp256k1Test.kt rename to tests/src/commonTest/kotlin/fr/acinq/secp256k1/Secp256k1Test.kt