aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuexi Ma <yuexima@google.com>2023-03-25 08:03:41 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-03-25 08:03:41 +0000
commit326564021753460aa10880ae2500074867f8ad1d (patch)
treeb1a0907481bf1f276ac687f7280b55302a86d203
parent2ce51ce18c00fcd5adcc173707163cfa87f1c846 (diff)
parenta13eebb23b6bebdbd932886ea4f2b7e9a17fc1da (diff)
downloadcsuite-326564021753460aa10880ae2500074867f8ad1d.tar.gz
Remove existing OBB files before installation am: bf6585e062 am: d727e78f69 am: b8babcaed4 am: a13eebb23b
Original change: https://android-review.googlesource.com/c/platform/test/app_compat/csuite/+/2507819 Change-Id: Ifca6ac4e9a60f8dc25358a836d0531da1788c995 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r--harness/src/main/java/com/android/csuite/core/ApkInstaller.java17
-rw-r--r--harness/src/test/java/com/android/csuite/core/ApkInstallerTest.java27
2 files changed, 35 insertions, 9 deletions
diff --git a/harness/src/main/java/com/android/csuite/core/ApkInstaller.java b/harness/src/main/java/com/android/csuite/core/ApkInstaller.java
index 70a6105..54df8f4 100644
--- a/harness/src/main/java/com/android/csuite/core/ApkInstaller.java
+++ b/harness/src/main/java/com/android/csuite/core/ApkInstaller.java
@@ -198,17 +198,15 @@ public final class ApkInstaller {
.filter(path -> path.toString().toLowerCase().endsWith(".obb"))
.forEach(
path -> {
+ String dest =
+ "/sdcard/Android/obb/" + packageName + "/" + path.getFileName();
cmds.add(
new String[] {
- "adb",
- "-s",
- deviceSerial,
- "push",
- path.toString(),
- "/sdcard/Android/obb/"
- + packageName
- + "/"
- + path.getFileName()
+ "adb", "-s", deviceSerial, "shell", "rm", "-f", dest
+ });
+ cmds.add(
+ new String[] {
+ "adb", "-s", deviceSerial, "push", path.toString(), dest
});
});
@@ -221,6 +219,7 @@ public final class ApkInstaller {
deviceSerial,
"shell",
"mkdir",
+ "-p",
"/sdcard/Android/obb/" + packageName
});
}
diff --git a/harness/src/test/java/com/android/csuite/core/ApkInstallerTest.java b/harness/src/test/java/com/android/csuite/core/ApkInstallerTest.java
index 7f99e36..c26b9d7 100644
--- a/harness/src/test/java/com/android/csuite/core/ApkInstallerTest.java
+++ b/harness/src/test/java/com/android/csuite/core/ApkInstallerTest.java
@@ -16,6 +16,8 @@
package com.android.csuite.core;
import static org.junit.Assert.assertThrows;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyLong;
import com.android.csuite.core.ApkInstaller.ApkInstallerException;
import com.android.tradefed.util.CommandResult;
@@ -27,6 +29,7 @@ import com.google.common.jimfs.Jimfs;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
+import org.mockito.ArgumentCaptor;
import org.mockito.ArgumentMatchers;
import org.mockito.Mockito;
@@ -34,6 +37,7 @@ import java.io.IOException;
import java.nio.file.FileSystem;
import java.nio.file.Files;
import java.nio.file.Path;
+import java.util.List;
@RunWith(JUnit4.class)
public final class ApkInstallerTest {
@@ -96,6 +100,29 @@ public final class ApkInstallerTest {
assertThrows(ApkInstallerException.class, () -> sut.install(root));
}
+ @Test
+ public void install_obbExists_installObb() throws Exception {
+ Path root = mFileSystem.getPath("apk");
+ Files.createDirectories(root);
+ Path apkPath = root.resolve("base.apk");
+ Files.createFile(apkPath);
+ Path obbPath = root.resolve("main.obb");
+ Files.createFile(obbPath);
+ IRunUtil runUtil = Mockito.mock(IRunUtil.class);
+ Mockito.when(runUtil.runTimedCmd(Mockito.anyLong(), ArgumentMatchers.<String>any()))
+ .thenReturn(createSuccessfulCommandResultWithStdout(""));
+ ApkInstaller sut = new ApkInstaller("serial", runUtil, apk -> "package.name");
+
+ sut.install(root);
+
+ ArgumentCaptor<String> cmdCaptor = ArgumentCaptor.forClass(String.class);
+ Mockito.verify(runUtil, Mockito.atLeastOnce()).runTimedCmd(anyLong(), cmdCaptor.capture());
+ List<String> capturedArgs = cmdCaptor.getAllValues();
+ assertTrue(capturedArgs.stream().anyMatch(arg -> arg.contains("push")));
+ assertTrue(capturedArgs.stream().anyMatch(arg -> arg.contains("rm")));
+ assertTrue(capturedArgs.stream().anyMatch(arg -> arg.contains("mkdir")));
+ }
+
private static CommandResult createSuccessfulCommandResultWithStdout(String stdout) {
CommandResult commandResult = new CommandResult(CommandStatus.SUCCESS);
commandResult.setExitCode(0);