com-lihaoyi / utest

A simple testing framework for Scala

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

NullPointerException when test returns null

tanin47 opened this issue · comments

Here's the full stacktrace:

[error] java.lang.NullPointerException
[error]         at utest.framework.Formatter.formatValue(Formatter.scala:19)
[error]         at utest.framework.Formatter.formatValue$(Formatter.scala:19)
[error]         at utest.runner.Framework.formatValue(Framework.scala:10)
[error]         at utest.framework.Formatter.prettyTruncate(Formatter.scala:145)
[error]         at utest.framework.Formatter.wrapLabel(Formatter.scala:165)
[error]         at utest.framework.Formatter.wrapLabel$(Formatter.scala:156)
[error]         at utest.runner.Framework.wrapLabel(Framework.scala:10)
[error]         at utest.framework.Formatter.formatSingle(Formatter.scala:175)
[error]         at utest.framework.Formatter.formatSingle$(Formatter.scala:174)
[error]         at utest.runner.Framework.formatSingle(Framework.scala:10)
[error]         at utest.runner.BaseRunner.$anonfun$runSuite$6(BaseRunner.scala:139)
[error]         at utest.runner.BaseRunner.$anonfun$runSuite$6$adapted(BaseRunner.scala:138)
[error]         at utest.TestRunner$.$anonfun$runAsync$9(TestRunner.scala:95)
[error]         at scala.util.Success.$anonfun$map$1(Try.scala:251)
[error]         at scala.util.Success.map(Try.scala:209)
[error]         at scala.concurrent.Future.$anonfun$map$1(Future.scala:288)
[error]         at scala.concurrent.impl.Promise.liftedTree1$1(Promise.scala:29)
[error]         at scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:29)
[error]         at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)
[error]         at utest.framework.ExecutionContext$RunNow$.execute(ExecutionContext.scala:16)
[error]         at scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:68)
[error]         at scala.concurrent.impl.Promise$DefaultPromise.dispatchOrAddCallback(Promise.scala:312)
[error]         at scala.concurrent.impl.Promise$DefaultPromise.onComplete(Promise.scala:303)
[error]         at scala.concurrent.impl.Promise.transform(Promise.scala:29)
[error]         at scala.concurrent.impl.Promise.transform$(Promise.scala:27)
[error]         at scala.concurrent.impl.Promise$DefaultPromise.transform(Promise.scala:183)
[error]         at scala.concurrent.Future.map(Future.scala:288)
[error]         at scala.concurrent.Future.map$(Future.scala:288)
[error]         at scala.concurrent.impl.Promise$DefaultPromise.map(Promise.scala:183)
[error]         at utest.TestRunner$.$anonfun$runAsync$2(TestRunner.scala:94)
[error]         at utest.TestRunner$.evaluateFutureTree(TestRunner.scala:171)
[error]         at utest.TestRunner$.$anonfun$evaluateFutureTree$2(TestRunner.scala:174)
[error]         at scala.concurrent.Future$.$anonfun$traverse$1(Future.scala:845)
[error]         at scala.collection.IndexedSeqOptimized.foldLeft(IndexedSeqOptimized.scala:56)
[error]         at scala.collection.IndexedSeqOptimized.foldLeft$(IndexedSeqOptimized.scala:64)
[error]         at scala.collection.mutable.ArrayBuffer.foldLeft(ArrayBuffer.scala:48)
[error]         at scala.concurrent.Future$.traverse(Future.scala:845)
[error]         at utest.TestRunner$.evaluateFutureTree(TestRunner.scala:174)
[error]         at utest.TestRunner$.runAsync(TestRunner.scala:99)
[error]         at utest.runner.BaseRunner.runSuite(BaseRunner.scala:160)
[error]         at utest.runner.BaseRunner.$anonfun$makeTask$1(BaseRunner.scala:171)
[error]         at utest.runner.Task.execute(Task.scala:20)
[error]         at sbt.TestRunner.runTest$1(TestFramework.scala:106)
[error]         at sbt.TestRunner.run(TestFramework.scala:117)
[error]         at sbt.TestFramework$$anon$2$$anonfun$$lessinit$greater$1.$anonfun$apply$1(TestFramework.scala:262)
[error]         at sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:233)
[error]         at sbt.TestFramework$$anon$2$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:262)
[error]         at sbt.TestFramework$$anon$2$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:262)
[error]         at sbt.TestFunction.apply(TestFramework.scala:271)
[error]         at sbt.Tests$.$anonfun$toTask$1(Tests.scala:281)
[error]         at sbt.std.Transform$$anon$3.$anonfun$apply$2(System.scala:46)
[error]         at sbt.std.Transform$$anon$4.work(System.scala:66)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:262)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]         at sbt.Execute.work(Execute.scala:271)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:262)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:174)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:36)
[error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]         at java.lang.Thread.run(Thread.java:748)
[error] Could not run test givers.i18n.CompilerSpec: java.lang.NullPointerException
[info] EndTestGroupErrorEvent(givers.i18n.CompilerSpec, null
[info] utest.framework.Formatter.formatValue(Formatter.scala:19)
[info] utest.framework.Formatter.formatValue$(Formatter.scala:19)
[info] utest.runner.Framework.formatValue(Framework.scala:10)
[info] utest.framework.Formatter.prettyTruncate(Formatter.scala:145)
[info] utest.framework.Formatter.wrapLabel(Formatter.scala:165)
[info] utest.framework.Formatter.wrapLabel$(Formatter.scala:156)
[info] utest.runner.Framework.wrapLabel(Framework.scala:10)
[info] utest.framework.Formatter.formatSingle(Formatter.scala:175)
[info] utest.framework.Formatter.formatSingle$(Formatter.scala:174)
[info] utest.runner.Framework.formatSingle(Framework.scala:10)
[info] utest.runner.BaseRunner.$anonfun$runSuite$6(BaseRunner.scala:139)
[info] utest.runner.BaseRunner.$anonfun$runSuite$6$adapted(BaseRunner.scala:138)
[info] utest.TestRunner$.$anonfun$runAsync$9(TestRunner.scala:95)
[info] scala.util.Success.$anonfun$map$1(Try.scala:251)
[info] scala.util.Success.map(Try.scala:209)
[info] scala.concurrent.Future.$anonfun$map$1(Future.scala:288)
[info] scala.concurrent.impl.Promise.liftedTree1$1(Promise.scala:29)
[info] scala.concurrent.impl.Promise.$anonfun$transform$1(Promise.scala:29)
[info] scala.concurrent.impl.CallbackRunnable.run(Promise.scala:60)
[info] utest.framework.ExecutionContext$RunNow$.execute(ExecutionContext.scala:16)
[info] scala.concurrent.impl.CallbackRunnable.executeWithValue(Promise.scala:68)
[info] scala.concurrent.impl.Promise$DefaultPromise.dispatchOrAddCallback(Promise.scala:312)
[info] scala.concurrent.impl.Promise$DefaultPromise.onComplete(Promise.scala:303)
[info] scala.concurrent.impl.Promise.transform(Promise.scala:29)
[info] scala.concurrent.impl.Promise.transform$(Promise.scala:27)
[info] scala.concurrent.impl.Promise$DefaultPromise.transform(Promise.scala:183)
[info] scala.concurrent.Future.map(Future.scala:288)
[info] scala.concurrent.Future.map$(Future.scala:288)
[info] scala.concurrent.impl.Promise$DefaultPromise.map(Promise.scala:183)
[info] utest.TestRunner$.$anonfun$runAsync$2(TestRunner.scala:94)
[info] utest.TestRunner$.evaluateFutureTree(TestRunner.scala:171)
[info] utest.TestRunner$.$anonfun$evaluateFutureTree$2(TestRunner.scala:174)
[info] scala.concurrent.Future$.$anonfun$traverse$1(Future.scala:845)
[info] scala.collection.IndexedSeqOptimized.foldLeft(IndexedSeqOptimized.scala:56)
[info] scala.collection.IndexedSeqOptimized.foldLeft$(IndexedSeqOptimized.scala:64)
[info] scala.collection.mutable.ArrayBuffer.foldLeft(ArrayBuffer.scala:48)
[info] scala.concurrent.Future$.traverse(Future.scala:845)
[info] utest.TestRunner$.evaluateFutureTree(TestRunner.scala:174)
[info] utest.TestRunner$.runAsync(TestRunner.scala:99)
[info] utest.runner.BaseRunner.runSuite(BaseRunner.scala:160)
[info] utest.runner.BaseRunner.$anonfun$makeTask$1(BaseRunner.scala:171)
[info] utest.runner.Task.execute(Task.scala:20)
[info] sbt.TestRunner.runTest$1(TestFramework.scala:106)
[info] sbt.TestRunner.run(TestFramework.scala:117)
[info] sbt.TestFramework$$anon$2$$anonfun$$lessinit$greater$1.$anonfun$apply$1(TestFramework.scala:262)
[info] sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:233)
[info] sbt.TestFramework$$anon$2$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:262)
[info] sbt.TestFramework$$anon$2$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:262)
[info] sbt.TestFunction.apply(TestFramework.scala:271)
[info] sbt.Tests$.$anonfun$toTask$1(Tests.scala:281)
[info] sbt.std.Transform$$anon$3.$anonfun$apply$2(System.scala:46)
[info] sbt.std.Transform$$anon$4.work(System.scala:66)
[info] sbt.Execute.$anonfun$submit$2(Execute.scala:262)
[info] sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[info] sbt.Execute.work(Execute.scala:271)
[info] sbt.Execute.$anonfun$submit$1(Execute.scala:262)
[info] sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:174)
[info] sbt.CompletionService$$anon$2.call(CompletionService.scala:36)
[info] java.util.concurrent.FutureTask.run(FutureTask.java:266)
[info] java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[info] java.util.concurrent.FutureTask.run(FutureTask.java:266)
[info] java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[info] java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[info] java.lang.Thread.run(Thread.java:748))
[error] java.lang.NullPointerException
[error]         at sbt.JUnitXmlTestsListener$TestSuite.$anonfun$stop$2(JUnitXmlTestsListener.scala:93)
[error]         at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234)
[error]         at scala.collection.immutable.List.foreach(List.scala:389)
[error]         at scala.collection.generic.TraversableForwarder.foreach(TraversableForwarder.scala:35)
[error]         at scala.collection.generic.TraversableForwarder.foreach$(TraversableForwarder.scala:35)
[error]         at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:44)
[error]         at scala.collection.TraversableLike.map(TraversableLike.scala:234)
[error]         at scala.collection.TraversableLike.map$(TraversableLike.scala:227)
[error]         at scala.collection.AbstractTraversable.map(Traversable.scala:104)
[error]         at sbt.JUnitXmlTestsListener$TestSuite.stop(JUnitXmlTestsListener.scala:89)
[error]         at sbt.JUnitXmlTestsListener.writeSuite(JUnitXmlTestsListener.scala:197)
[error]         at sbt.JUnitXmlTestsListener.endGroup(JUnitXmlTestsListener.scala:178)
[error]         at sbt.TestRunner.$anonfun$run$8(TestFramework.scala:122)
[error]         at sbt.TestRunner.$anonfun$run$8$adapted(TestFramework.scala:122)
[error]         at sbt.TestFramework$.$anonfun$safeForeach$1(TestFramework.scala:143)
[error]         at sbt.TestFramework$.$anonfun$safeForeach$1$adapted(TestFramework.scala:142)
[error]         at scala.collection.Iterator.foreach(Iterator.scala:929)
[error]         at scala.collection.Iterator.foreach$(Iterator.scala:929)
[error]         at scala.collection.AbstractIterator.foreach(Iterator.scala:1417)
[error]         at scala.collection.IterableLike.foreach(IterableLike.scala:71)
[error]         at scala.collection.IterableLike.foreach$(IterableLike.scala:70)
[error]         at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
[error]         at sbt.TestFramework$.safeForeach(TestFramework.scala:142)
[error]         at sbt.TestRunner.safeListenersCall(TestFramework.scala:128)
[error]         at sbt.TestRunner.run(TestFramework.scala:122)
[error]         at sbt.TestFramework$$anon$2$$anonfun$$lessinit$greater$1.$anonfun$apply$1(TestFramework.scala:262)
[error]         at sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:233)
[error]         at sbt.TestFramework$$anon$2$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:262)
[error]         at sbt.TestFramework$$anon$2$$anonfun$$lessinit$greater$1.apply(TestFramework.scala:262)
[error]         at sbt.TestFunction.apply(TestFramework.scala:271)
[error]         at sbt.Tests$.$anonfun$toTask$1(Tests.scala:281)
[error]         at sbt.std.Transform$$anon$3.$anonfun$apply$2(System.scala:46)
[error]         at sbt.std.Transform$$anon$4.work(System.scala:66)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:262)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]         at sbt.Execute.work(Execute.scala:271)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:262)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:174)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:36)
[error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]         at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error]         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error]         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error]         at java.lang.Thread.run(Thread.java:748)
[error] java.lang.NullPointerException

The below code reproduces it:

object CompilerSpec extends BaseSpec {
  val tests = Tests {
    'default - {
      null
    }
  }
}

I didn't intend to return null in a test. But my last statement in the test was Mockito's verify, which seemed to returns null; and that caused the exception.

I was using the version 0.6.3.

I wonder how we can fix it. Thank you.

This has been fixed in 0.6.4.
See 3a4f838 & a291329