import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.android.application) alias(libs.plugins.compose.compiler) alias(libs.plugins.roborazzi) alias(libs.plugins.ksp) } android { namespace = "com.subtracks" compileSdk = 37 buildToolsVersion = "37.0.0" defaultConfig { applicationId = "com.subtracks.next" minSdk = 24 targetSdk = 37 versionCode = 1 versionName = "0.1.0" } buildFeatures { compose = true } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } testOptions { unitTests { isIncludeAndroidResources = true } } sourceSets.getByName("test").kotlin.directories.add("src/integrationTest/kotlin") buildTypes { release { isMinifyEnabled = false } } } kotlin { compilerOptions { jvmTarget.set(JvmTarget.JVM_17) } } roborazzi { outputDir.set(file("src/test/screenshots")) } ksp { arg("room.schemaLocation", "$projectDir/schemas") } val integrationTestClassName = "com.subtracks.data.source.subsonic.SubsonicSourceIntegrationTest" tasks.withType().configureEach { if (name.endsWith("UnitTest")) { filter { excludeTestsMatching(integrationTestClassName) } } } tasks.register("integrationTest") { description = "Runs the integration tests against locally started Subsonic servers" group = "verification" val unitTest = tasks.named("testDebugUnitTest") dependsOn("compileDebugUnitTestKotlin") testClassesDirs = files(provider { unitTest.get().testClassesDirs }) classpath = files(provider { unitTest.get().classpath }) filter { includeTestsMatching(integrationTestClassName) } } dependencies { implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.lifecycle.viewmodel.compose) implementation(libs.androidx.activity.compose) implementation(libs.androidx.compose.ui) implementation(libs.androidx.compose.ui.graphics) implementation(libs.androidx.compose.ui.tooling.preview) implementation(libs.androidx.compose.material3) implementation(libs.kotlinx.coroutines.android) implementation(libs.androidx.sqlite.bundled) implementation(libs.androidx.room3.runtime) implementation(libs.androidx.room3.sqlite.wrapper) implementation(libs.okhttp) ksp(libs.androidx.room3.compiler) debugImplementation(libs.androidx.compose.ui.tooling) debugImplementation(libs.androidx.compose.ui.test.manifest) testImplementation(libs.junit) testImplementation(libs.robolectric) testImplementation(libs.roborazzi) testImplementation(libs.roborazzi.compose) testImplementation(libs.roborazzi.junit.rule) testImplementation(libs.androidx.compose.ui.test.junit4) testImplementation(libs.androidx.test.ext.junit) testImplementation(libs.androidx.test.core) testImplementation(libs.androidx.sqlite.bundled.jvm) testImplementation(libs.okhttp.mockwebserver) testImplementation(libs.kotlinx.coroutines.test) }