rules_scala icon indicating copy to clipboard operation
rules_scala copied to clipboard

Clean annex related items from test stack traces

Open andyscott opened this issue 7 years ago • 1 comments

We should prune annex items from stack traces.

Current formatted as diff of desired change:

INFO: From Testing //src/test/scala/io/higherkindness/arktika/scalac:ArktikaPhaseChecks:
==================== Test output for //src/test/scala/io/higherkindness/arktika/scalac:ArktikaPh
aseChecks:                                                                                     
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.j
ava:62)                                                                                        
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccess
orImpl.java:45)                                                                                
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.scalacheck.Platform$.newInstance(Platform.scala:66)
        at org.scalacheck.ScalaCheckRunner$BaseTask.<init>(ScalaCheckFramework.scala:57)
        at org.scalacheck.ScalaCheckRunner$$anon$1.<init>(ScalaCheckFramework.scala:88)
        at org.scalacheck.ScalaCheckRunner.rootTask(ScalaCheckFramework.scala:88)
        at org.scalacheck.ScalaCheckRunner.$anonfun$tasks$2(ScalaCheckFramework.scala:47)
        at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:233)
        at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:32)
        at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:29)
        at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:194)
        at scala.collection.TraversableLike.map(TraversableLike.scala:233)
        at scala.collection.TraversableLike.map$(TraversableLike.scala:226)
        at scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:194)
        at org.scalacheck.ScalaCheckRunner.tasks(ScalaCheckFramework.scala:45)
-       at annex.BasicTestRunner.$anonfun$execute$2(TestFrameworkRunner.scala:13)
-       at annex.BasicTestRunner.$anonfun$execute$2$adapted(TestFrameworkRunner.scala:11)
-       at annex.TestHelper$.withRunner(Test.scala:32)
-       at annex.BasicTestRunner.$anonfun$execute$1(TestFrameworkRunner.scala:11)
-       at scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.java:12)
-       at annex.ClassLoader$.withContextClassLoader(ClassLoader.scala:10)
-       at annex.BasicTestRunner.execute(TestFrameworkRunner.scala:11)
-       at annex.TestRunner$.$anonfun$main$10(TestRunner.scala:167)
-       at annex.TestRunner$.$anonfun$main$10$adapted(TestRunner.scala:143)
-       at scala.collection.IndexedSeqOptimized.prefixLengthImpl(IndexedSeqOptimized.scala:37)
-       at scala.collection.IndexedSeqOptimized.forall(IndexedSeqOptimized.scala:42)
-       at scala.collection.IndexedSeqOptimized.forall$(IndexedSeqOptimized.scala:42)
-       at scala.collection.mutable.ArrayBuffer.forall(ArrayBuffer.scala:48)
-       at annex.TestRunner$.main(TestRunner.scala:143)
-       at annex.TestRunner.main(TestRunner.scala)
Caused by: java.lang.NullPointerException
        at scala.tools.util.PathResolver$Calculated$.basis(PathResolver.scala:246)
        at scala.tools.util.PathResolver$Calculated$.containers$lzycompute(PathResolver.scala:25
7)                                                                                             
        at scala.tools.util.PathResolver$Calculated$.containers(PathResolver.scala:257)
        at scala.tools.util.PathResolver.containers(PathResolver.scala:273)
        at scala.tools.util.PathResolver.computeResult(PathResolver.scala:295)
        at scala.tools.util.PathResolver.result(PathResolver.scala:278)
        at scala.tools.util.PathResolver.resultAsURLs(PathResolver.scala:290)
        at scala.tools.reflect.ReflectMain$.classloaderFromSettings(ReflectMain.scala:13)
        at scala.tools.reflect.ReflectMain$.newCompiler(ReflectMain.scala:17)
        at io.higherkindness.arktika.scalac.ArktikaPhaseChecks.<init>(ArktikaPhaseChecks.scala:1
0)                                                                                             
        ... 32 more

andyscott avatar Dec 02 '18 16:12 andyscott

That is usually up to the test framework.

For example, the existing //test-framework/classpath:bad shows a truncated stack trace.

FAIL: //test-frameworks/classpath:bad (see /home/paul/.cache/bazel/_bazel_paul/f84776a0618f0e3dcf1c416f8fd69d56/execroot/__main__/bazel-out/k8-fastbuild/testlogs/test-frameworks/classpath/bad/test.log)
INFO: From Testing //test-frameworks/classpath:bad:
==================== Test output for //test-frameworks/classpath:bad:
org.specs2.runner.Specs2Framework: 1 tests

Test
    Test
    
    Classpath should
      ! load class
       java.lang.ClassNotFoundException: sbt.internal.inc.schema.APIsFile (CLassLoaders.scala:20)
    higherkindness.rules_scala.common.sbt_testing.ClassLoaders$$anon$1.findClass(CLassLoaders.scala:20)
    Test$.$anonfun$new$2(Test.scala:7)
    
    
    
    Total for specification Test
    Finished in 575 ms
1 example, 0 failure, 1 error
    

1 failure:
    Test

In your example, I believe the test framework has not caught the error and reported it via the usual test mechanisms, but rather allowed it to propagate all the way to main().

And in the case of a runaway error, I would not want to prune the stack trace at all.

pauldraper avatar Oct 11 '19 07:10 pauldraper