From 3b4336d8f15404739beda48d09e55f8edba08056 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Mon, 16 Sep 2019 21:56:16 +0200 Subject: [PATCH 1/3] making unit tests to run on the android lib --- build.gradle.kts | 3 ++- sentry-android/build.gradle.kts | 11 +++++++--- .../java/io/sentry/android/AndroidTest.kt | 22 ------------------- .../java/io/sentry/android/ApplicationStub.kt | 6 +++++ .../sentry/android/SentryInitProviderTest.kt | 21 +++++++++++++----- .../io/sentry/android/robolectric.properties | 2 ++ sentry-core/build.gradle.kts | 5 ++--- .../src/main/java/io/sentry/Sentry.java | 4 +++- 8 files changed, 39 insertions(+), 35 deletions(-) delete mode 100644 sentry-android/src/test/java/io/sentry/android/AndroidTest.kt create mode 100644 sentry-android/src/test/java/io/sentry/android/ApplicationStub.kt create mode 100644 sentry-android/src/test/resources/io/sentry/android/robolectric.properties diff --git a/build.gradle.kts b/build.gradle.kts index 85deef414..23367d2b4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,7 +18,8 @@ buildscript { google() } dependencies { - classpath("com.android.tools.build:gradle:3.1.3") + classpath("com.android.tools.build:gradle:3.4.1") + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") } } diff --git a/sentry-android/build.gradle.kts b/sentry-android/build.gradle.kts index a19be1d67..22e75eac6 100644 --- a/sentry-android/build.gradle.kts +++ b/sentry-android/build.gradle.kts @@ -1,20 +1,25 @@ plugins { id("com.android.library") + id("kotlin-android") jacoco } dependencies { - api(project(":sentry-core")) + implementation(project(":sentry-core")) testImplementation("org.robolectric:robolectric:4.3") - testImplementation(kotlin("stdlib")) + testImplementation(kotlin("stdlib-jdk8")) testImplementation("org.jetbrains.kotlin:kotlin-test-junit:1.3.50") - testImplementation("junit:junit:4.12") + testImplementation("androidx.test:core:1.2.0") + testImplementation("androidx.test:runner:1.2.0") + testImplementation("androidx.test.ext:junit:1.1.1") } android { compileSdkVersion(29) + buildToolsVersion("29.0.2") defaultConfig { minSdkVersion(14) + targetSdkVersion(29) javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true diff --git a/sentry-android/src/test/java/io/sentry/android/AndroidTest.kt b/sentry-android/src/test/java/io/sentry/android/AndroidTest.kt deleted file mode 100644 index 4b47d7132..000000000 --- a/sentry-android/src/test/java/io/sentry/android/AndroidTest.kt +++ /dev/null @@ -1,22 +0,0 @@ -package io.sentry.android - -import android.app.Application -import android.content.Context -import org.junit.runner.RunWith -import org.robolectric.RobolectricTestRunner -import org.robolectric.Config -import androidx.test.core.app.ApplicationProvider -import org.robolectric.annotation.Config - -@RunWith(RobolectricTestRunner::class) -@Config(constants = BuildConfig::class, - application = AndroidTest.ApplicationStub::class, - sdk = [21]) -abstract class AndroidTest { - - fun context(): Context { - return ApplicationProvider.getApplicationContext() - } - - internal class ApplicationStub : Application() -} diff --git a/sentry-android/src/test/java/io/sentry/android/ApplicationStub.kt b/sentry-android/src/test/java/io/sentry/android/ApplicationStub.kt new file mode 100644 index 000000000..217f75c98 --- /dev/null +++ b/sentry-android/src/test/java/io/sentry/android/ApplicationStub.kt @@ -0,0 +1,6 @@ +package io.sentry.android + +import android.app.Application + +// so far not needed +class ApplicationStub: Application() diff --git a/sentry-android/src/test/java/io/sentry/android/SentryInitProviderTest.kt b/sentry-android/src/test/java/io/sentry/android/SentryInitProviderTest.kt index 3a242f21a..8be6b2042 100644 --- a/sentry-android/src/test/java/io/sentry/android/SentryInitProviderTest.kt +++ b/sentry-android/src/test/java/io/sentry/android/SentryInitProviderTest.kt @@ -1,20 +1,31 @@ package io.sentry.android +import android.content.Context import android.content.pm.ProviderInfo +import androidx.test.core.app.ApplicationProvider +import androidx.test.ext.junit.runners.AndroidJUnit4 import io.sentry.Sentry +import org.junit.runner.RunWith +import kotlin.test.BeforeTest import kotlin.test.Test -class SentryInitProviderTest : AndroidTest() { +@RunWith(AndroidJUnit4::class) +class SentryInitProviderTest { private var sentryInitProvider: SentryInitProvider = SentryInitProvider() + private lateinit var context: Context + + @BeforeTest + fun `set up`() { + context = ApplicationProvider.getApplicationContext() + } + @Test - fun MissingApplicationIdThrows() { -// fun `missing applicationId throws`() { + fun `missing applicationId throws`() { val providerInfo = ProviderInfo() - throw RuntimeException() providerInfo.authority = "com.google.android.gms.tests.common.firebaseinitprovider" - sentryInitProvider.attachInfo(context(), providerInfo) + sentryInitProvider.attachInfo(context, providerInfo) Sentry.init { o -> o.dsn = "test" } diff --git a/sentry-android/src/test/resources/io/sentry/android/robolectric.properties b/sentry-android/src/test/resources/io/sentry/android/robolectric.properties new file mode 100644 index 000000000..275f42f39 --- /dev/null +++ b/sentry-android/src/test/resources/io/sentry/android/robolectric.properties @@ -0,0 +1,2 @@ +sdk=21 +application=io.sentry.android.ApplicationStub diff --git a/sentry-core/build.gradle.kts b/sentry-core/build.gradle.kts index 4a37ce9b5..77ef6d68d 100644 --- a/sentry-core/build.gradle.kts +++ b/sentry-core/build.gradle.kts @@ -1,12 +1,11 @@ plugins { java - kotlin("jvm") version "1.3.50" + kotlin("jvm") jacoco } dependencies { - testImplementation(kotlin("stdlib")) - testImplementation("org.jetbrains.kotlin:kotlin-stdlib:1.3.50") + testImplementation(kotlin("stdlib-jdk8")) testImplementation("org.jetbrains.kotlin:kotlin-test-junit:1.3.50") } diff --git a/sentry-core/src/main/java/io/sentry/Sentry.java b/sentry-core/src/main/java/io/sentry/Sentry.java index 4b324c360..b8bb51b7d 100644 --- a/sentry-core/src/main/java/io/sentry/Sentry.java +++ b/sentry-core/src/main/java/io/sentry/Sentry.java @@ -21,7 +21,9 @@ public static void init(OptionsConfiguration optionsConfiguration) { } static synchronized void init(SentryOptions options) { - currentClient.close(); + if (currentClient != null) { + currentClient.close(); + } currentClient = new SentryClient(options); } From 99517ebd033c633bb843f0d5596781164ef19651 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Mon, 16 Sep 2019 22:19:02 +0200 Subject: [PATCH 2/3] fix format violation --- .../src/test/java/io/sentry/android/ApplicationStub.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentry-android/src/test/java/io/sentry/android/ApplicationStub.kt b/sentry-android/src/test/java/io/sentry/android/ApplicationStub.kt index 217f75c98..6cc7b880e 100644 --- a/sentry-android/src/test/java/io/sentry/android/ApplicationStub.kt +++ b/sentry-android/src/test/java/io/sentry/android/ApplicationStub.kt @@ -3,4 +3,4 @@ package io.sentry.android import android.app.Application // so far not needed -class ApplicationStub: Application() +class ApplicationStub : Application() From f2a3cc34e09be0bf560fe8d9c9a83f0a8bbb35a2 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Mon, 16 Sep 2019 22:19:20 +0200 Subject: [PATCH 3/3] setting sentry-core as api --- sentry-android/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sentry-android/build.gradle.kts b/sentry-android/build.gradle.kts index 22e75eac6..20d1562c6 100644 --- a/sentry-android/build.gradle.kts +++ b/sentry-android/build.gradle.kts @@ -5,7 +5,7 @@ plugins { } dependencies { - implementation(project(":sentry-core")) + api(project(":sentry-core")) testImplementation("org.robolectric:robolectric:4.3") testImplementation(kotlin("stdlib-jdk8")) testImplementation("org.jetbrains.kotlin:kotlin-test-junit:1.3.50")