etorreborre / specs2

Software Specifications for Scala
http://specs2.org
Other
734 stars 215 forks source link

Interpolated test exception #775

Closed melgenek closed 5 years ago

melgenek commented 5 years ago

Hi!

I have got a weird exception after upgrading specs2 to 4.7.1. It is reproducible only with scala 2.11. Version 4.5.1+2.11 works fine, 4.7.1+2.12 as well.

The test can be found here https://github.com/melgenek/iglu-scala-core/blob/issue_37_specs2_4.7.1/src/test/scala/com/snowplowanalytics/iglu/core/SchemaListSpec.scala

Stacktrace:

Exception in thread "specs2-4" java.lang.AbstractMethodError: org.specs2.text.Interpolated.scala$util$parsing$combinator$Parsers$$lastNoSuccessVar()Lscala/util/DynamicVariable;
        at scala.util.parsing.combinator.Parsers$NoSuccess.<init>(Parsers.scala:165)
        at scala.util.parsing.combinator.Parsers$Failure.<init>(Parsers.scala:193)
        at scala.util.parsing.combinator.RegexParsers$$anon$1.apply(RegexParsers.scala:99)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$flatMap$1.apply(Parsers.scala:234)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$flatMap$1.apply(Parsers.scala:234)
        at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:217)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$flatMap$1.apply(Parsers.scala:234)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$flatMap$1.apply(Parsers.scala:234)
        at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:217)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$flatMap$1.apply(Parsers.scala:234)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$flatMap$1.apply(Parsers.scala:234)
        at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:217)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$map$1.apply(Parsers.scala:237)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$map$1.apply(Parsers.scala:237)
        at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:217)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1.apply(Parsers.scala:249)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1.apply(Parsers.scala:249)
        at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:217)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1.apply(Parsers.scala:249)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1.apply(Parsers.scala:249)
        at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:217)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1.apply(Parsers.scala:249)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1.apply(Parsers.scala:249)
        at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:217)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1.apply(Parsers.scala:249)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1.apply(Parsers.scala:249)
        at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:217)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1.apply(Parsers.scala:249)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1.apply(Parsers.scala:249)
        at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:217)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1.apply(Parsers.scala:249)
        at scala.util.parsing.combinator.Parsers$Parser$$anonfun$append$1.apply(Parsers.scala:249)
        at scala.util.parsing.combinator.Parsers$$anon$3.apply(Parsers.scala:217)
        at org.specs2.text.InterpolatedParsers$class.interpolate(InterpolatedParsers.scala:10)
        at org.specs2.text.Interpolated.interpolate(Interpolated.scala:10)
        at org.specs2.text.Interpolated$$anonfun$expressions$1.apply(Interpolated.scala:18)
        at org.specs2.text.Interpolated$$anonfun$expressions$1.apply(Interpolated.scala:13)
        at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:124)
        at scala.collection.immutable.List.foldLeft(List.scala:84)
        at org.specs2.text.Interpolated.expressions(Interpolated.scala:13)
        at org.specs2.specification.create.S2StringContextCreation$class.s2(S2StringContext.scala:184)
        at org.specs2.Specification.s2(Specification.scala:19)
        at com.snowplowanalytics.iglu.core.SchemaKeySpec$$anonfun$is$1.apply(SchemaKeySpec.scala:21)
        at com.snowplowanalytics.iglu.core.SchemaKeySpec$$anonfun$is$1.apply(SchemaKeySpec.scala:21)
        at org.specs2.specification.core.SpecStructure.fragments$lzycompute(SpecStructure.scala:26)
        at org.specs2.specification.core.SpecStructure.fragments(SpecStructure.scala:26)
        at org.specs2.specification.core.SpecStructure$$anonfun$1.apply(SpecStructure.scala:29)
        at org.specs2.specification.core.SpecStructure$$anonfun$1.apply(SpecStructure.scala:29)
        at org.specs2.specification.core.SpecStructure.fragments$lzycompute(SpecStructure.scala:26)
        at org.specs2.specification.core.SpecStructure.fragments(SpecStructure.scala:26)
        at org.specs2.specification.core.SpecStructure$$anonfun$2.apply(SpecStructure.scala:30)
        at org.specs2.specification.core.SpecStructure$$anonfun$2.apply(SpecStructure.scala:30)
        at org.specs2.specification.core.SpecStructure.fragments$lzycompute(SpecStructure.scala:26)
        at org.specs2.specification.core.SpecStructure.fragments(SpecStructure.scala:26)
        at org.specs2.specification.core.SpecStructure$$anonfun$2.apply(SpecStructure.scala:30)
        at org.specs2.specification.core.SpecStructure$$anonfun$2.apply(SpecStructure.scala:30)
        at org.specs2.specification.core.SpecStructure.fragments$lzycompute(SpecStructure.scala:26)
        at org.specs2.specification.core.SpecStructure.fragments(SpecStructure.scala:26)
        at org.specs2.specification.core.SpecStructure.contents(SpecStructure.scala:28)
        at org.specs2.reporter.Reporter$$anonfun$report$1.apply(Reporter.scala:43)
        at org.specs2.reporter.Reporter$$anonfun$report$1.apply(Reporter.scala:36)
        at org.specs2.runner.Runner$.runSpecStructure(Runner.scala:109)
        at org.specs2.runner.SbtTask$$anonfun$org$specs2$runner$SbtTask$$specificationRun$1.apply(SbtRunner.scala:183)
        at org.specs2.runner.SbtTask$$anonfun$org$specs2$runner$SbtTask$$specificationRun$1.apply(SbtRunner.scala:182)
        at org.specs2.control.eff.Arrs.go$1(Eff.scala:383)
        at org.specs2.control.eff.Arrs.apply(Eff.scala:399)
        at org.specs2.control.eff.Interpret$$anonfun$go$1$5.apply(Interpret.scala:198)
        at org.specs2.control.eff.Interpret$$anonfun$go$1$5.apply(Interpret.scala:198)
        at org.specs2.control.eff.Arrs.go$1(Eff.scala:383)
        at org.specs2.control.eff.Arrs.apply(Eff.scala:399)
        at org.specs2.control.eff.CollectedUnions$$anonfun$othersEff$1.apply(Unions.scala:97)
        at org.specs2.control.eff.CollectedUnions$$anonfun$othersEff$1.apply(Unions.scala:97)
        at org.specs2.control.eff.Arrs.go$1(Eff.scala:386)
        at org.specs2.control.eff.Arrs.apply(Eff.scala:399)
        at org.specs2.control.eff.Arrs.apply(Eff.scala:348)
        at org.specs2.control.eff.CollectedUnions$$anonfun$continuation$1.apply(Unions.scala:84)
        at org.specs2.control.eff.CollectedUnions$$anonfun$continuation$1.apply(Unions.scala:84)
        at org.specs2.control.eff.Arrs.go$1(Eff.scala:383)
        at org.specs2.control.eff.Arrs.apply(Eff.scala:399)
        at org.specs2.control.eff.Interpret$$anon$1$$anonfun$onEffect$1.apply(Interpret.scala:53)
        at org.specs2.control.eff.Interpret$$anon$1$$anonfun$onEffect$1.apply(Interpret.scala:53)
        at org.specs2.fp.EitherOps$.bimap$extension(EitherSyntax.scala:82)
        at org.specs2.control.eff.Interpret$$anon$1.onEffect(Interpret.scala:53)
        at org.specs2.control.eff.Interpret$$anon$1.onApplicativeEffect(Interpret.scala:61)
        at org.specs2.control.eff.Interpret$$anon$1.onApplicativeEffect(Interpret.scala:45)
        at org.specs2.control.eff.Interpret$class.go$1(Interpret.scala:200)
        at org.specs2.control.eff.Interpret$class.interpretLoop(Interpret.scala:207)
        at org.specs2.control.eff.Interpret$.interpretLoop(Interpret.scala:635)
        at org.specs2.control.eff.Interpret$class.interpret(Interpret.scala:71)
        at org.specs2.control.eff.Interpret$.interpret(Interpret.scala:635)
        at org.specs2.control.eff.Interpret$class.interpret1(Interpret.scala:78)
        at org.specs2.control.eff.Interpret$.interpret1(Interpret.scala:635)
        at org.specs2.control.eff.ErrorInterpretation$class.runError(ErrorEffect.scala:87)
        at org.specs2.control.eff.ErrorEffect$.runError(ErrorEffect.scala:187)
        at org.specs2.control.eff.syntax.error$ErrorEffectOps.runError(error.scala:14)
        at org.specs2.control.ExecuteActions$class.executeActionFuture(ExecuteActions.scala:36)
        at org.specs2.control.ExecuteActions$.executeActionFuture(ExecuteActions.scala:93)
        at org.specs2.runner.SbtTask$$anonfun$executeFuture$2.apply(SbtRunner.scala:146)
        at org.specs2.runner.SbtTask$$anonfun$executeFuture$2.apply(SbtRunner.scala:142)
        at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:253)
        at scala.concurrent.Future$$anonfun$flatMap$1.apply(Future.scala:251)
        at scala.concurrent.impl.CallbackRunnable.run(Promise.scala:36)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
etorreborre commented 5 years ago

This looks like an incompatibility in libraries. You probably have an incompatible scala-parser-combinators library version on your path. You can diagnose that by with the dependencies plugin: https://github.com/jrudolph/sbt-dependency-graph (if you can make it work with sbt 1.3.x from master).

melgenek commented 5 years ago

Thank you a lot! Json4s also has a transitive dependency on older combinators lib.