diff options
| author | 2020-11-09 13:00:51 +0000 | |
|---|---|---|
| committer | 2020-11-09 13:00:51 +0000 | |
| commit | c20ac75c889d9a90052681d964044b6baa06a1ec (patch) | |
| tree | 6b2d0fea36021f9cce31e3f48a15cab71f5987bd | |
| parent | 1dab6169d664f0889bb61bfa89ffb8ea3ff8d399 (diff) | |
| parent | f15608a4abbce818489daab3f825f2a190ce1d2d (diff) | |
Merge "Add ability to stage multiple apexs." am: 7bd2a5e4fd am: 20d93a701c am: 5401dfbfb2 am: f15608a4ab
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1490738
Change-Id: I950fa97da1413689e95f43ee005e87bda8ec9fff
| -rw-r--r-- | tests/utils/hostutils/src/com/android/internal/util/test/SystemPreparer.java | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/tests/utils/hostutils/src/com/android/internal/util/test/SystemPreparer.java b/tests/utils/hostutils/src/com/android/internal/util/test/SystemPreparer.java index ec47550e3ddd..84448333a8c6 100644 --- a/tests/utils/hostutils/src/com/android/internal/util/test/SystemPreparer.java +++ b/tests/utils/hostutils/src/com/android/internal/util/test/SystemPreparer.java @@ -16,6 +16,7 @@ package com.android.internal.util.test; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import com.android.tradefed.device.DeviceNotAvailableException; @@ -140,6 +141,24 @@ public class SystemPreparer extends ExternalResource { return this; } + /** Stages multiple APEXs within the host test jar onto the device. */ + public SystemPreparer stageMultiplePackages(String[] resourcePaths, String[] packageNames) + throws DeviceNotAvailableException, IOException { + assertEquals(resourcePaths.length, packageNames.length); + final ITestDevice device = mDeviceProvider.getDevice(); + final String[] adbCommandLine = new String[resourcePaths.length + 2]; + adbCommandLine[0] = "install-multi-package"; + adbCommandLine[1] = "--staged"; + for (int i = 0; i < resourcePaths.length; i++) { + final File tmpFile = copyResourceToTemp(resourcePaths[i]); + adbCommandLine[i + 2] = tmpFile.getAbsolutePath(); + mInstalledPackages.add(packageNames[i]); + } + final String output = device.executeAdbCommand(adbCommandLine); + assertTrue(output.contains("Success. Reboot device to apply staged session")); + return this; + } + /** Sets the enable state of an overlay package. */ public SystemPreparer setOverlayEnabled(String packageName, boolean enabled) throws DeviceNotAvailableException { @@ -210,9 +229,27 @@ public class SystemPreparer extends ExternalResource { return this; } + private static @Nullable String getFileExtension(@Nullable String path) { + if (path == null) { + return null; + } + final int lastDot = path.lastIndexOf('.'); + if (lastDot >= 0) { + return path.substring(lastDot + 1); + } else { + return null; + } + } + /** Copies a file within the host test jar to a temporary file on the host machine. */ private File copyResourceToTemp(String resourcePath) throws IOException { - final File tempFile = mHostTempFolder.newFile(); + final String ext = getFileExtension(resourcePath); + final File tempFile; + if (ext != null) { + tempFile = File.createTempFile("junit", "." + ext, mHostTempFolder.getRoot()); + } else { + tempFile = mHostTempFolder.newFile(); + } final ClassLoader classLoader = getClass().getClassLoader(); try (InputStream assetIs = classLoader.getResourceAsStream(resourcePath); FileOutputStream assetOs = new FileOutputStream(tempFile)) { |