1 /*
2  * Copyright (C) 2024 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.permissionmultidevice.cts
18 
19 import com.android.compatibility.common.util.SystemUtil
20 import com.android.modules.utils.build.SdkLevel
21 import org.junit.Assert
22 
23 object PackageManagementUtils {
installPackagenull24     fun installPackage(
25         apkPath: String,
26         reinstall: Boolean = false,
27         grantRuntimePermissions: Boolean = false,
28         expectSuccess: Boolean = true,
29         installSource: String? = null
30     ) {
31         val output =
32             SystemUtil.runShellCommandOrThrow(
33                     "pm install${if (SdkLevel.isAtLeastU()) " --bypass-low-target-sdk-block" else ""} " +
34                         "${if (reinstall) " -r" else ""}${
35                         if (grantRuntimePermissions) " -g"
36                         else ""
37                     }${if (installSource != null) " -i $installSource" else ""} $apkPath"
38                 )
39                 .trim()
40 
41         if (expectSuccess) {
42             Assert.assertEquals("Success", output)
43         } else {
44             Assert.assertNotEquals("Success", output)
45         }
46     }
47 
uninstallPackagenull48     fun uninstallPackage(packageName: String, requireSuccess: Boolean = true) {
49         val output = SystemUtil.runShellCommand("pm uninstall $packageName").trim()
50         if (requireSuccess) {
51             Assert.assertEquals("Success", output)
52         }
53     }
54 }
55