diff options
author | satayev <satayev@google.com> | 2021-10-04 12:51:50 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2021-10-04 12:51:50 +0000 |
commit | cfa5a189e9671992ba7ad5b8de5d59826544a592 (patch) | |
tree | 3501ee7196591d863fffbe49c8c8be567c1cdb1e | |
parent | 7092e69ee431a90dff2cd1543f66499d6fc1bd08 (diff) | |
parent | 8e43a69bcc25f9cc2f430c55046386674269cc95 (diff) | |
download | platform-compat-cfa5a189e9671992ba7ad5b8de5d59826544a592.tar.gz |
Allow providing a jar file to getClassDefsFromJar directly. am: 4d4cd9f285 am: f09acbe4a2 am: 8e43a69bccandroid-12.1.0_r9android-12.1.0_r8android-12.1.0_r7android-12.1.0_r22android-12.1.0_r21android-12.1.0_r20android-12.1.0_r19android-12.1.0_r11android-12.1.0_r10android12L-devandroid12-qpr3-s7-releaseandroid12-qpr3-s6-releaseandroid12-qpr3-s5-releaseandroid12-qpr3-s4-releaseandroid12-qpr3-s3-releaseandroid12-qpr3-s2-releaseandroid12-qpr3-s1-releaseandroid12-qpr3-release
Original change: https://googleplex-android-review.googlesource.com/c/tools/platform-compat/+/15934543
Change-Id: Ia28acc3dcca85ba7e076bbf0bf164436eaf0c4ce
-rw-r--r-- | java/android/compat/testing/Classpaths.java | 37 |
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); } -} + } } |