aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-03-25 23:31:56 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-03-25 23:31:56 +0000
commite8913383e3b61d53d4927a120a9019b846d302fa (patch)
treeb1a0907481bf1f276ac687f7280b55302a86d203
parent58a9a0f47e43f123b445e19032e416ed4c11cc48 (diff)
parentff61de9e1a1e8b3fdc2d7220fe02fa007d9f81ac (diff)
downloadcsuite-e8913383e3b61d53d4927a120a9019b846d302fa.tar.gz
Snap for 9823867 from ff61de9e1a1e8b3fdc2d7220fe02fa007d9f81ac to udc-d1-release
Change-Id: Id574260b9c05c6166a928fb981dd458e4e04d3e3
-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);