Disable registerHandler_toleratesHandlersThatThrow am: aae9726073 am: 94c6304060

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20175013

Change-Id: I80e86137eb09a274090330827f95e97ae2f440bb
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Justin Weir
2022-10-13 15:22:48 +00:00
committed by Automerger Merge Worker

View File

@@ -3,72 +3,72 @@ package com.android.systemui.shared.system
import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestCase
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import java.lang.Thread.UncaughtExceptionHandler
import org.junit.Assert.assertThrows import org.junit.Assert.assertThrows
import org.junit.Before import org.junit.Before
import org.junit.Ignore
import org.junit.Test import org.junit.Test
import org.mockito.Mock import org.mockito.Mock
import org.mockito.Mockito.only
import org.mockito.Mockito.any import org.mockito.Mockito.any
import org.mockito.Mockito.only
import org.mockito.Mockito.verify import org.mockito.Mockito.verify
import org.mockito.Mockito.`when` import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations import org.mockito.MockitoAnnotations
import java.lang.Thread.UncaughtExceptionHandler
@SmallTest @SmallTest
class UncaughtExceptionPreHandlerTest : SysuiTestCase() { class UncaughtExceptionPreHandlerTest : SysuiTestCase() {
private lateinit var preHandlerManager: UncaughtExceptionPreHandlerManager private lateinit var preHandlerManager: UncaughtExceptionPreHandlerManager
@Mock @Mock private lateinit var mockHandler: UncaughtExceptionHandler
private lateinit var mockHandler: UncaughtExceptionHandler
@Mock @Mock private lateinit var mockHandler2: UncaughtExceptionHandler
private lateinit var mockHandler2: UncaughtExceptionHandler
@Before @Before
fun setUp() { fun setUp() {
MockitoAnnotations.initMocks(this) MockitoAnnotations.initMocks(this)
Thread.setUncaughtExceptionPreHandler(null) Thread.setUncaughtExceptionPreHandler(null)
preHandlerManager = UncaughtExceptionPreHandlerManager() preHandlerManager = UncaughtExceptionPreHandlerManager()
}
@Test
fun registerHandler_registersOnceOnly() {
preHandlerManager.registerHandler(mockHandler)
preHandlerManager.registerHandler(mockHandler)
preHandlerManager.handleUncaughtException(Thread.currentThread(), Exception())
verify(mockHandler, only()).uncaughtException(any(), any())
}
@Test
fun registerHandler_setsUncaughtExceptionPreHandler() {
Thread.setUncaughtExceptionPreHandler(null)
preHandlerManager.registerHandler(mockHandler)
assertThat(Thread.getUncaughtExceptionPreHandler()).isNotNull()
}
@Test
fun registerHandler_preservesOriginalHandler() {
Thread.setUncaughtExceptionPreHandler(mockHandler)
preHandlerManager.registerHandler(mockHandler2)
preHandlerManager.handleUncaughtException(Thread.currentThread(), Exception())
verify(mockHandler, only()).uncaughtException(any(), any())
}
@Test
@Ignore
fun registerHandler_toleratesHandlersThatThrow() {
`when`(mockHandler2.uncaughtException(any(), any())).thenThrow(RuntimeException())
preHandlerManager.registerHandler(mockHandler2)
preHandlerManager.registerHandler(mockHandler)
preHandlerManager.handleUncaughtException(Thread.currentThread(), Exception())
verify(mockHandler2, only()).uncaughtException(any(), any())
verify(mockHandler, only()).uncaughtException(any(), any())
}
@Test
fun registerHandler_doesNotSetUpTwice() {
UncaughtExceptionPreHandlerManager().registerHandler(mockHandler2)
assertThrows(IllegalStateException::class.java) {
preHandlerManager.registerHandler(mockHandler)
} }
}
@Test }
fun registerHandler_registersOnceOnly() {
preHandlerManager.registerHandler(mockHandler)
preHandlerManager.registerHandler(mockHandler)
preHandlerManager.handleUncaughtException(Thread.currentThread(), Exception())
verify(mockHandler, only()).uncaughtException(any(), any())
}
@Test
fun registerHandler_setsUncaughtExceptionPreHandler() {
Thread.setUncaughtExceptionPreHandler(null)
preHandlerManager.registerHandler(mockHandler)
assertThat(Thread.getUncaughtExceptionPreHandler()).isNotNull()
}
@Test
fun registerHandler_preservesOriginalHandler() {
Thread.setUncaughtExceptionPreHandler(mockHandler)
preHandlerManager.registerHandler(mockHandler2)
preHandlerManager.handleUncaughtException(Thread.currentThread(), Exception())
verify(mockHandler, only()).uncaughtException(any(), any())
}
@Test
fun registerHandler_toleratesHandlersThatThrow() {
`when`(mockHandler2.uncaughtException(any(), any())).thenThrow(RuntimeException())
preHandlerManager.registerHandler(mockHandler2)
preHandlerManager.registerHandler(mockHandler)
preHandlerManager.handleUncaughtException(Thread.currentThread(), Exception())
verify(mockHandler2, only()).uncaughtException(any(), any())
verify(mockHandler, only()).uncaughtException(any(), any())
}
@Test
fun registerHandler_doesNotSetUpTwice() {
UncaughtExceptionPreHandlerManager().registerHandler(mockHandler2)
assertThrows(IllegalStateException::class.java) {
preHandlerManager.registerHandler(mockHandler)
}
}
}