wolfskin/wolfskin-design/build.gradle.kts

68 lines
2.9 KiB
Kotlin

import java.security.MessageDigest
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.compose)
}
android {
namespace = "org.justinvisser.wolfskin.design"
compileSdk = libs.versions.compileSdk.get().toInt()
defaultConfig { minSdk = libs.versions.minSdk.get().toInt() }
buildFeatures { compose = true }
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
testOptions.unitTests.isIncludeAndroidResources = true
}
kotlin.compilerOptions.jvmTarget = JvmTarget.JVM_11
val robolectricSdk by configurations.creating {
isCanBeResolved = true
isCanBeConsumed = false
isTransitive = false
}
val cacheRobolectricSdk by tasks.registering(Copy::class) {
from(robolectricSdk)
into(layout.buildDirectory.dir("robolectric-sdk"))
}
val checkTokenDrift by tasks.registering {
inputs.files(fileTree(projectDir) { include("tokens.json", "shell-tokens.json", "generate_tokens.py", "tokens.css", "tokens.sha256", "src/main/java/**/WolfskinTokens.kt") })
doLast {
file("tokens.sha256").readLines().forEach { line ->
val (expected, name) = line.split(" ", limit = 2)
val actual = MessageDigest.getInstance("SHA-256").digest(file(name).readBytes()).joinToString("") { "%02x".format(it) }
check(actual == expected) { "Token drift in $name: run python3 wolfskin-design/generate_tokens.py" }
}
}
}
tasks.named("preBuild") { dependsOn(checkTokenDrift) }
tasks.withType<Test>().configureEach {
dependsOn(cacheRobolectricSdk)
systemProperty("robolectric.dependency.dir", layout.buildDirectory.dir("robolectric-sdk").get().asFile.absolutePath)
systemProperty("robolectric.offline", "true")
systemProperty("robolectric.graphicsMode", "NATIVE")
systemProperty("roborazzi.test.record", "true")
systemProperty("wolfskin.captureDirectory", rootProject.layout.buildDirectory.dir("wolfskin-captures").get().asFile.absolutePath)
}
dependencies {
robolectricSdk("org.robolectric:android-all-instrumented:9-robolectric-4913185-2-i7")
robolectricSdk("org.robolectric:android-all-instrumented:11-robolectric-6757853-i7")
robolectricSdk("org.robolectric:android-all-instrumented:14-robolectric-10818077-i7")
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.tv.material)
implementation(libs.coil.compose)
debugImplementation(libs.androidx.compose.ui.test.manifest)
testImplementation(libs.junit)
testImplementation(libs.kotlinx.coroutines.test)
testImplementation(libs.robolectric)
implementation(libs.androidx.compose.material3)
testImplementation(libs.androidx.compose.ui.test.junit4)
testImplementation("io.github.takahirom.roborazzi:roborazzi:1.77.0")
testImplementation("io.github.takahirom.roborazzi:roborazzi-compose:1.77.0")
}