From 392ad847bf522e2d3246e4fb62d4015b8c4b1d92 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 19 Jul 2021 16:31:37 +0530 Subject: Cleanup and fix CI tests (#1464) --- buildSrc/src/main/java/SlimTests.kt | 38 +++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 buildSrc/src/main/java/SlimTests.kt (limited to 'buildSrc/src/main/java/SlimTests.kt') diff --git a/buildSrc/src/main/java/SlimTests.kt b/buildSrc/src/main/java/SlimTests.kt new file mode 100644 index 00000000..65e9c618 --- /dev/null +++ b/buildSrc/src/main/java/SlimTests.kt @@ -0,0 +1,38 @@ +/* + * Copyright © 2014-2021 The Android Password Store Authors. All Rights Reserved. + * SPDX-License-Identifier: GPL-3.0-only + */ + +import com.android.build.api.extension.ApplicationAndroidComponentsExtension +import com.android.build.api.extension.LibraryAndroidComponentsExtension +import org.gradle.api.Project +import org.gradle.kotlin.dsl.findByType +import org.gradle.language.nativeplatform.internal.BuildType + +/** + * When the "slimTests" project property is provided, disable the unit test tasks on `release` build + * type and `nonFree` product flavor to avoid running the same tests repeatedly in different build + * variants. + * + * Examples: `./gradlew test -PslimTests` will run unit tests for `nonFreeDebug` and `debug` build + * variants in Android App and Library projects, and all tests in JVM projects. + */ +internal fun Project.configureSlimTests() { + if (providers.gradleProperty(SLIM_TESTS_PROPERTY).forUseAtConfigurationTime().isPresent) { + // disable unit test tasks on the release build type for Android Library projects + extensions.findByType()?.run { + beforeUnitTests(selector().withBuildType(BuildType.RELEASE.name)) { it.enabled = false } + } + + // disable unit test tasks on the release build type and free flavor for Android Application + // projects. + extensions.findByType()?.run { + beforeUnitTests(selector().withBuildType(BuildType.RELEASE.name)) { it.enabled = false } + beforeUnitTests(selector().withFlavor(FlavorDimensions.FREE to ProductFlavors.NON_FREE)) { + it.enabled = false + } + } + } +} + +private const val SLIM_TESTS_PROPERTY = "slimTests" -- cgit v1.2.3