Local unit tests

pull/996/head
Alex Baker 6 years ago
parent d1ad84f281
commit 6069c53a04

@ -83,7 +83,7 @@ install:
script: script:
- ./gradlew :app:lintGoogleplayRelease - ./gradlew :app:lintGoogleplayRelease
- ./gradlew -Pcoverage :app:createGoogleplayDebugAndroidTestCoverageReport - ./gradlew -Pcoverage :app:jacocoTestGoogleplayDebugUnitTestReport :app:createGoogleplayDebugAndroidTestCoverageReport
before_cache: before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock

@ -6,6 +6,7 @@ plugins {
kotlin("kapt") kotlin("kapt")
id("com.cookpad.android.plugin.license-tools") version "1.2.2" id("com.cookpad.android.plugin.license-tools") version "1.2.2"
id("com.github.ben-manes.versions") version "0.28.0" id("com.github.ben-manes.versions") version "0.28.0"
id("jacoco-android")
} }
repositories { repositories {
@ -15,6 +16,10 @@ repositories {
} }
android { android {
val commonTest = "src/commonTest/java"
sourceSets["test"].java.srcDir(commonTest)
sourceSets["androidTest"].java.srcDirs("src/androidTest/java", commonTest)
bundle { bundle {
language { language {
enableSplit = false enableSplit = false
@ -197,12 +202,17 @@ dependencies {
kaptAndroidTest("com.google.dagger:dagger-compiler:${Versions.dagger}") kaptAndroidTest("com.google.dagger:dagger-compiler:${Versions.dagger}")
kaptAndroidTest("com.jakewharton:butterknife-compiler:${Versions.butterknife}") kaptAndroidTest("com.jakewharton:butterknife-compiler:${Versions.butterknife}")
androidTestImplementation("org.mockito:mockito-android:3.3.3") androidTestImplementation("org.mockito:mockito-android:${Versions.mockito}")
androidTestImplementation("com.natpryce:make-it-easy:4.0.1") androidTestImplementation("com.natpryce:make-it-easy:${Versions.make_it_easy}")
androidTestImplementation("androidx.test:runner:1.2.0") androidTestImplementation("androidx.test:runner:${Versions.androidx_test}")
androidTestImplementation("androidx.test:rules:1.2.0") androidTestImplementation("androidx.test:rules:${Versions.androidx_test}")
androidTestImplementation("androidx.test.ext:junit:1.1.1") androidTestImplementation("androidx.test.ext:junit:1.1.1")
androidTestImplementation("androidx.annotation:annotation:1.1.0") androidTestImplementation("androidx.annotation:annotation:1.1.0")
testImplementation("junit:junit:4.13")
testImplementation("com.natpryce:make-it-easy:${Versions.make_it_easy}")
testImplementation("androidx.test:core:${Versions.androidx_test}")
testImplementation("org.mockito:mockito-core:${Versions.mockito}")
} }
apply(mapOf("plugin" to "com.google.gms.google-services")) apply(mapOf("plugin" to "com.google.gms.google-services"))

@ -1,56 +0,0 @@
package org.tasks
import android.content.Context
import androidx.test.InstrumentationRegistry
import at.bitfire.ical4android.Task.Companion.tasksFromReader
import com.todoroo.astrid.data.Task
import org.tasks.caldav.CaldavConverter
import org.tasks.preferences.Preferences
import java.io.IOException
import java.io.InputStream
import java.io.InputStreamReader
import java.io.StringReader
object TestUtilities {
fun newPreferences(context: Context?): Preferences {
return Preferences(context, "test_preferences")
}
fun vtodo(path: String): Task {
val task = Task()
CaldavConverter.apply(task, fromResource(path))
return task
}
private fun fromResource(path: String): at.bitfire.ical4android.Task {
val context = InstrumentationRegistry.getInstrumentation().context
var `is`: InputStream? = null
var reader: InputStreamReader? = null
return try {
`is` = context.assets.open(path)
reader = InputStreamReader(`is`, Charsets.UTF_8)
fromString(reader.readText())
} catch (e: IOException) {
throw IllegalArgumentException(e)
} finally {
if (reader != null) {
try {
reader.close()
} catch (ignored: IOException) {
}
}
if (`is` != null) {
try {
`is`.close()
} catch (ignored: IOException) {
}
}
}
}
private fun fromString(task: String) = try {
tasksFromReader(StringReader(task))[0]
} catch (e: Exception) {
throw IllegalArgumentException(e)
}
}

@ -12,7 +12,6 @@ import java.security.NoSuchAlgorithmException
@RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class)
class CaldavClientTest { class CaldavClientTest {
@Test @Test
@Throws(NoSuchAlgorithmException::class, KeyManagementException::class)
fun dontCrashOnSpaceInUrl() { fun dontCrashOnSpaceInUrl() {
val context = ApplicationProvider.getApplicationContext<Context>() val context = ApplicationProvider.getApplicationContext<Context>()
CaldavClient(context, null, newPreferences(context), null) CaldavClient(context, null, newPreferences(context), null)

@ -0,0 +1,30 @@
package org.tasks
import android.content.Context
import at.bitfire.ical4android.Task.Companion.tasksFromReader
import com.todoroo.astrid.data.Task
import org.tasks.caldav.CaldavConverter
import org.tasks.preferences.Preferences
import java.io.StringReader
import java.nio.file.Files
import java.nio.file.Paths
object TestUtilities {
fun newPreferences(context: Context?): Preferences {
return Preferences(context, "test_preferences")
}
fun vtodo(path: String): Task {
val task = Task()
CaldavConverter.apply(task, fromResource(path))
return task
}
private fun fromResource(path: String): at.bitfire.ical4android.Task {
val url = javaClass.classLoader!!.getResource(path)
val paths = Paths.get(url!!.toURI())
return fromString(String(Files.readAllBytes(paths), Charsets.UTF_8))
}
private fun fromString(task: String) = tasksFromReader(StringReader(task))[0]
}

@ -1,18 +1,15 @@
package com.todoroo.astrid.data package com.todoroo.astrid.data
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.After import org.junit.After
import org.junit.Assert.* import org.junit.Assert.*
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.Freeze import org.tasks.Freeze
import org.tasks.Freeze.Companion.freezeAt import org.tasks.Freeze.Companion.freezeAt
import org.tasks.date.DateTimeUtils import org.tasks.date.DateTimeUtils
import org.tasks.time.DateTime import org.tasks.time.DateTime
import java.util.* import java.util.*
@RunWith(AndroidJUnit4::class)
class TaskTest { class TaskTest {
@Before @Before
fun setUp() { fun setUp() {

@ -1,16 +1,13 @@
package com.todoroo.astrid.gtasks.api package com.todoroo.astrid.gtasks.api
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.api.client.util.DateTime import com.google.api.client.util.DateTime
import org.junit.After import org.junit.After
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull import org.junit.Assert.assertNull
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import java.util.* import java.util.*
@RunWith(AndroidJUnit4::class)
class GtasksApiUtilitiesTest { class GtasksApiUtilitiesTest {
@Before @Before
fun setUp() { fun setUp() {

@ -5,7 +5,6 @@
*/ */
package com.todoroo.astrid.repeats package com.todoroo.astrid.repeats
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.ical.values.Frequency import com.google.ical.values.Frequency
import com.google.ical.values.RRule import com.google.ical.values.RRule
import com.google.ical.values.Weekday import com.google.ical.values.Weekday
@ -15,15 +14,14 @@ import com.todoroo.astrid.data.Task
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.date.DateTimeUtils import org.tasks.date.DateTimeUtils
import org.tasks.time.DateTime import org.tasks.time.DateTime
import org.tasks.time.DateTimeUtils.printTimestamp
import java.text.ParseException import java.text.ParseException
import java.util.* import java.util.*
import kotlin.math.abs import kotlin.math.abs
import kotlin.math.min import kotlin.math.min
@RunWith(AndroidJUnit4::class)
class AdvancedRepeatTest { class AdvancedRepeatTest {
private var task: Task? = null private var task: Task? = null
private var nextDueDate: Long = 0 private var nextDueDate: Long = 0
@ -239,8 +237,9 @@ class AdvancedRepeatTest {
private const val PREV = -1 private const val PREV = -1
private const val THIS = 1 private const val THIS = 1
private const val NEXT = 2 private const val NEXT = 2
fun assertDateTimeEquals(date: Long, other: Long) { fun assertDateTimeEquals(date: Long, other: Long) {
assertEquals("Expected: " + DateTimeUtils.newDateTime(date) + ", Actual: " + DateTimeUtils.newDateTime(other), date, other) assertEquals("Expected: ${printTimestamp(date)}, Actual: ${printTimestamp(other)}", date, other)
} }
} }
} }

@ -1,6 +1,5 @@
package com.todoroo.astrid.repeats package com.todoroo.astrid.repeats
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.ical.values.Frequency import com.google.ical.values.Frequency
import com.google.ical.values.RRule import com.google.ical.values.RRule
import com.google.ical.values.Weekday import com.google.ical.values.Weekday
@ -9,7 +8,6 @@ import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.makers.TaskMaker.AFTER_COMPLETE import org.tasks.makers.TaskMaker.AFTER_COMPLETE
import org.tasks.makers.TaskMaker.COMPLETION_TIME import org.tasks.makers.TaskMaker.COMPLETION_TIME
import org.tasks.makers.TaskMaker.DUE_TIME import org.tasks.makers.TaskMaker.DUE_TIME
@ -18,7 +16,6 @@ import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTime import org.tasks.time.DateTime
import java.text.ParseException import java.text.ParseException
@RunWith(AndroidJUnit4::class)
class NewRepeatTests { class NewRepeatTests {
@Test @Test
@Throws(ParseException::class) @Throws(ParseException::class)

@ -1,17 +1,14 @@
package org.tasks.caldav package org.tasks.caldav
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import org.junit.After import org.junit.After
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.TestUtilities.vtodo import org.tasks.TestUtilities.vtodo
import org.tasks.time.DateTime import org.tasks.time.DateTime
import java.util.* import java.util.*
@RunWith(AndroidJUnit4::class)
class AppleRemindersTests { class AppleRemindersTests {
private val defaultTimeZone = TimeZone.getDefault() private val defaultTimeZone = TimeZone.getDefault()

@ -1,15 +1,12 @@
package org.tasks.caldav package org.tasks.caldav
import androidx.test.ext.junit.runners.AndroidJUnit4
import net.fortuna.ical4j.model.property.Geo import net.fortuna.ical4j.model.property.Geo
import org.junit.Assert.* import org.junit.Assert.*
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.caldav.GeoUtils.equalish import org.tasks.caldav.GeoUtils.equalish
import org.tasks.caldav.GeoUtils.latitudeLike import org.tasks.caldav.GeoUtils.latitudeLike
import org.tasks.caldav.GeoUtils.longitudeLike import org.tasks.caldav.GeoUtils.longitudeLike
@RunWith(AndroidJUnit4::class)
class GeoUtilsTest { class GeoUtilsTest {
@Test @Test
fun getLatitudeLike() = fun getLatitudeLike() =

@ -1,17 +1,14 @@
package org.tasks.caldav package org.tasks.caldav
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import org.junit.After import org.junit.After
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.TestUtilities.vtodo import org.tasks.TestUtilities.vtodo
import org.tasks.time.DateTime import org.tasks.time.DateTime
import java.util.* import java.util.*
@RunWith(AndroidJUnit4::class)
class NextCloudTests { class NextCloudTests {
private val defaultTimeZone = TimeZone.getDefault() private val defaultTimeZone = TimeZone.getDefault()

@ -1,15 +1,12 @@
package org.tasks.caldav package org.tasks.caldav
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.After import org.junit.After
import org.junit.Assert.assertTrue import org.junit.Assert.assertTrue
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.TestUtilities.vtodo import org.tasks.TestUtilities.vtodo
import java.util.* import java.util.*
@RunWith(AndroidJUnit4::class)
class SynologyTests { class SynologyTests {
private val defaultTimeZone = TimeZone.getDefault() private val defaultTimeZone = TimeZone.getDefault()

@ -1,17 +1,14 @@
package org.tasks.caldav package org.tasks.caldav
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import org.junit.After import org.junit.After
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.TestUtilities.vtodo import org.tasks.TestUtilities.vtodo
import org.tasks.time.DateTime import org.tasks.time.DateTime
import java.util.* import java.util.*
@RunWith(AndroidJUnit4::class)
class ThunderbirdTests { class ThunderbirdTests {
private val defaultTimeZone = TimeZone.getDefault() private val defaultTimeZone = TimeZone.getDefault()

@ -1,14 +1,11 @@
package org.tasks.date package org.tasks.date
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.Freeze.Companion.freezeAt import org.tasks.Freeze.Companion.freezeAt
import org.tasks.time.DateTime import org.tasks.time.DateTime
import java.util.* import java.util.*
@RunWith(AndroidJUnit4::class)
class DateTimeUtilsTest { class DateTimeUtilsTest {
private val now = DateTime(2014, 1, 1, 15, 17, 53, 0) private val now = DateTime(2014, 1, 1, 15, 17, 53, 0)

@ -1,13 +1,10 @@
package org.tasks.db package org.tasks.db
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.andlib.sql.Functions import com.todoroo.andlib.sql.Functions
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
class QueryUtilsTest { class QueryUtilsTest {
@Test @Test
fun replaceHiddenLT() { fun replaceHiddenLT() {

@ -1,15 +1,12 @@
package org.tasks.jobs package org.tasks.jobs
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Assert.* import org.junit.Assert.*
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mockito import org.mockito.Mockito
import org.tasks.date.DateTimeUtils import org.tasks.date.DateTimeUtils
import org.tasks.time.DateTime import org.tasks.time.DateTime
import java.io.File import java.io.File
@RunWith(AndroidJUnit4::class)
class BackupWorkTest { class BackupWorkTest {
@Test @Test
fun filterExcludesXmlFiles() { fun filterExcludesXmlFiles() {

@ -1,12 +1,10 @@
package org.tasks.jobs package org.tasks.jobs
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.todoroo.astrid.reminders.ReminderService import com.todoroo.astrid.reminders.ReminderService
import org.junit.After import org.junit.After
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.AdditionalAnswers import org.mockito.AdditionalAnswers
import org.mockito.Matchers import org.mockito.Matchers
import org.mockito.Mockito import org.mockito.Mockito
@ -16,7 +14,6 @@ import org.tasks.time.DateTime
import org.tasks.time.DateTimeUtils import org.tasks.time.DateTimeUtils
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
@RunWith(AndroidJUnit4::class)
class NotificationQueueTest { class NotificationQueueTest {
private lateinit var queue: NotificationQueue private lateinit var queue: NotificationQueue
private lateinit var workManager: WorkManager private lateinit var workManager: WorkManager

@ -1,14 +1,11 @@
package org.tasks.time package org.tasks.time
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.Assert.* import org.junit.Assert.*
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.Freeze import org.tasks.Freeze
import java.util.* import java.util.*
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
@RunWith(AndroidJUnit4::class)
class DateTimeTest { class DateTimeTest {
@Test @Test
fun testGetMillisOfDay() { fun testGetMillisOfDay() {

@ -11,6 +11,7 @@ buildscript {
// https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin // https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin
classpath("io.fabric.tools:gradle:1.31.2") classpath("io.fabric.tools:gradle:1.31.2")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}")
classpath("com.dicedmelon.gradle:jacoco-android:0.1.4")
} }
} }

@ -12,4 +12,7 @@ object Versions {
const val remote_config = "19.1.4" const val remote_config = "19.1.4"
const val okhttp = "4.6.0" const val okhttp = "4.6.0"
const val flipper = "0.41.0" const val flipper = "0.41.0"
const val mockito = "3.3.3"
const val androidx_test = "1.2.0"
const val make_it_easy = "4.0.1"
} }
Loading…
Cancel
Save