paparazzi
paparazzi copied to clipboard
Caused by: java.lang.UnsatisfiedLinkError: 'long android.os.Trace.nativeGetEnabledTags()'
Description We use molecule library in our project. And unitests for Composable presenter functions we have are failing when adding paparazzi as dependency. The stacktrace is:
Exception in thread "Test worker @coroutine#2" kotlinx.coroutines.CompletionHandlerException: Exception in completion handler InvokeOnCompletion@26723525[job@80b70fd] for "coroutine#4":StandaloneCoroutine{Cancelled}@80b70fd
at kotlinx.coroutines.JobSupport.notifyCompletion(JobSupport.kt:1502)
at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:325)
at kotlinx.coroutines.JobSupport.finalizeFinishingState(JobSupport.kt:242)
at kotlinx.coroutines.JobSupport.tryMakeCompletingSlowPath(JobSupport.kt:910)
at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:867)
at kotlinx.coroutines.JobSupport.makeCompletingOnce$kotlinx_coroutines_core(JobSupport.kt:832)
at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:100)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:169)
at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:112)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
at app.cash.molecule.MoleculeKt$immediateClockFlow$1$1.invokeSuspend(molecule.kt:63)
at app.cash.molecule.MoleculeKt$immediateClockFlow$1$1.invoke(molecule.kt)
at app.cash.molecule.MoleculeKt$immediateClockFlow$1$1.invoke(molecule.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
at app.cash.molecule.MoleculeKt$immediateClockFlow$1.invokeSuspend(molecule.kt:59)
at app.cash.molecule.MoleculeKt$immediateClockFlow$1.invoke(molecule.kt)
at app.cash.molecule.MoleculeKt$immediateClockFlow$1.invoke(molecule.kt)
at kotlinx.coroutines.flow.SafeFlow.collectSafely(Builders.kt:61)
at kotlinx.coroutines.flow.AbstractFlow.collect(Flow.kt:230)
at app.cash.turbine.FlowTurbineKt$test$2$collectJob$1.invokeSuspend(FlowTurbine.kt:309)
at app.cash.turbine.FlowTurbineKt$test$2$collectJob$1.invoke(FlowTurbine.kt)
at app.cash.turbine.FlowTurbineKt$test$2$collectJob$1.invoke(FlowTurbine.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startCoroutineUndispatched(Undispatched.kt:44)
at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:112)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:126)
at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch(Builders.common.kt:56)
at kotlinx.coroutines.BuildersKt.launch(Unknown Source)
at app.cash.turbine.FlowTurbineKt$test$2.invokeSuspend(FlowTurbine.kt:58)
at app.cash.turbine.FlowTurbineKt$test$2.invoke(FlowTurbine.kt)
at app.cash.turbine.FlowTurbineKt$test$2.invoke(FlowTurbine.kt)
at kotlinx.coroutines.intrinsics.UndispatchedKt.startUndispatchedOrReturn(Undispatched.kt:78)
at kotlinx.coroutines.CoroutineScopeKt.coroutineScope(CoroutineScope.kt:264)
at app.cash.turbine.FlowTurbineKt.test-dWUq8MI(FlowTurbine.kt:55)
at app.cash.turbine.FlowTurbineKt.test-dWUq8MI$default(FlowTurbine.kt:51)
at com.privatebanking.feature.buysellopinion.ui.details.DetailsPresenterTest$test opinion details successful load$1.invokeSuspend(DetailsPresenterTest.kt:40)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:280)
at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:85)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:59)
at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:38)
at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
at com.privatebanking.feature.buysellopinion.ui.details.DetailsPresenterTest.test opinion details successful load(DetailsPresenterTest.kt:34)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:108)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:40)
at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:60)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
at jdk.proxy2/jdk.proxy2.$Proxy5.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [app.cash.molecule.GatedFrameClock@28effa3f, CoroutineId(4), "coroutine#4":StandaloneCoroutine{Cancelled}@80b70fd, Dispatchers.Unconfined]
Caused by: java.lang.UnsatisfiedLinkError: 'long android.os.Trace.nativeGetEnabledTags()'
at android.os.Trace.nativeGetEnabledTags(Native Method)
at android.os.Trace.isTagEnabled(Trace.java:163)
at android.os.Trace.beginSection(Trace.java:382)
at androidx.compose.runtime.Trace.beginSection(ActualAndroid.android.kt:31)
at androidx.compose.runtime.ComposerImpl.dispose$runtime_release(Composer.kt:4573)
at androidx.compose.runtime.CompositionImpl.dispose(Composition.kt:631)
at app.cash.molecule.MoleculeKt$launchMolecule$2$2.invoke(molecule.kt:159)
at app.cash.molecule.MoleculeKt$launchMolecule$2$2.invoke(molecule.kt:158)
at kotlinx.coroutines.InvokeOnCompletion.invoke(JobSupport.kt:1385)
at kotlinx.coroutines.JobSupport.notifyCompletion(JobSupport.kt:1497)
... 89 more
Expected item but found Error(UnsatisfiedLinkError)
app.cash.turbine.AssertionError: Expected item but found Error(UnsatisfiedLinkError)
Steps to Reproduce
@Test
fun `test functions`() = runBlocking {
moleculeFlow(mode = RecompositionMode.Immediate) {
flowOf("Text")
}.test {
assertEquals(
"Text",
expectItem()
)
}
}
Expected behavior Expectation is to unit test not to fail when adding paparazzi as dependency
Additional information:
- Paparazzi Version: 1.3.1
- OS: Mac OS Ventura 13.6 (M1 chip Pro chip)
- Compile SDK: 33
- Gradle Version: 8.1.1
- Android Gradle Plugin Version: 8.0.2
Screenshots If applicable, add screenshots to help explain your problem.