Merge "Fix PackageSetInstallerTest for multi-user" am: 7fe01040b2
Original change: https://android-review.googlesource.com/c/platform/cts/+/1441531
Change-Id: I58627748e542064803fa02753efe2d4c0aa095b8
diff --git a/hostsidetests/appsecurity/OWNERS b/hostsidetests/appsecurity/OWNERS
index 6ad0c7a..cbfad62 100644
--- a/hostsidetests/appsecurity/OWNERS
+++ b/hostsidetests/appsecurity/OWNERS
@@ -26,9 +26,9 @@
per-file ListeningPortsTest.java = cbrubaker@google.com
per-file MajorVersionTest.java = toddke@google.com
per-file OverlayHostTest.java = rtmitchell@google.com
-per-file PackageResolutionHostTest.java = toddke@google.com
-per-file PackageVisibilityTest.java = toddke@google.com
+per-file Package* = chiuwinson@google.com,patb@google.com,toddke@google.com
per-file PermissionsHostTest.java = moltmann@google.com
+per-file Pkg* = chiuwinson@google.com,patb@google.com,toddke@google.com
per-file PkgInstallSignatureVerificationTest.java = cbrubaker@google.com
per-file PrivilegedUpdateTests.java = toddke@google.com
per-file ReviewPermissionHelper = moltmann@google.com
diff --git a/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageSetInstallerTest.kt b/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageSetInstallerTest.kt
index 923810c..ba62f2f 100644
--- a/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageSetInstallerTest.kt
+++ b/hostsidetests/appsecurity/src/android/appsecurity/cts/PackageSetInstallerTest.kt
@@ -30,7 +30,6 @@
import android.cts.host.utils.DeviceJUnit4ClassRunnerWithParameters
import android.cts.host.utils.DeviceJUnit4Parameterized
import com.google.common.truth.Truth.assertThat
-import com.google.common.truth.Truth.assertWithMessage
import org.junit.After
import org.junit.Before
import org.junit.Test
@@ -198,8 +197,7 @@
}
private fun assertPermission(granted: Boolean, permission: String) {
- assertThat(device.executeShellCommand("dumpsys package $TARGET_PKG | grep $permission"))
- .contains("$permission: granted=$granted")
+ assertThat(getPermissionString(permission)).contains("granted=$granted")
}
private fun grantPermission(permission: String) {
@@ -211,11 +209,7 @@
}
private fun assertGrantState(state: GrantState, permission: String) {
- val output = device.executeShellCommand(
- "dumpsys package $TARGET_PKG | grep \"$permission: granted\"").trim()
-
- // Make sure only the expected output line is returned
- assertWithMessage(output).that(output.lines().size).isEqualTo(1)
+ val output = getPermissionString(permission)
when (state) {
GrantState.TRUE -> {
@@ -238,6 +232,18 @@
}
}
+ private fun getPermissionString(permission: String) =
+ device.executeShellCommand("dumpsys package $TARGET_PKG")
+ .lineSequence()
+ .dropWhile { !it.startsWith("Packages:") } // Wait for package header
+ .drop(1) // Drop the package header itself
+ .takeWhile { it.isEmpty() || it.first().isWhitespace() } // Until next header
+ .dropWhile { !it.trim().startsWith("User $mPrimaryUserId:") } // Find user
+ .drop(1) // Drop the user header itself
+ .takeWhile { !it.trim().startsWith("User") } // Until next user
+ .filter { it.contains("$permission: granted=") }
+ .single()
+
enum class GrantState {
// Granted in full, unrestricted
TRUE,