amnaredo / test

0 stars 0 forks source link

Print original string when decode a json is failed #155

Open amnaredo opened 2 years ago

amnaredo commented 2 years ago

Currently when upickle fails to decode a json string, it shows such an exception:

Message: upickle.Invalid$Json was thrown. 
Exception: upickle.Invalid$Json 
upickle.json.package$.read(package.scala:11)
upickle.Types$class.read(Types.scala:133)
upickle.default$.read(Api.scala:25)
io.gearpump.integrationtest.minicluster.RestClient.queryStreamingAppDetail(RestClient.scala:113)
io.gearpump.integrationtest.checklist.RestServiceSpec$$anonfun$7$$anonfun$apply$mcV$sp$32.apply$mcV$sp(RestServiceSpec.scala:337)
io.gearpump.integrationtest.checklist.RestServiceSpec$$anonfun$7$$anonfun$apply$mcV$sp$32.apply(RestServiceSpec.scala:320)
io.gearpump.integrationtest.checklist.RestServiceSpec$$anonfun$7$$anonfun$apply$mcV$sp$32.apply(RestServiceSpec.scala:320)
org.scalatest.Transformer$$anonfun$apply$1.apply$mcV$sp(Transformer.scala:22)
org.scalatest.OutcomeOf$class.outcomeOf(OutcomeOf.scala:85)
org.scalatest.OutcomeOf$.outcomeOf(OutcomeOf.scala:104)
org.scalatest.Transformer.apply(Transformer.scala:22)
org.scalatest.Transformer.apply(Transformer.scala:20)
org.scalatest.WordSpecLike$$anon$1.apply(WordSpecLike.scala:953)
org.scalatest.Suite$class.withFixture(Suite.scala:1122)
org.scalatest.WordSpec.withFixture(WordSpec.scala:1881)
org.scalatest.WordSpecLike$class.invokeWithFixture$1(WordSpecLike.scala:950)
org.scalatest.WordSpecLike$$anonfun$runTest$1.apply(WordSpecLike.scala:962)
org.scalatest.WordSpecLike$$anonfun$runTest$1.apply(WordSpecLike.scala:962)
org.scalatest.SuperEngine.runTestImpl(Engine.scala:306)
org.scalatest.WordSpecLike$class.runTest(WordSpecLike.scala:962)
io.gearpump.integrationtest.checklist.RestServiceSpec.org$scalatest$BeforeAndAfterEach$$super$runTest(RestServiceSpec.scala:30)
org.scalatest.BeforeAndAfterEach$class.runTest(BeforeAndAfterEach.scala:255)
io.gearpump.integrationtest.checklist.RestServiceSpec.runTest(RestServiceSpec.scala:30)
org.scalatest.WordSpecLike$$anonfun$runTests$1.apply(WordSpecLike.scala:1021)
org.scalatest.WordSpecLike$$anonfun$runTests$1.apply(WordSpecLike.scala:1021)
org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:413)
org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:401)
scala.collection.immutable.List.foreach(List.scala:381)
org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:390)
org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:427)
org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:401)
scala.collection.immutable.List.foreach(List.scala:381)
org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:401)
org.scalatest.SuperEngine.org$scalatest$SuperEngine$$runTestsInBranch(Engine.scala:396)
org.scalatest.SuperEngine.runTestsImpl(Engine.scala:483)
org.scalatest.WordSpecLike$class.runTests(WordSpecLike.scala:1021)
org.scalatest.WordSpec.runTests(WordSpec.scala:1881)
org.scalatest.Suite$class.run(Suite.scala:1424)
org.scalatest.WordSpec.org$scalatest$WordSpecLike$$super$run(WordSpec.scala:1881)
org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067)
org.scalatest.WordSpecLike$$anonfun$run$1.apply(WordSpecLike.scala:1067)
org.scalatest.SuperEngine.runImpl(Engine.scala:545)
org.scalatest.WordSpecLike$class.run(WordSpecLike.scala:1067)
io.gearpump.integrationtest.checklist.RestServiceSpec.org$scalatest$BeforeAndAfterAll$$super$run(RestServiceSpec.scala:30)
org.scalatest.BeforeAndAfterAll$class.liftedTree1$1(BeforeAndAfterAll.scala:257)
org.scalatest.BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:256)
io.gearpump.integrationtest.checklist.RestServiceSpec.run(RestServiceSpec.scala:30)
org.scalatest.tools.Framework.org$scalatest$tools$Framework$$runSuite(Framework.scala:462)
org.scalatest.tools.Framework$ScalaTestNestedTask.execute(Framework.scala:547)
sbt.TestRunner.runTest$1(TestFramework.scala:76)
sbt.TestRunner.run(TestFramework.scala:85)
sbt.TestFramework$$anon$2$$anonfun$$init$$1$$anonfun$apply$8.apply(TestFramework.scala:202)
sbt.TestFramework$$anon$2$$anonfun$$init$$1$$anonfun$apply$8.apply(TestFramework.scala:202)
sbt.TestFramework$.sbt$TestFramework$$withContextLoader(TestFramework.scala:185)
sbt.TestFramework$$anon$2$$anonfun$$init$$1.apply(TestFramework.scala:202)
sbt.TestFramework$$anon$2$$anonfun$$init$$1.apply(TestFramework.scala:202)
sbt.TestFunction.apply(TestFramework.scala:207)
sbt.Tests$.sbt$Tests$$processRunnable$1(Tests.scala:239)
sbt.Tests$$anonfun$makeSerial$1.apply(Tests.scala:245)
sbt.Tests$$anonfun$makeSerial$1.apply(Tests.scala:245)
sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:44)
sbt.std.Transform$$anon$3$$anonfun$apply$2.apply(System.scala:44)
sbt.std.Transform$$anon$4.work(System.scala:63)
sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:226)
sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
sbt.Execute.work(Execute.scala:235)
sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
sbt.Execute$$anonfun$submit$1.apply(Execute.scala:226)
sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
java.lang.Thread.run(Thread.java:745) 

It will be very helpful, if upickle can print the original json string for a more easier debugging.

ID: 130 Original Author: stanleyxu2005

amnaredo commented 2 years ago

The original string could be huge. You already have the string since you're the one calling upickle.read, feel free to do whatever you want with it yourself =)

Original Author: lihaoyi