Skip to content

Commit

Permalink
build: setup test fake module
Browse files Browse the repository at this point in the history
  • Loading branch information
fractalwrench committed Jul 30, 2024
1 parent 0883867 commit 012a701
Show file tree
Hide file tree
Showing 18 changed files with 118 additions and 90 deletions.
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
import io.embrace.gradle.Versions
import io.gitlab.arturbosch.detekt.Detekt
import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
import java.net.URI

plugins {
id("com.android.library") apply false
id("kotlin-android") apply false
id("io.gitlab.arturbosch.detekt") apply false
id("embrace-test-defaults")
id("checkstyle") apply false
id("binary-compatibility-validator") apply false
id("org.jetbrains.kotlinx.kover") apply false
Expand All @@ -20,31 +15,15 @@ android {
useLibrary("android.test.runner")
useLibrary("android.test.base")
useLibrary("android.test.mock")
compileSdk = Versions.COMPILE_SDK

defaultConfig {
minSdk = Versions.MIN_SDK
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

aarMetadata {
minCompileSdk = Versions.MIN_COMPILE_SDK
}
}

compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

lint {
abortOnError = true
warningsAsErrors = true
checkAllWarnings = true
checkReleaseBuilds = false // run on CI instead, speeds up release builds
baseline = project.file("lint-baseline.xml")
disable.addAll(mutableSetOf("GradleDependency", "NewerVersionAvailable"))
}

testOptions {
// Calling Android logging methods will throw exceptions if this is false
// see: http://tools.android.com/tech-docs/unit-testing-support#TOC-Method-...-not-mocked.-
Expand Down Expand Up @@ -87,7 +66,6 @@ android {
dependencies {
implementation("androidx.startup:startup-runtime:1.1.1")
implementation("org.jetbrains.kotlin:kotlin-stdlib:${Versions.KOTLIN_EXPOSED}")
add("detektPlugins", "io.gitlab.arturbosch.detekt:detekt-formatting:${Versions.DETEKT}")
add("lintChecks", project.project(":embrace-lint"))

testImplementation("junit:junit:${Versions.JUNIT}")
Expand Down Expand Up @@ -116,42 +94,6 @@ project.tasks.register("checkstyle", Checkstyle::class.java).configure {
maxWarnings = 0
}

detekt {
buildUponDefaultConfig = true
autoCorrect = true
config.from(project.files("${project.rootDir}/config/detekt/detekt.yml")) // overwrite default behaviour here
baseline =
project.file("${project.projectDir}/config/detekt/baseline.xml") // suppress pre-existing issues
}

project.tasks.withType(Detekt::class.java).configureEach {
jvmTarget = "1.8"
reports {
html.required.set(true)
xml.required.set(false)
txt.required.set(true)
sarif.required.set(false)
md.required.set(false)
}
}

project.tasks.withType(DetektCreateBaselineTask::class.java).configureEach {
jvmTarget = "1.8"
}

project.tasks.withType(JavaCompile::class.java).configureEach {
options.compilerArgs.addAll(listOf("-Xlint:unchecked", "-Xlint:deprecation"))
}

project.tasks.withType(KotlinCompile::class.java).configureEach {
kotlinOptions {
apiVersion = "1.8"
languageVersion = "1.8"
jvmTarget = JavaVersion.VERSION_1_8.toString()
freeCompilerArgs = freeCompilerArgs + "-Xexplicit-api=strict"
}
}

// https://developer.android.com/studio/publish-library/upload-library
publishing {
publications {
Expand Down
72 changes: 72 additions & 0 deletions buildSrc/src/main/kotlin/embrace-test-defaults.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
import io.embrace.gradle.Versions
import io.gitlab.arturbosch.detekt.Detekt
import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
id("com.android.library") apply false
id("kotlin-android") apply false
id("io.gitlab.arturbosch.detekt") apply false
}

android {
compileSdk = Versions.COMPILE_SDK

defaultConfig {
minSdk = Versions.MIN_SDK
}

compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

lint {
abortOnError = true
warningsAsErrors = true
checkAllWarnings = true
checkReleaseBuilds = false // run on CI instead, speeds up release builds
baseline = project.file("lint-baseline.xml")
disable.addAll(mutableSetOf("GradleDependency", "NewerVersionAvailable"))
}
}

dependencies {
add("detektPlugins", "io.gitlab.arturbosch.detekt:detekt-formatting:${Versions.DETEKT}")
}

detekt {
buildUponDefaultConfig = true
autoCorrect = true
config.from(project.files("${project.rootDir}/config/detekt/detekt.yml")) // overwrite default behaviour here
baseline =
project.file("${project.projectDir}/config/detekt/baseline.xml") // suppress pre-existing issues
}

project.tasks.withType(Detekt::class.java).configureEach {
jvmTarget = "1.8"
reports {
html.required.set(true)
xml.required.set(false)
txt.required.set(true)
sarif.required.set(false)
md.required.set(false)
}
}

project.tasks.withType(DetektCreateBaselineTask::class.java).configureEach {
jvmTarget = "1.8"
}

project.tasks.withType(JavaCompile::class.java).configureEach {
options.compilerArgs.addAll(listOf("-Xlint:unchecked", "-Xlint:deprecation"))
}

project.tasks.withType(KotlinCompile::class.java).configureEach {
kotlinOptions {
apiVersion = "1.8"
languageVersion = "1.8"
jvmTarget = JavaVersion.VERSION_1_8.toString()
freeCompilerArgs = freeCompilerArgs + "-Xexplicit-api=strict"
}
}
2 changes: 1 addition & 1 deletion embrace-android-api/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id("embrace-defaults")
id("embrace-prod-defaults")
}

description = "Embrace Android SDK: API"
Expand Down
2 changes: 1 addition & 1 deletion embrace-android-compose/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id("embrace-defaults")
id("embrace-prod-defaults")
}

description = "Embrace Android SDK: Jetpack Compose"
Expand Down
2 changes: 1 addition & 1 deletion embrace-android-core/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id("embrace-defaults")
id("embrace-prod-defaults")
}

description = "Embrace Android SDK: Core"
Expand Down
2 changes: 1 addition & 1 deletion embrace-android-fcm/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id("embrace-defaults")
id("embrace-prod-defaults")
}

description = "Embrace Android SDK: Firebase Cloud Messaging"
Expand Down
2 changes: 1 addition & 1 deletion embrace-android-features/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id("embrace-defaults")
id("embrace-prod-defaults")
}

description = "Embrace Android SDK: Features"
Expand Down
2 changes: 1 addition & 1 deletion embrace-android-okhttp3/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id("embrace-defaults")
id("embrace-prod-defaults")
}

description = "Embrace Android SDK: OkHttp3"
Expand Down
2 changes: 1 addition & 1 deletion embrace-android-payload/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id("embrace-defaults")
id("embrace-prod-defaults")
id("com.google.devtools.ksp")
}

Expand Down
3 changes: 2 additions & 1 deletion embrace-android-sdk/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import io.embrace.gradle.Versions

plugins {
id("embrace-defaults")
id("embrace-prod-defaults")
id("com.google.devtools.ksp")
}

Expand Down Expand Up @@ -86,6 +86,7 @@ dependencies {
// Please, don"t update it until we update compileSdk.
implementation(libs.profileinstaller)

testImplementation(project(":embrace-test-fakes"))
testImplementation(libs.protobuf.java)
testImplementation(libs.protobuf.java.util)
testImplementation(libs.kotlin.reflect)
Expand Down
16 changes: 3 additions & 13 deletions embrace-test-common/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,17 +1,7 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
id("java-library")
id("kotlin")
id("embrace-test-defaults")
}

java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
android {
namespace = "io.embrace.android.embracesdk.test.common"
}

project.tasks.withType(KotlinCompile::class.java).configureEach {
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8.toString()
}
}
4 changes: 4 additions & 0 deletions embrace-test-common/lint-baseline.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.5.1" type="baseline" client="gradle" dependencies="false" name="AGP (8.5.1)" variant="all" version="8.5.1">

</issues>
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ package io.embrace.android.embracesdk

import java.io.InputStream

object ResourceReader {
fun readResource(name: String): InputStream {
public object ResourceReader {
public fun readResource(name: String): InputStream {
val classLoader = checkNotNull(javaClass.classLoader)
return classLoader.getResourceAsStream(name)
?: error("Could not find resource '$name'")
}

fun readResourceAsText(name: String): String {
public fun readResourceAsText(name: String): String {
return readResource(name).bufferedReader().readText()
}
}
3 changes: 3 additions & 0 deletions embrace-test-fakes/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# embrace-test-fakes

Fake implementations that are used for writing unit/integration tests.
11 changes: 11 additions & 0 deletions embrace-test-fakes/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
plugins {
id("embrace-test-defaults")
}

android {
namespace = "io.embrace.android.embracesdk.test.fakes"
}

dependencies {
compileOnly(project(":embrace-android-core"))
}
4 changes: 4 additions & 0 deletions embrace-test-fakes/lint-baseline.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.5.1" type="baseline" client="gradle" dependencies="false" name="AGP (8.5.1)" variant="all" version="8.5.1">

</issues>
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,25 @@ package io.embrace.android.embracesdk.fakes

import io.embrace.android.embracesdk.internal.clock.Clock

internal class FakeClock(
public class FakeClock(
@Volatile
private var currentTime: Long = DEFAULT_FAKE_CURRENT_TIME
) : Clock {

fun setCurrentTime(currentTime: Long) {
public fun setCurrentTime(currentTime: Long) {
this.currentTime = currentTime
}

fun tick(millis: Long = 1): Long {
public fun tick(millis: Long = 1): Long {
currentTime += millis
return currentTime
}

fun tickSecond() = tick(1000)
public fun tickSecond(): Long = tick(1000)

override fun now(): Long = currentTime

companion object {
const val DEFAULT_FAKE_CURRENT_TIME = 1692201601000L
public companion object {
public const val DEFAULT_FAKE_CURRENT_TIME: Long = 1692201601000L
}
}
3 changes: 2 additions & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@ include(
":embrace-android-fcm",
":embrace-android-compose",
":embrace-lint",
":embrace-test-common"
":embrace-test-common",
":embrace-test-fakes"
)

0 comments on commit 012a701

Please sign in to comment.