aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuexi Ma <yuexima@google.com>2023-03-25 06:31:08 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-03-25 06:31:08 +0000
commitd727e78f69009f147c6a918ccd23bfafc47728aa (patch)
treeb1a0907481bf1f276ac687f7280b55302a86d203
parent57bc23d43c91c149af11b11f1cdc9bbe442574d9 (diff)
parentbf6585e0626df83506db86946e52fcc8cdd99df2 (diff)
downloadcsuite-d727e78f69009f147c6a918ccd23bfafc47728aa.tar.gz
Remove existing OBB files before installation am: bf6585e062
Original change: https://android-review.googlesource.com/c/platform/test/app_compat/csuite/+/2507819 Change-Id: I3d2a041ac7a99d13691748c98346d2f87fbb23fa 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);