aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/android/compat/testing/Classpaths.java37
1 files changed, 20 insertions, 17 deletions
diff --git a/java/android/compat/testing/Classpaths.java b/java/android/compat/testing/Classpaths.java
index 6b4d7e6..2c61154 100644
--- a/java/android/compat/testing/Classpaths.java
+++ b/java/android/compat/testing/Classpaths.java
@@ -22,7 +22,6 @@ import static com.google.common.truth.Truth.assertWithMessage;
import com.android.compatibility.common.tradefed.build.CompatibilityBuildHelper;
import com.android.ddmlib.testrunner.RemoteAndroidTestRunner;
import com.android.ddmlib.testrunner.TestResult.TestStatus;
-import com.android.modules.utils.build.testing.DeviceSdkLevel;
import com.android.tradefed.build.IBuildInfo;
import com.android.tradefed.device.DeviceNotAvailableException;
import com.android.tradefed.device.INativeDevice;
@@ -47,7 +46,6 @@ import org.jf.dexlib2.iface.MultiDexContainer;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
-import java.util.Arrays;
import java.util.Map;
import java.util.Objects;
@@ -103,26 +101,32 @@ public final class Classpaths {
if (jar == null) {
throw new IllegalStateException("could not pull remote file " + remoteJarPath);
}
- MultiDexContainer<? extends DexBackedDexFile> container =
- DexFileFactory.loadDexContainer(jar, Opcodes.getDefault());
- ImmutableSet.Builder<ClassDef> set = ImmutableSet.builder();
- for (String dexName : container.getDexEntryNames()) {
- set.addAll(Objects.requireNonNull(container.getEntry(dexName)).getClasses());
- }
- return set.build();
+ return getClassDefsFromJar(jar);
} finally {
FileUtil.deleteFile(jar);
}
}
+ /** Returns classes defined a given jar file on the test device. */
+ public static ImmutableSet<ClassDef> getClassDefsFromJar(File jar) throws IOException {
+ MultiDexContainer<? extends DexBackedDexFile> container =
+ DexFileFactory.loadDexContainer(jar, Opcodes.getDefault());
+ ImmutableSet.Builder<ClassDef> set = ImmutableSet.builder();
+ for (String dexName : container.getDexEntryNames()) {
+ set.addAll(Objects.requireNonNull(container.getEntry(dexName)).getClasses());
+ }
+ return set.build();
+ }
+
private static void runDeviceTests(ITestDevice device, IBuildInfo buildInfo, String apkName,
String packageName, String className) throws DeviceNotAvailableException,
- FileNotFoundException {
+ FileNotFoundException {
try {
final CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(buildInfo);
- final String installError = device.installPackage(buildHelper.getTestFile(apkName), false);
+ final String installError = device.installPackage(buildHelper.getTestFile(apkName),
+ false);
assertWithMessage("Failed to install %s due to: %s", apkName, installError).
- that(installError).isNull();
+ that(installError).isNull();
// Trigger helper app to collect and write info about shared libraries on the device.
final RemoteAndroidTestRunner testRunner = new RemoteAndroidTestRunner(packageName,
TEST_RUNNER, device.getIDevice());
@@ -131,8 +135,8 @@ public final class Classpaths {
assertThat(device.runInstrumentationTests(testRunner, listener)).isTrue();
final TestRunResult result = listener.getCurrentRunResults();
assertWithMessage("Failed to successfully run device tests for " + result.getName()
- + ": " + result.getRunFailureMessage())
- .that(result.isRunFailure()).isFalse();
+ + ": " + result.getRunFailureMessage())
+ .that(result.isRunFailure()).isFalse();
assertWithMessage("No tests were run!").that(result.getNumTests()).isGreaterThan(0);
StringBuilder errorBuilder = new StringBuilder("on-device tests failed:\n");
for (Map.Entry<TestDescription, TestResult> resultEntry :
@@ -144,10 +148,9 @@ public final class Classpaths {
}
}
assertWithMessage(errorBuilder.toString()).that(result.hasFailedTests()).isFalse();
- }
- finally {
+ } finally {
device.uninstallPackage(packageName);
}
-}
+ }
}