Fix ModulesUtilsTestingTests on Q devices
The DeviceConfig.getProperties API was introduced in R, so exclude
earlier builds from tests that use that API (as well as prevent that
method being mocked).
Test: atest ModulesUtilsTestingTests #on Q device
Bug: 239527036
Ignore-AOSP-First: Fix MTS tests
Change-Id: I548badcc3d45f59fb6287eadb66112087d5e15ac
diff --git a/java/com/android/modules/utils/testing/TestableDeviceConfig.java b/java/com/android/modules/utils/testing/TestableDeviceConfig.java
index 2012ad4..7177c74 100644
--- a/java/com/android/modules/utils/testing/TestableDeviceConfig.java
+++ b/java/com/android/modules/utils/testing/TestableDeviceConfig.java
@@ -130,27 +130,29 @@
String name = invocationOnMock.getArgument(1);
return mKeyValueMap.get(getKey(namespace, name));
}).when(() -> DeviceConfig.getProperty(anyString(), anyString()));
-
- doAnswer((Answer<Properties>) invocationOnMock -> {
- String namespace = invocationOnMock.getArgument(0);
- final int varargStartIdx = 1;
- Map<String, String> keyValues = new ArrayMap<>();
- if (invocationOnMock.getArguments().length == varargStartIdx) {
- mKeyValueMap.entrySet().forEach(entry -> {
- Pair<String, String> nameSpaceAndName = getNameSpaceAndName(entry.getKey());
- if (!nameSpaceAndName.first.equals(namespace)) {
- return;
+ if (SdkLevel.isAtLeastR()) {
+ doAnswer((Answer<Properties>) invocationOnMock -> {
+ String namespace = invocationOnMock.getArgument(0);
+ final int varargStartIdx = 1;
+ Map<String, String> keyValues = new ArrayMap<>();
+ if (invocationOnMock.getArguments().length == varargStartIdx) {
+ mKeyValueMap.entrySet().forEach(entry -> {
+ Pair<String, String> nameSpaceAndName = getNameSpaceAndName(entry.getKey());
+ if (!nameSpaceAndName.first.equals(namespace)) {
+ return;
+ }
+ keyValues.put(nameSpaceAndName.second.toLowerCase(), entry.getValue());
+ });
+ } else {
+ for (int i = varargStartIdx; i < invocationOnMock.getArguments().length; ++i) {
+ String name = invocationOnMock.getArgument(i);
+ keyValues.put(name.toLowerCase(),
+ mKeyValueMap.get(getKey(namespace, name)));
}
- keyValues.put(nameSpaceAndName.second.toLowerCase(), entry.getValue());
- });
- } else {
- for (int i = varargStartIdx; i < invocationOnMock.getArguments().length; ++i) {
- String name = invocationOnMock.getArgument(i);
- keyValues.put(name.toLowerCase(), mKeyValueMap.get(getKey(namespace, name)));
}
- }
- return getProperties(namespace, keyValues);
- }).when(() -> DeviceConfig.getProperties(anyString(), ArgumentMatchers.<String>any()));
+ return getProperties(namespace, keyValues);
+ }).when(() -> DeviceConfig.getProperties(anyString(), ArgumentMatchers.<String>any()));
+ }
}
/**
diff --git a/javatests/com/android/modules/utils/testing/TestableDeviceConfigTest.java b/javatests/com/android/modules/utils/testing/TestableDeviceConfigTest.java
index 1b2c844..ac0252e 100644
--- a/javatests/com/android/modules/utils/testing/TestableDeviceConfigTest.java
+++ b/javatests/com/android/modules/utils/testing/TestableDeviceConfigTest.java
@@ -127,6 +127,8 @@
@Test
public void getProperties_empty() {
+ // api only present on R+
+ assumeTrue(SdkLevel.isAtLeastR());
String newKey = "key2";
String newValue = "value2";
DeviceConfig.setProperty(sNamespace, sKey, sValue, false);
@@ -143,6 +145,8 @@
@Test
public void getProperties() {
+ // api only present on R+
+ assumeTrue(SdkLevel.isAtLeastR());
Properties properties = DeviceConfig.getProperties(sNamespace, sKey);
assertThat(properties.getString(sKey, null)).isNull();