68 lines
3 KiB
Kotlin
68 lines
3 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", "home-tokens.json", "discover-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")
|
|
}
|