Uploaded image for project: 'Realm Kotlin'
  1. Realm Kotlin
  2. RKOTLIN-864

Run unit test at commonTest KMM

      How frequently does the bug occur?

      Always

      Description

      Hello, we have set the exact same classes as in the realm-kotlin example project in order to confirm that we can run unit tests for realm-kotlin.
      The project syncs and runs ok but the commonTest unit tests are always failing. We are running the unit tests for android.

      class ExpressionRepositoryTest {
      
          @Test
          fun insert() {
              val repository = ExpressionRepository()
              val expression = repository.addExpression("a + b")
              assertEquals("a + b", expression.expressionString)
          }
      }
      
      class Expression : RealmObject {
          var expressionString: String = ""
      }
      
      class ExpressionRepository {
      
          val realm: Realm by lazy {
              val configuration = RealmConfiguration.create(schema = setOf(Expression::class))
              Realm.open(configuration)
          }
      
          fun addExpression(expression: String): Expression {
              return realm.writeBlocking {
                  copyToRealm(Expression().apply { expressionString = expression })
              }
          }
      
          fun expressions(): List<Expression> {
              return realm.query<Expression>().find()
          }
      
          fun observeChanges(): Flow<List<Expression>> {
              return realm.query<Expression>().asFlow().map { it.list }
          }
      }
      

      Stacktrace & log output

      Unable to find source-code formatter for language: shell. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
      java.lang.ExceptionInInitializerError
      	at io.realm.kotlin.RealmConfiguration$Builder.<init>(RealmConfiguration.kt:55)
      	at io.realm.kotlin.RealmConfiguration$Companion.create(RealmConfiguration.kt:181)
      	at gr.desquared.kmmsharedmodule.ExpressionRepository$realm$2.invoke(ExpressionRepository.kt:16)
      	at gr.desquared.kmmsharedmodule.ExpressionRepository$realm$2.invoke(ExpressionRepository.kt:15)
      	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
      	at gr.desquared.kmmsharedmodule.ExpressionRepository.getRealm(ExpressionRepository.kt:15)
      	at gr.desquared.kmmsharedmodule.ExpressionRepository.addExpression(ExpressionRepository.kt:21)
      	at gr.desquared.kmmsharedmodule.ExpressionRepositoryTest.insert(OrderDataSourceTest.kt:11)
      	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:110)
      	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:38)
      	at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62)
      	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
      	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:133)
      	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
      	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
      	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
      Caused by: java.lang.NullPointerException: {
              @Suppress("DEP…id.os.Build.CPU_ABI
          } must not be null
      	at io.realm.kotlin.internal.platform.SystemUtilsAndroidKt.<clinit>(SystemUtilsAndroid.kt:16)
      	... 51 more
      

      Can you reproduce the bug?

      Always

      Reproduction Steps

      No response

      Version

      1.9.0

      What Atlas App Services are you using?

      Local Database only

      Are you using encryption?

      No

      Platform OS and version(s)

      KMM with Kotlin 1.8.20

      Build environment

      Android Studio version: Android Studio Flamingo | 2022.2.1 Patch 2
      Android Build Tools version: 7.4.2
      Gradle version: 7.5.1

            Assignee:
            Unassigned Unassigned
            Reporter:
            unitosyncbot Unito Sync Bot
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: