Merge "Test that updatable APEXex are sorted on *CLASSPATH vars." am: 622ec08c90 am: 943bea4098 am: d6141dc1db
Original change: https://android-review.googlesource.com/c/platform/packages/modules/SdkExtensions/+/1699204
Change-Id: I2f1cb1829f7e2dac0ecf5105ada8d6bde15c14e0
diff --git a/tests/cts/Classpaths/src/android/os/ext/classpath/cts/ClasspathsTest.java b/tests/cts/Classpaths/src/android/os/ext/classpath/cts/ClasspathsTest.java
index ce87aad..4c4447c 100644
--- a/tests/cts/Classpaths/src/android/os/ext/classpath/cts/ClasspathsTest.java
+++ b/tests/cts/Classpaths/src/android/os/ext/classpath/cts/ClasspathsTest.java
@@ -40,6 +40,8 @@
import org.junit.Test;
import org.junit.runner.RunWith;
+import java.nio.file.Paths;
+
/**
* Tests for the contents of *CLASSPATH environ variables on a device.
*/
@@ -80,6 +82,8 @@
assertThat(jars)
.prefixesMatch(expectedPrefixes)
.inOrder();
+
+ assertThat(getUpdatableApexes(jars)).isInOrder();
}
@Test
@@ -89,7 +93,7 @@
assertThat(jars).containsNoDuplicates();
- // DEX2OATBOOTCLASSPATH should only contain ART, core-icu4j, and platform system jars
+ // DEX2OATBOOTCLASSPATH must only contain ART, core-icu4j, and platform system jars
assertThat(jars)
.containsAtLeast(LIBART_JAR, FRAMEWORK_JAR, ICU4J_JAR)
.inOrder();
@@ -101,6 +105,9 @@
assertThat(jars)
.prefixesMatch(expectedPrefixes)
.inOrder();
+
+ // No updatable jars on DEX2OATBOOTCLASSPATH
+ assertThat(getUpdatableApexes(jars)).isEmpty();
}
@Test
@@ -118,6 +125,24 @@
assertThat(jars)
.prefixesMatch(expectedPrefixes)
.inOrder();
+
+ assertThat(getUpdatableApexes(jars)).isInOrder();
+ }
+
+ /**
+ * Returns a derived subject with names of the updatable APEXes preserving the original
+ * order.
+ */
+ private static ImmutableList<String> getUpdatableApexes(ImmutableList<String> jars) {
+ return jars.stream()
+ .filter(jar -> jar.startsWith("/apex"))
+ // ICU4J_JAR is the last non-updatable APEX jar, i.e. everything after is
+ // considered to be an updatable APEX jar
+ .dropWhile(jar -> !jar.equals(ICU4J_JAR))
+ .skip(1)
+ // Map to APEX name from "/apex/<name>/javalibs/foo.jar"
+ .map(jar -> Paths.get(jar).getName(1).toString())
+ .collect(ImmutableList.toImmutableList());
}
final static class ClasspathSubject extends IterableSubject {
@@ -194,5 +219,6 @@
}
return -1;
}
+
}
}