diff options
author | Remi NGUYEN VAN <reminv@google.com> | 2020-04-02 05:42:47 +0000 |
---|---|---|
committer | Remi NGUYEN VAN <reminv@google.com> | 2020-04-02 06:44:12 +0000 |
commit | 08ffbabc1b5ab09bef015fb3a748f97534403fd0 (patch) | |
tree | ce0afadb1fa0f37720583db67dff03eef8ede206 | |
parent | 9b105a99a3223fe2b573533cba503fb63bd97257 (diff) |
Add ignore class parameters to DevSdkIgnoreRule
The parameters are useful to avoid annotating every method in a class
with @IgnoreAfter / @IgnoreUpTo.
Test: Tests using this class
Bug: 150918852
Merged-In: Ic17e7a253c7f3a86011298e177e76b53c966a47b
Change-Id: Ic17e7a253c7f3a86011298e177e76b53c966a47b
-rw-r--r-- | tests/lib/src/com/android/testutils/DevSdkIgnoreRule.kt | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/tests/lib/src/com/android/testutils/DevSdkIgnoreRule.kt b/tests/lib/src/com/android/testutils/DevSdkIgnoreRule.kt index fd7deb6..d30138d 100644 --- a/tests/lib/src/com/android/testutils/DevSdkIgnoreRule.kt +++ b/tests/lib/src/com/android/testutils/DevSdkIgnoreRule.kt @@ -27,8 +27,14 @@ import org.junit.runners.model.Statement * * If the device is not using a release SDK, the development SDK is considered to be higher than * [Build.VERSION.SDK_INT]. + * + * @param ignoreClassUpTo Skip all tests in the class if the device dev SDK is <= this value. + * @param ignoreClassAfter Skip all tests in the class if the device dev SDK is > this value. */ -class DevSdkIgnoreRule : TestRule { +class DevSdkIgnoreRule @JvmOverloads constructor( + private val ignoreClassUpTo: Int? = null, + private val ignoreClassAfter: Int? = null +) : TestRule { override fun apply(base: Statement, description: Description): Statement { return IgnoreBySdkStatement(base, description) } @@ -49,7 +55,7 @@ class DevSdkIgnoreRule : TestRule { */ annotation class IgnoreUpTo(val value: Int) - private class IgnoreBySdkStatement( + private inner class IgnoreBySdkStatement( private val base: Statement, private val description: Description ) : Statement() { @@ -63,6 +69,8 @@ class DevSdkIgnoreRule : TestRule { val sdkInt = Build.VERSION.SDK_INT val devApiLevel = sdkInt + if (release) 0 else 1 val message = "Skipping test for ${if (!release) "non-" else ""}release SDK $sdkInt" + assumeTrue(message, ignoreClassAfter == null || devApiLevel <= ignoreClassAfter) + assumeTrue(message, ignoreClassUpTo == null || devApiLevel > ignoreClassUpTo) assumeTrue(message, ignoreAfter == null || devApiLevel <= ignoreAfter.value) assumeTrue(message, ignoreUpTo == null || devApiLevel > ignoreUpTo.value) base.evaluate() |