diff options
author | Yuexi Ma <yuexima@google.com> | 2023-03-25 08:19:28 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-03-25 08:19:28 +0000 |
commit | ff61de9e1a1e8b3fdc2d7220fe02fa007d9f81ac (patch) | |
tree | b1a0907481bf1f276ac687f7280b55302a86d203 | |
parent | ad894656c73eb12c071ffce40579860c64d9176d (diff) | |
parent | a13eebb23b6bebdbd932886ea4f2b7e9a17fc1da (diff) | |
download | csuite-ff61de9e1a1e8b3fdc2d7220fe02fa007d9f81ac.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: I37dcda95893fd93ad0850c4719a522eade9add85
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.java | 17 | ||||
-rw-r--r-- | harness/src/test/java/com/android/csuite/core/ApkInstallerTest.java | 27 |
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); |