Local unit tests

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

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

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

@ -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)
class CaldavClientTest {
@Test
@Throws(NoSuchAlgorithmException::class, KeyManagementException::class)
fun dontCrashOnSpaceInUrl() {
val context = ApplicationProvider.getApplicationContext<Context>()
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
import androidx.test.ext.junit.runners.AndroidJUnit4
import org.junit.After
import org.junit.Assert.*
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.Freeze
import org.tasks.Freeze.Companion.freezeAt
import org.tasks.date.DateTimeUtils
import org.tasks.time.DateTime
import java.util.*
@RunWith(AndroidJUnit4::class)
class TaskTest {
@Before
fun setUp() {

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

@ -5,7 +5,6 @@
*/
package com.todoroo.astrid.repeats
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.ical.values.Frequency
import com.google.ical.values.RRule
import com.google.ical.values.Weekday
@ -15,15 +14,14 @@ import com.todoroo.astrid.data.Task
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.date.DateTimeUtils
import org.tasks.time.DateTime
import org.tasks.time.DateTimeUtils.printTimestamp
import java.text.ParseException
import java.util.*
import kotlin.math.abs
import kotlin.math.min
@RunWith(AndroidJUnit4::class)
class AdvancedRepeatTest {
private var task: Task? = null
private var nextDueDate: Long = 0
@ -239,8 +237,9 @@ class AdvancedRepeatTest {
private const val PREV = -1
private const val THIS = 1
private const val NEXT = 2
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
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.ical.values.Frequency
import com.google.ical.values.RRule
import com.google.ical.values.Weekday
@ -9,7 +8,6 @@ import com.natpryce.makeiteasy.MakeItEasy.with
import com.todoroo.astrid.data.Task
import org.junit.Assert.assertEquals
import org.junit.Test
import org.junit.runner.RunWith
import org.tasks.makers.TaskMaker.AFTER_COMPLETE
import org.tasks.makers.TaskMaker.COMPLETION_TIME
import org.tasks.makers.TaskMaker.DUE_TIME
@ -18,7 +16,6 @@ import org.tasks.makers.TaskMaker.newTask
import org.tasks.time.DateTime
import java.text.ParseException
@RunWith(AndroidJUnit4::class)
class NewRepeatTests {
@Test
@Throws(ParseException::class)

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

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

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

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

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

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

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

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

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

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

@ -11,6 +11,7 @@ buildscript {
// https://docs.fabric.io/android/changelog.html#fabric-gradle-plugin
classpath("io.fabric.tools:gradle:1.31.2")
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 okhttp = "4.6.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