diff options
author | Remi NGUYEN VAN <reminv@google.com> | 2023-08-14 03:15:37 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2023-08-14 03:15:37 +0000 |
commit | cfac575bc604f1c67c8e73a8469bcc8bd15d12c0 (patch) | |
tree | 0976c3fc1b45c9f9700e45e4418adf6a173405fe | |
parent | 6c7c50ee22da83af1ec11486c46aaec4d918e2a5 (diff) | |
parent | 25b8e8f680159c614fcb8dc1495254a66d9038ce (diff) | |
download | net-cfac575bc604f1c67c8e73a8469bcc8bd15d12c0.tar.gz |
Merge "Fix DevSdkIgnoreRule for Q-" into main
-rw-r--r-- | common/testutils/devicetests/com/android/testutils/DevSdkIgnoreRule.kt | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/common/testutils/devicetests/com/android/testutils/DevSdkIgnoreRule.kt b/common/testutils/devicetests/com/android/testutils/DevSdkIgnoreRule.kt index 21e84daf..35f22b9e 100644 --- a/common/testutils/devicetests/com/android/testutils/DevSdkIgnoreRule.kt +++ b/common/testutils/devicetests/com/android/testutils/DevSdkIgnoreRule.kt @@ -19,11 +19,11 @@ package com.android.testutils import android.os.Build import androidx.test.InstrumentationRegistry import com.android.modules.utils.build.UnboundedSdkLevel +import java.util.regex.Pattern import org.junit.Assume.assumeTrue import org.junit.rules.TestRule import org.junit.runner.Description import org.junit.runners.model.Statement -import java.util.regex.Pattern @Deprecated("Use Build.VERSION_CODES", ReplaceWith("Build.VERSION_CODES.S_V2")) const val SC_V2 = Build.VERSION_CODES.S_V2 @@ -32,8 +32,22 @@ private val MAX_TARGET_SDK_ANNOTATION_RE = Pattern.compile("MaxTargetSdk([0-9]+) private val targetSdk = InstrumentationRegistry.getContext().applicationInfo.targetSdkVersion private fun isDevSdkInRange(minExclusive: String?, maxInclusive: String?): Boolean { - return (minExclusive == null || !UnboundedSdkLevel.isAtMost(minExclusive)) && - (maxInclusive == null || UnboundedSdkLevel.isAtMost(maxInclusive)) + return (minExclusive == null || !isAtMost(minExclusive)) && + (maxInclusive == null || isAtMost(maxInclusive)) +} + +private fun isAtMost(sdkVersionOrCodename: String): Boolean { + // UnboundedSdkLevel does not support builds < Q, and may stop supporting Q as well since it + // is intended for mainline modules that are now R+. + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.Q) { + // Assume that any codename passed as argument from current code is a more recent build than + // Q: this util did not exist before Q, and codenames are only used before the corresponding + // build is finalized. This util could list 28 older codenames to check against (as per + // ro.build.version.known_codenames in more recent builds), but this does not seem valuable. + val intVersion = sdkVersionOrCodename.toIntOrNull() ?: return true + return Build.VERSION.SDK_INT <= intVersion + } + return UnboundedSdkLevel.isAtMost(sdkVersionOrCodename) } /** |