Skip to content

Instantly share code, notes, and snippets.

@benhutchison
Created April 18, 2018 02:16
Show Gist options
  • Save benhutchison/192f1e380a3b958464477fc607b04929 to your computer and use it in GitHub Desktop.
Save benhutchison/192f1e380a3b958464477fc607b04929 to your computer and use it in GitHub Desktop.
Eff-CatsEffect Async lawbreaker (condensed edit)
> cats/test
[info] Compiling 1 Scala source to /Users/ben/others-code/eff-cats/cats/target/scala-2.12/test-classes...
[info] io
[info]
[info] + IO effects can work as normal values
[info] + IO effects can be attempted
[info] + IO effects are stacksafe with recursion
[info]
[info] + Async boundaries can be introduced between computations
[info] + IO effect is stacksafe with traverseA
[info] IO effect is a lawful Async async laws must hold for Eff
[info] + async.ap consistent with product + map
[info] + async.applicative homomorphism
[info] + async.applicative identity
[info] + async.applicative interchange
[info] + async.applicative map
[info] + async.applicative unit
[info] + async.applicativeError attempt consistent with attemptT
[info] + async.applicativeError attempt fromEither consistent with pure
[info] + async.applicativeError handle
[info] + async.applicativeError handleError consistent with recover
[info] + async.applicativeError handleError pure
[info] + async.applicativeError handleErrorWith consistent with recoverWith
[info] + async.applicativeError handleErrorWith pure
[info] + async.applicativeError handleWith
[info] + async.applicativeError onError pure
[error] ! async.applicativeError onError raise
[error] java.lang.Error: Exception raised on property evaluation.
[error] > ARG_0: Pure(2147483647,Last(None))
[error] > ARG_1: java.lang.Error
[error] > ARG_2: Pure((),Last(None))
[error] > Exception: java.lang.Error: null (Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority.$anonfun$arbThrowable$1(Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority$$Lambda$231/1765791911.apply(Unknown Source)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary$lzycompute(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary(Arbitrary.scala:74)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary$(Arbitrary.scala:74)
[error] org.scalacheck.Arbitrary$.arbitrary(Arbitrary.scala:61)
[error] org.scalacheck.Prop$.forAll(Prop.scala:862)
[error] cats.effect.laws.discipline.SyncTests$$anon$2.<init>(SyncTests.scala:65)
[error] cats.effect.laws.discipline.SyncTests.sync(SyncTests.scala:57)
[error] cats.effect.laws.discipline.SyncTests.sync$(SyncTests.scala:31)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.sync(AsyncTests.scala:70)
[error] cats.effect.laws.discipline.AsyncTests$$anon$2.<init>(AsyncTests.scala:59)
[error] cats.effect.laws.discipline.AsyncTests.async(AsyncTests.scala:56)
[error] cats.effect.laws.discipline.AsyncTests.async$(AsyncTests.scala:30)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.async(AsyncTests.scala:70)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.e6(IOEffectSpec.scala:99)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.is(IOEffectSpec.scala:36)
[info]
[info] + async.applicativeError pure attempt
[info] + async.applicativeError raiseError attempt
[info] + async.applicativeError recover consistent with recoverWith
[info] + async.apply composition
[error] ! async.async left is raiseError
[error] java.lang.Error: Exception raised on property evaluation.
[error] > ARG_0: java.lang.Error: null
[error] > Exception: java.lang.Error: null (Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority.$anonfun$arbThrowable$1(Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority$$Lambda$231/1765791911.apply(Unknown Source)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary$lzycompute(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary(Arbitrary.scala:74)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary$(Arbitrary.scala:74)
[error] org.scalacheck.Arbitrary$.arbitrary(Arbitrary.scala:61)
[error] org.scalacheck.Prop$.forAll(Prop.scala:862)
[error] cats.effect.laws.discipline.SyncTests$$anon$2.<init>(SyncTests.scala:65)
[error] cats.effect.laws.discipline.SyncTests.sync(SyncTests.scala:57)
[error] cats.effect.laws.discipline.SyncTests.sync$(SyncTests.scala:31)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.sync(AsyncTests.scala:70)
[error] cats.effect.laws.discipline.AsyncTests$$anon$2.<init>(AsyncTests.scala:59)
[error] cats.effect.laws.discipline.AsyncTests.async(AsyncTests.scala:56)
[error] cats.effect.laws.discipline.AsyncTests.async$(AsyncTests.scala:30)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.async(AsyncTests.scala:70)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.e6(IOEffectSpec.scala:99)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.is(IOEffectSpec.scala:36)
[info]
[info] + async.async right is pure
[info] + async.bind suspends evaluation
[info] + async.covariant composition
[info] + async.covariant identity
[info] + async.delay constant is pure
[info] + async.flatMap associativity
[info] + async.flatMap consistent apply
[info] + async.flatMap from tailRecM consistency
[info] + async.invariant composition
[info] + async.invariant identity
[info] + async.map flatMap coherence
[info] + async.map suspends evaluation
[info] + async.map2/map2Eval consistency
[info] + async.map2/product-map consistency
[info] + async.monad left identity
[info] + async.monad right identity
[info] + async.monadError adaptError pure
[error] ! async.monadError adaptError raise
[error] java.lang.Error: Exception raised on property evaluation.
[error] > ARG_0: java.lang.Error
[error] > ARG_1: org.scalacheck.GenArities$$Lambda$948/1840134495@18a83a0
[error] > Exception: java.lang.Error: null (Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority.$anonfun$arbThrowable$1(Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority$$Lambda$231/1765791911.apply(Unknown Source)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary$lzycompute(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary(Arbitrary.scala:74)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary$(Arbitrary.scala:74)
[error] org.scalacheck.Arbitrary$.arbitrary(Arbitrary.scala:61)
[error] org.scalacheck.Prop$.forAll(Prop.scala:862)
[error] cats.effect.laws.discipline.SyncTests$$anon$2.<init>(SyncTests.scala:65)
[error] cats.effect.laws.discipline.SyncTests.sync(SyncTests.scala:57)
[error] cats.effect.laws.discipline.SyncTests.sync$(SyncTests.scala:31)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.sync(AsyncTests.scala:70)
[error] cats.effect.laws.discipline.AsyncTests$$anon$2.<init>(AsyncTests.scala:59)
[error] cats.effect.laws.discipline.AsyncTests.async(AsyncTests.scala:56)
[error] cats.effect.laws.discipline.AsyncTests.async$(AsyncTests.scala:30)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.async(AsyncTests.scala:70)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.e6(IOEffectSpec.scala:99)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.is(IOEffectSpec.scala:36)
[info]
[error] ! async.monadError ensure consistency
[error] java.lang.Exception: Exception raised on property evaluation.
[error] > ARG_0: Pure(-1515221092,Last(None))
[error] > ARG_1: java.lang.Exception
[error] > ARG_2: org.scalacheck.GenArities$$Lambda$948/1840134495@77ecf0f5
[error] > Exception: java.lang.Exception: null (Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority.$anonfun$arbThrowable$1(Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority$$Lambda$231/1765791911.apply(Unknown Source)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary$lzycompute(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary(Arbitrary.scala:74)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary$(Arbitrary.scala:74)
[error] org.scalacheck.Arbitrary$.arbitrary(Arbitrary.scala:61)
[error] org.scalacheck.Prop$.forAll(Prop.scala:862)
[error] cats.effect.laws.discipline.SyncTests$$anon$2.<init>(SyncTests.scala:65)
[error] cats.effect.laws.discipline.SyncTests.sync(SyncTests.scala:57)
[error] cats.effect.laws.discipline.SyncTests.sync$(SyncTests.scala:31)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.sync(AsyncTests.scala:70)
[error] cats.effect.laws.discipline.AsyncTests$$anon$2.<init>(AsyncTests.scala:59)
[error] cats.effect.laws.discipline.AsyncTests.async(AsyncTests.scala:56)
[error] cats.effect.laws.discipline.AsyncTests.async$(AsyncTests.scala:30)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.async(AsyncTests.scala:70)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.e6(IOEffectSpec.scala:99)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.is(IOEffectSpec.scala:36)
[info]
[error] ! async.monadError ensureOr consistency
[error] java.lang.Error: Exception raised on property evaluation.
[error] > ARG_0: Pure(-2147483648,Last(None))
[error] > ARG_1: org.scalacheck.GenArities$$Lambda$948/1840134495@5eef0c43
[error] > ARG_2: org.scalacheck.GenArities$$Lambda$948/1840134495@20b2df93
[error] > Exception: java.lang.Error: null (Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority.$anonfun$arbThrowable$1(Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority$$Lambda$231/1765791911.apply(Unknown Source)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary$lzycompute(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary(Arbitrary.scala:74)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary$(Arbitrary.scala:74)
[error] org.scalacheck.Arbitrary$.arbitrary(Arbitrary.scala:61)
[error] org.scalacheck.Prop$.forAll(Prop.scala:862)
[error] cats.effect.laws.discipline.SyncTests$$anon$2.<init>(SyncTests.scala:65)
[error] cats.effect.laws.discipline.SyncTests.sync(SyncTests.scala:57)
[error] cats.effect.laws.discipline.SyncTests.sync$(SyncTests.scala:31)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.sync(AsyncTests.scala:70)
[error] cats.effect.laws.discipline.AsyncTests$$anon$2.<init>(AsyncTests.scala:59)
[error] cats.effect.laws.discipline.AsyncTests.async(AsyncTests.scala:56)
[error] cats.effect.laws.discipline.AsyncTests.async$(AsyncTests.scala:30)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.async(AsyncTests.scala:70)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.e6(IOEffectSpec.scala:99)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.is(IOEffectSpec.scala:36)
[info]
[error] ! async.monadError left zero
[error] java.lang.Error: Exception raised on property evaluation.
[error] > ARG_0: java.lang.Error
[error] > ARG_1: org.scalacheck.GenArities$$Lambda$948/1840134495@79fa938b
[error] > Exception: java.lang.Error: null (Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority.$anonfun$arbThrowable$1(Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority$$Lambda$231/1765791911.apply(Unknown Source)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary$lzycompute(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary(Arbitrary.scala:74)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary$(Arbitrary.scala:74)
[error] org.scalacheck.Arbitrary$.arbitrary(Arbitrary.scala:61)
[error] org.scalacheck.Prop$.forAll(Prop.scala:862)
[error] cats.effect.laws.discipline.SyncTests$$anon$2.<init>(SyncTests.scala:65)
[error] cats.effect.laws.discipline.SyncTests.sync(SyncTests.scala:57)
[error] cats.effect.laws.discipline.SyncTests.sync$(SyncTests.scala:31)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.sync(AsyncTests.scala:70)
[error] cats.effect.laws.discipline.AsyncTests$$anon$2.<init>(AsyncTests.scala:59)
[error] cats.effect.laws.discipline.AsyncTests.async(AsyncTests.scala:56)
[error] cats.effect.laws.discipline.AsyncTests.async$(AsyncTests.scala:30)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.async(AsyncTests.scala:70)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.e6(IOEffectSpec.scala:99)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.is(IOEffectSpec.scala:36)
[info]
[info] + async.monadError rethrow attempt
[info] + async.monoidal left identity
[info] + async.monoidal right identity
[info] + async.mproduct consistent flatMap
[info] + async.productL consistent map2
[info] + async.productR consistent map2
[info] + async.propagate errors through bind (async)
[error] ! async.propagate errors through bind (suspend)
[error] java.lang.Error: Exception raised on property evaluation.
[error] > ARG_0: java.lang.Error: null
[error] > Exception: java.lang.Error: null (Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority.$anonfun$arbThrowable$1(Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority$$Lambda$231/1765791911.apply(Unknown Source)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary$lzycompute(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary(Arbitrary.scala:74)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary$(Arbitrary.scala:74)
[error] org.scalacheck.Arbitrary$.arbitrary(Arbitrary.scala:61)
[error] org.scalacheck.Prop$.forAll(Prop.scala:862)
[error] cats.effect.laws.discipline.SyncTests$$anon$2.<init>(SyncTests.scala:65)
[error] cats.effect.laws.discipline.SyncTests.sync(SyncTests.scala:57)
[error] cats.effect.laws.discipline.SyncTests.sync$(SyncTests.scala:31)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.sync(AsyncTests.scala:70)
[error] cats.effect.laws.discipline.AsyncTests$$anon$2.<init>(AsyncTests.scala:59)
[error] cats.effect.laws.discipline.AsyncTests.async(AsyncTests.scala:56)
[error] cats.effect.laws.discipline.AsyncTests.async$(AsyncTests.scala:30)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.async(AsyncTests.scala:70)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.e6(IOEffectSpec.scala:99)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.is(IOEffectSpec.scala:36)
[info]
[info] + async.repeated async evaluation not memoized
[info] + async.repeated sync evaluation not memoized
[info] + async.semigroupal associativity
[info] + async.stack-safe on left-associated binds
[error] ! async.stack-safe on repeated attempts
[error] scala.MatchError: java.lang.StackOverflowError (of class java.lang.StackOverflowError) (IOEffectSpec.scala:28)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.check(IOEffectSpec.scala:28)
[error] org.typelevel.discipline.specs2.Discipline.$anonfun$checkAll$2(Discipline.scala:16)
[error] org.typelevel.discipline.specs2.Discipline$$Lambda$524/640301481.apply(Unknown Source)
[info]
[info] + async.stack-safe on repeated maps
[info] + async.stack-safe on right-associated binds
[info] + async.suspend constant is pure join
[info] + async.tailRecM consistent flatMap
[info] + async.tailRecM stack safety
[error] ! async.throw in delay is raiseError
[error] java.lang.Exception: Exception raised on property evaluation.
[error] > ARG_0: java.lang.Exception: null
[error] > Exception: java.lang.Exception: null (Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority.$anonfun$arbThrowable$1(Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority$$Lambda$231/1765791911.apply(Unknown Source)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary$lzycompute(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary(Arbitrary.scala:74)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary$(Arbitrary.scala:74)
[error] org.scalacheck.Arbitrary$.arbitrary(Arbitrary.scala:61)
[error] org.scalacheck.Prop$.forAll(Prop.scala:862)
[error] cats.effect.laws.discipline.SyncTests$$anon$2.<init>(SyncTests.scala:65)
[error] cats.effect.laws.discipline.SyncTests.sync(SyncTests.scala:57)
[error] cats.effect.laws.discipline.SyncTests.sync$(SyncTests.scala:31)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.sync(AsyncTests.scala:70)
[error] cats.effect.laws.discipline.AsyncTests$$anon$2.<init>(AsyncTests.scala:59)
[error] cats.effect.laws.discipline.AsyncTests.async(AsyncTests.scala:56)
[error] cats.effect.laws.discipline.AsyncTests.async$(AsyncTests.scala:30)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.async(AsyncTests.scala:70)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.e6(IOEffectSpec.scala:99)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.is(IOEffectSpec.scala:36)
[info]
[error] ! async.throw in suspend is raiseError
[error] java.lang.Error: Exception raised on property evaluation.
[error] > ARG_0: java.lang.Error: null
[error] > Exception: java.lang.Error: null (Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority.$anonfun$arbThrowable$1(Arbitrary.scala:160)
[error] org.scalacheck.ArbitraryLowPriority$$Lambda$231/1765791911.apply(Unknown Source)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary$lzycompute(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority$$anon$1.arbitrary(Arbitrary.scala:70)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary(Arbitrary.scala:74)
[error] org.scalacheck.ArbitraryLowPriority.arbitrary$(Arbitrary.scala:74)
[error] org.scalacheck.Arbitrary$.arbitrary(Arbitrary.scala:61)
[error] org.scalacheck.Prop$.forAll(Prop.scala:862)
[error] cats.effect.laws.discipline.SyncTests$$anon$2.<init>(SyncTests.scala:65)
[error] cats.effect.laws.discipline.SyncTests.sync(SyncTests.scala:57)
[error] cats.effect.laws.discipline.SyncTests.sync$(SyncTests.scala:31)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.sync(AsyncTests.scala:70)
[error] cats.effect.laws.discipline.AsyncTests$$anon$2.<init>(AsyncTests.scala:59)
[error] cats.effect.laws.discipline.AsyncTests.async(AsyncTests.scala:56)
[error] cats.effect.laws.discipline.AsyncTests.async$(AsyncTests.scala:30)
[error] cats.effect.laws.discipline.AsyncTests$$anon$1.async(AsyncTests.scala:70)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.e6(IOEffectSpec.scala:99)
[error] org.atnos.eff.addon.cats.effect.IOEffectSpec.is(IOEffectSpec.scala:36)
[info]
[info] + async.unsequenced delay is no-op
[info]
[info]
[info] //disabled until the weaker Async laws are green
[info] // IO effect is a lawful ConcurrentEffect
[info]
[info] Total for specification io
[info] Finished in 4 seconds, 332 ms
[info] 68 examples, 4919 expectations, 0 failure, 10 errors
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment