Skip to content

Commit

Permalink
Tests are compiling and all test dependencies are included for test s…
Browse files Browse the repository at this point in the history
…ource sets
  • Loading branch information
philipplackner committed Jul 19, 2023
1 parent 574218c commit fdd1b84
Show file tree
Hide file tree
Showing 98 changed files with 276 additions and 110 deletions.
2 changes: 1 addition & 1 deletion .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion android/billing/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,7 @@ dependencies {
implementation(project(":core:ui"))

Billing(api = true)
}
}
android {
namespace = "com.ivy.billing"
}
2 changes: 1 addition & 1 deletion android/billing/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.ivy.billing" />
<manifest />
5 changes: 4 additions & 1 deletion android/common/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,7 @@ dependencies {
Hilt()
AppCompat(api = true)
Testing()
}
}
android {
namespace = "com.ivy.android.common"
}
2 changes: 1 addition & 1 deletion android/common/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.ivy.android.common" />
<manifest />
5 changes: 4 additions & 1 deletion android/file-system/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,7 @@ dependencies {
implementation(project(":common:main"))
implementation(project(":android:common"))
Testing()
}
}
android {
namespace = "com.ivy.file"
}
2 changes: 1 addition & 1 deletion android/file-system/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.ivy.file" />
<manifest />
5 changes: 4 additions & 1 deletion android/notifications/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,7 @@ dependencies {
implementation(project(":common:main"))
implementation(project(":core:ui"))
AndroidX(api = false)
}
}
android {
namespace = "com.ivy.notifications"
}
2 changes: 1 addition & 1 deletion android/notifications/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.ivy.notifications" />
<manifest />
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import android.os.Build
import androidx.core.app.NotificationCompat
import androidx.core.content.ContextCompat
import com.ivy.resources.R
import java.time.LocalDateTime

class NotificationService(
private val context: Context
Expand Down
5 changes: 4 additions & 1 deletion app-locked/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,7 @@ dependencies {
implementation(project(":design-system"))
implementation(project(":core:ui"))
implementation(project(":core:data-model"))
}
}
android {
namespace = "com.ivy.locked"
}
2 changes: 1 addition & 1 deletion app-locked/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.ivy.locked"/>
<manifest />
3 changes: 2 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ android {
versionCode = com.ivy.buildsrc.Project.versionCode
versionName = com.ivy.buildsrc.Project.versionName

testInstrumentationRunner = "com.ivy.wallet.IvyAppTestRunner"
testInstrumentationRunner = "com.ivy.common.androidtest.HiltTestRunner"

kapt {
arguments {
Expand Down Expand Up @@ -138,6 +138,7 @@ android {
it.useJUnitPlatform()
}
}
namespace = "com.ivy.wallet"
}

dependencies {
Expand Down
3 changes: 1 addition & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.ivy.wallet">
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Expand Down
5 changes: 4 additions & 1 deletion backup/api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,7 @@ dependencies {
implementation(project(":backup:old"))
implementation(project(":backup:impl"))
Testing()
}
}
android {
namespace = "com.ivy.backup.api"
}
2 changes: 1 addition & 1 deletion backup/api/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.ivy.backup.api" />
<manifest />
5 changes: 4 additions & 1 deletion backup/base/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,7 @@ dependencies {
implementation(project(":core:domain"))
implementation(project(":android:file-system"))
Testing()
}
}
android {
namespace = "com.ivy.backup.base"
}
2 changes: 1 addition & 1 deletion backup/base/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.ivy.backup.base" />
<manifest />
5 changes: 4 additions & 1 deletion backup/impl/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,7 @@ dependencies {
implementation(project(":android:file-system"))
implementation(project(":drive:google-drive"))
Testing()
}
}
android {
namespace = "com.ivy.backup.impl"
}
2 changes: 1 addition & 1 deletion backup/impl/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.ivy.backup.impl" />
<manifest />
5 changes: 4 additions & 1 deletion backup/old/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,7 @@ dependencies {
api(project(":backup:base"))
implementation(project(":android:file-system"))
Testing()
}
}
android {
namespace = "com.ivy.backup.old"
}
3 changes: 1 addition & 2 deletions backup/old/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ivy.backup.old">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
Expand Down
9 changes: 0 additions & 9 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,3 @@ fun isNonStable(version: String): Boolean {
val isStable = stableKeyword || regex.matches(version)
return isStable.not()
}

tasks.register("printPlugins") {
doLast {
println("Plugins applied in project '${project.name}':")
project.plugins.forEach {
println(it::class.java.name)
}
}
}
2 changes: 1 addition & 1 deletion buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ repositories {

dependencies {
//https://mvnrepository.com/artifact/com.android.tools.build/gradle?repo=google
implementation("com.android.tools.build:gradle:7.4.0-rc01")
implementation("com.android.tools.build:gradle:8.0.2")

//https://kotlinlang.org/docs/releases.html#release-details
// Must match kotlinVersion from dependencies.kt
Expand Down
18 changes: 15 additions & 3 deletions buildSrc/src/main/java/com/ivy/buildsrc/IvyPlugin.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.ivy.buildsrc
import com.android.build.api.dsl.LibraryExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

Expand All @@ -13,8 +14,7 @@ abstract class IvyPlugin : Plugin<Project> {
addKotlinCompilerArgs(project)
setProjectSdkVersions(project)

// Robolectric doesn't integrate well with JUnit5 and Kotest
// robolectric(project)
test(project)
androidTest(project)
lint(project)
kspSourceSets(project)
Expand All @@ -26,9 +26,21 @@ abstract class IvyPlugin : Plugin<Project> {
// }
// }

private fun test(project: Project) {
project.dependencies {
"testRuntimeOnly"("org.junit.jupiter:junit-jupiter-engine:${Versions.junitJupiter}")
testImplementation("org.junit.jupiter:junit-jupiter-api:${Versions.junitJupiter}")
testImplementation("org.junit.jupiter:junit-jupiter-params:${Versions.junitJupiter}")
testImplementation("com.willowtreeapps.assertk:assertk:${Versions.assertK}")
androidTestImplementation("com.willowtreeapps.assertk:assertk:${Versions.assertK}")
testImplementation("io.mockk:mockk:${Versions.mockk}")
androidTestImplementation("io.mockk:mockk-android:${Versions.mockk}")
}
}

private fun androidTest(project: Project) {
project.androidLibrary().defaultConfig {
testInstrumentationRunner = "com.ivy.common.androidtest.IvyTestRunner"
testInstrumentationRunner = "com.ivy.common.androidtest.HiltTestRunner"
}
}

Expand Down
34 changes: 34 additions & 0 deletions buildSrc/src/main/java/com/ivy/buildsrc/dependencies.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@

package com.ivy.buildsrc

import org.gradle.api.Project
import org.gradle.api.artifacts.dsl.DependencyHandler
import org.gradle.kotlin.dsl.DependencyHandlerScope
import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.project


Expand Down Expand Up @@ -78,6 +81,8 @@ object Versions {
const val junitJupiter: String = "5.9.3"
const val junit5GradlePlugin = "1.9.3.0"

const val arrow = "1.0.1"

//https://developer.android.com/training/dependency-injection/hilt-android
//WARNING: Update hilt gradle plugin from buildSrc
const val hilt = "2.44"
Expand Down Expand Up @@ -160,6 +165,13 @@ object Versions {
// AssertK
const val assertK = "0.26.1"

// MockK
const val mockk = "1.12.5"
const val mockWebServer = "4.11.0"

// Turbine
const val turbine = "0.7.0"

// endregion
}

Expand Down Expand Up @@ -236,6 +248,20 @@ fun DependencyHandler.Accompanist(api: Boolean) {
)
}

fun DependencyHandler.FunctionalProgramming(api: Boolean) {
Arrow(api)
}

fun DependencyHandler.Arrow(
api: Boolean
) {
dependency(platform("io.arrow-kt:arrow-stack:${Versions.arrow}"), api = api)
dependency("io.arrow-kt:arrow-core", api = api)
dependency("io.arrow-kt:arrow-fx-coroutines", api = api)
dependency("io.arrow-kt:arrow-fx-stm", api = api)
// dependency("io.arrow-kt:arrow-optics")
}

fun DependencyHandler.Coil(api: Boolean) {
dependency("io.coil-kt:coil-compose:${Versions.composeCoil}", api = api)
}
Expand Down Expand Up @@ -420,6 +446,8 @@ fun DependencyHandler.Coroutines(
testDependency(
"org.jetbrains.kotlinx:kotlinx-coroutines-test:$version", api = api
)
testDependency("app.cash.turbine:turbine:${Versions.turbine}", api = api)
androidTestDependency("app.cash.turbine:turbine:${Versions.turbine}", api = api)
}

fun DependencyHandler.ThirdParty() {
Expand Down Expand Up @@ -460,6 +488,7 @@ fun DependencyHandler.RealmDb() {
implementation("io.realm.kotlin:library-base:${Versions.realm}")
}


fun DependencyHandler.JUnit5() {
testImplementation("org.junit.jupiter:junit-jupiter-api:${Versions.junitJupiter}")
testImplementation("org.junit.jupiter:junit-jupiter-params:${Versions.junitJupiter}")
Expand All @@ -469,6 +498,11 @@ fun DependencyHandler.AssertK() {
testImplementation("com.willowtreeapps.assertk:assertk:${Versions.assertK}")
}

fun DependencyHandler.MockK() {
testImplementation("io.mockk:mockk:${Versions.mockk}")
androidTestImplementation("io.mockk:mockk-android:${Versions.mockk}")
}

fun DependencyHandler.Testing(
commonTest: Boolean = true,
commonAndroidTest: Boolean = true
Expand Down
5 changes: 4 additions & 1 deletion categories/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,7 @@ dependencies {
implementation(project(":core:data-model"))
implementation(project(":navigation"))
Testing()
}
}
android {
namespace = "com.ivy.categories"
}
2 changes: 1 addition & 1 deletion categories/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.ivy.categories" />
<manifest />
5 changes: 4 additions & 1 deletion common/android-test/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,7 @@ dependencies {
commonAndroidTest = false
)
api(project(":common:test")) // expose :common:test classes to all androidTest
}
}
android {
namespace = "com.ivy.common.androidtest"
}
2 changes: 1 addition & 1 deletion common/android-test/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="com.ivy.common.androidtest" />
<manifest />
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,16 @@ package com.ivy.common.androidtest
import android.app.Application
import android.content.Context
import androidx.test.runner.AndroidJUnitRunner
import dagger.hilt.android.testing.HiltAndroidTest
import dagger.hilt.android.testing.HiltTestApplication

@Suppress("UNUSED")
class IvyTestRunner : AndroidJUnitRunner() {
override fun newApplication(cl: ClassLoader?, name: String?, context: Context?): Application {
class HiltTestRunner: AndroidJUnitRunner() {

override fun newApplication(
cl: ClassLoader?,
className: String?,
context: Context?
): Application {
return super.newApplication(cl, HiltTestApplication::class.java.name, context)
}
}
Loading

0 comments on commit fdd1b84

Please sign in to comment.