cleveland 0.3.2 → 0.4.0
raw patch · 15 files changed
+175/−153 lines, 15 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Test.Cleveland.Instances: instance (mname GHC.Types.~ 'GHC.Maybe.Nothing) => Data.Default.Class.Default (Lorentz.Entrypoints.Core.EntrypointRef mname)
- Test.Cleveland.Instances: instance Fmt.Buildable.Buildable Data.ByteString.Internal.ByteString
- Test.Cleveland.Internal.Abstract: type family ClevelandBaseMonad caps :: Type -> Type;
+ Test.Cleveland.Instances: instance Fmt.Buildable.Buildable Data.ByteString.Internal.Type.ByteString
+ Test.Cleveland.Internal.Abstract: type ClevelandBaseMonad caps :: Type -> Type;
+ Test.Cleveland.Internal.Actions: type ContractOriginateType contract :: OriginationType;
+ Test.Cleveland.Internal.Actions.Originate: type ContractOriginateType contract :: OriginationType;
- Hedgehog.Gen.Michelson.Typed: genSimpleInstr :: (MonadGen m, inp ~ (x : xs), SingI x) => m (Instr inp inp)
+ Hedgehog.Gen.Michelson.Typed: genSimpleInstr :: (MonadGen m, inp ~ (x ': xs), SingI x) => m (Instr inp inp)
- Hedgehog.Range.Defaults: class Default a
+ Hedgehog.Range.Defaults: class () => Default a
- Lorentz.Test.DupableScan: type family CheckDupablesDistribution (a :: Type) :: Either (Bool, Maybe Symbol, Type) ()
+ Lorentz.Test.DupableScan: type family CheckDupablesDistribution a
- Test.Cleveland: class Default a
+ Test.Cleveland: class () => Default a
- Test.Cleveland: class ToAddress a
+ Test.Cleveland: class () => ToAddress a
- Test.Cleveland: data AddressWithAlias (kind :: AddressKind)
+ Test.Cleveland: data () => AddressWithAlias (kind :: AddressKind)
- Test.Cleveland: data Alias (kind :: AddressKind)
+ Test.Cleveland: data () => Alias (kind :: AddressKind)
- Test.Cleveland: data EntrypointRef (mname :: Maybe Symbol)
+ Test.Cleveland: data () => EntrypointRef (mname :: Maybe Symbol)
- Test.Cleveland: data KindedAddress (kind :: AddressKind)
+ Test.Cleveland: data () => KindedAddress (kind :: AddressKind)
- Test.Cleveland: data MorleyClientEnv
+ Test.Cleveland: data () => MorleyClientEnv
- Test.Cleveland: data MorleyLogs
+ Test.Cleveland: data () => MorleyLogs
- Test.Cleveland: data Mutez
+ Test.Cleveland: data () => Mutez
- Test.Cleveland: data TezosClientEnv
+ Test.Cleveland: data () => TezosClientEnv
- Test.Cleveland: data VotingPowers
+ Test.Cleveland: data () => VotingPowers
- Test.Cleveland: enumAliases :: forall n n'. (SingIPeano n, IsoNatPeano n n') => ImplicitAlias -> SizedList n SpecificOrDefaultAlias
+ Test.Cleveland: enumAliases :: forall n n'. (SingIPeano n, IsoNatPeano n n') => ImplicitAlias -> SizedList' n' SpecificOrDefaultAlias
- Test.Cleveland: newAddresses :: forall n n' caps m. (HasCallStack, MonadCleveland caps m, IsoNatPeano n n') => SizedList n SpecificOrDefaultAlias -> m (SizedList n ImplicitAddressWithAlias)
+ Test.Cleveland: newAddresses :: forall n n' caps m. (HasCallStack, MonadCleveland caps m, IsoNatPeano n n') => SizedList n SpecificOrDefaultAlias -> m (SizedList' n' ImplicitAddressWithAlias)
- Test.Cleveland: newtype NamedF (f :: Type -> Type) a (name :: Symbol)
+ Test.Cleveland: newtype () => NamedF (f :: Type -> Type) a (name :: Symbol)
- Test.Cleveland.Internal.Abstract: [ODContractAndStorageLorentz] :: {odStorage :: st " Initial storage.", odContract :: Contract param st vd " The contract itself. We are using Lorentz version here which is convenient. However, keep in mind that if someone wants to test a contract from @.tz@ file, they should use 'OTUntyped' origination type."} -> ODContractAndStorage ('OTTypedLorentz param st vd)
+ Test.Cleveland.Internal.Abstract: [ODContractAndStorageLorentz] :: st -> Contract param st vd -> ODContractAndStorage ('OTTypedLorentz param st vd)
- Test.Cleveland.Internal.Abstract: [ODContractAndStorageTyped] :: (NiceStorage st, NiceViewsDescriptor vd, NiceParameter cp) => {todStorage :: st " Initial storage.", todContract :: Contract (ToT cp) (ToT st) " The contract itself."} -> ODContractAndStorage ('OTTypedMorley cp st vd)
+ Test.Cleveland.Internal.Abstract: [ODContractAndStorageTyped] :: (NiceStorage st, NiceViewsDescriptor vd, NiceParameter cp) => st -> Contract (ToT cp) (ToT st) -> ODContractAndStorage ('OTTypedMorley cp st vd)
- Test.Cleveland.Internal.Abstract: [ODContractAndStorageUntyped] :: {uodStorage :: Value " Initial storage.", uodContract :: Contract " The contract itself."} -> ODContractAndStorage 'OTUntyped
+ Test.Cleveland.Internal.Abstract: [ODContractAndStorageUntyped] :: Value -> Contract -> ODContractAndStorage 'OTUntyped
- Test.Cleveland.Internal.Abstract: ccMoneybagL :: forall m_a1uyR. Lens' (ClevelandCaps m_a1uyR) Moneybag
+ Test.Cleveland.Internal.Abstract: ccMoneybagL :: forall m_a1uJj. Lens' (ClevelandCaps m_a1uJj) Moneybag
- Test.Cleveland.Internal.Abstract: ccSenderL :: forall m_a1uyR. Lens' (ClevelandCaps m_a1uyR) Sender
+ Test.Cleveland.Internal.Abstract: ccSenderL :: forall m_a1uJj. Lens' (ClevelandCaps m_a1uJj) Sender
- Test.Cleveland.Internal.Abstract: ecClevelandCapsL :: forall m_a1uyQ. Lens' (EmulatedCaps m_a1uyQ) (ClevelandCaps m_a1uyQ)
+ Test.Cleveland.Internal.Abstract: ecClevelandCapsL :: forall m_a1uJi. Lens' (EmulatedCaps m_a1uJi) (ClevelandCaps m_a1uJi)
- Test.Cleveland.Internal.Abstract: ncClevelandCapsL :: forall m_a1uyP m_a1wuv. Lens (NetworkCaps m_a1uyP) (NetworkCaps m_a1wuv) (ClevelandCaps m_a1uyP) (ClevelandCaps m_a1wuv)
+ Test.Cleveland.Internal.Abstract: ncClevelandCapsL :: forall m_a1uJh m_a1wwE. Lens (NetworkCaps m_a1uJh) (NetworkCaps m_a1wwE) (ClevelandCaps m_a1uJh) (ClevelandCaps m_a1wwE)
- Test.Cleveland.Internal.Actions: enumAliases :: forall n n'. (SingIPeano n, IsoNatPeano n n') => ImplicitAlias -> SizedList n SpecificOrDefaultAlias
+ Test.Cleveland.Internal.Actions: enumAliases :: forall n n'. (SingIPeano n, IsoNatPeano n n') => ImplicitAlias -> SizedList' n' SpecificOrDefaultAlias
- Test.Cleveland.Internal.Actions: newAddresses :: forall n n' caps m. (HasCallStack, MonadCleveland caps m, IsoNatPeano n n') => SizedList n SpecificOrDefaultAlias -> m (SizedList n ImplicitAddressWithAlias)
+ Test.Cleveland.Internal.Actions: newAddresses :: forall n n' caps m. (HasCallStack, MonadCleveland caps m, IsoNatPeano n n') => SizedList n SpecificOrDefaultAlias -> m (SizedList' n' ImplicitAddressWithAlias)
- Test.Cleveland.Internal.Actions: type OFConstraints ct prop props r = (OriginateFunc ct (prop : props) r, CheckDupProp prop props)
+ Test.Cleveland.Internal.Actions: type OFConstraints ct prop props r = (OriginateFunc ct (prop ': props) r, CheckDupProp prop props)
- Test.Cleveland.Internal.Actions: type family OriginationResult a
+ Test.Cleveland.Internal.Actions: type family CheckDupProp name props
- Test.Cleveland.Internal.Actions.Misc: enumAliases :: forall n n'. (SingIPeano n, IsoNatPeano n n') => ImplicitAlias -> SizedList n SpecificOrDefaultAlias
+ Test.Cleveland.Internal.Actions.Misc: enumAliases :: forall n n'. (SingIPeano n, IsoNatPeano n n') => ImplicitAlias -> SizedList' n' SpecificOrDefaultAlias
- Test.Cleveland.Internal.Actions.Misc: newAddresses :: forall n n' caps m. (HasCallStack, MonadCleveland caps m, IsoNatPeano n n') => SizedList n SpecificOrDefaultAlias -> m (SizedList n ImplicitAddressWithAlias)
+ Test.Cleveland.Internal.Actions.Misc: newAddresses :: forall n n' caps m. (HasCallStack, MonadCleveland caps m, IsoNatPeano n n') => SizedList n SpecificOrDefaultAlias -> m (SizedList' n' ImplicitAddressWithAlias)
- Test.Cleveland.Internal.Actions.Originate: type OFConstraints ct prop props r = (OriginateFunc ct (prop : props) r, CheckDupProp prop props)
+ Test.Cleveland.Internal.Actions.Originate: type OFConstraints ct prop props r = (OriginateFunc ct (prop ': props) r, CheckDupProp prop props)
- Test.Cleveland.Internal.Actions.Originate: type family OriginationResult a
+ Test.Cleveland.Internal.Actions.Originate: type family CheckDupProp name props
- Test.Cleveland.Internal.Actions.Transfer: type family TransferIgnoreResultSym0 :: TransferResult
+ Test.Cleveland.Internal.Actions.Transfer: type family TransferWithEmitsSym0 :: TransferResult
- Test.Cleveland.Lorentz.Import: data ContractReadError
+ Test.Cleveland.Lorentz.Import: data () => ContractReadError
- Test.Cleveland.Lorentz.Import: data ValueReadError
+ Test.Cleveland.Lorentz.Import: data () => ValueReadError
- Test.Cleveland.Lorentz.Types: class ToAddress a
+ Test.Cleveland.Lorentz.Types: class () => ToAddress a
- Test.Cleveland.Michelson.Import: data ContractReadError
+ Test.Cleveland.Michelson.Import: data () => ContractReadError
- Test.Cleveland.Michelson.Import: data ValueReadError
+ Test.Cleveland.Michelson.Import: data () => ValueReadError
Files
- CHANGES.md +9/−0
- README.md +2/−2
- cleveland.cabal +3/−3
- src/Lorentz/Test/DupableScan.hs +43/−3
- src/Test/Cleveland/Instances.hs +1/−4
- src/Test/Cleveland/Internal/Actions/ExceptionHandling.hs +2/−2
- src/Test/Cleveland/Internal/Actions/Misc.hs +4/−4
- src/Test/Cleveland/Internal/Actions/MonadOps.hs +1/−1
- src/Test/Cleveland/Internal/Actions/Transfer.hs +5/−10
- src/Test/Cleveland/Internal/Client.hs +6/−7
- src/Test/Cleveland/Internal/Pure.hs +2/−3
- test/TestSuite/Cleveland/CallStack.hs +47/−64
- test/TestSuite/Cleveland/DFS.hs +2/−2
- test/TestSuite/Cleveland/ExpectFailure.hs +22/−22
- test/TestSuite/Cleveland/Tasty/Report/Examples.hs +26/−26
CHANGES.md view
@@ -1,6 +1,15 @@ <!-- Unreleased: append new entries here --> +0.4.0+=====+* [!1369](https://gitlab.com/morley-framework/morley/-/merge_requests/1369)+ Move `Default` instance for `EntrypointRef` to Lorentz+* [!1364](https://gitlab.com/morley-framework/morley/-/merge_requests/1364)+ Update to LTS-21.4 (GHC 9.4.5)+* [!1358](https://gitlab.com/morley-framework/morley/-/merge_requests/1358)+ Make missing Generic errors more readable+ 0.3.2 ===== * [!1323](https://gitlab.com/morley-framework/morley/-/merge_requests/1323)
README.md view
@@ -1,6 +1,6 @@-> :warning: **Note: this project is being deprecated.**+> :warning: **Note: this project is deprecated.** >-> It will no longer be maintained after the activation of protocol "N" on the Tezos mainnet.+> It is no longer maintained since the activation of protocol "Nairobi" on the Tezos mainnet (June 24th, 2023). # Cleveland: A testing framework for Morley
cleveland.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: cleveland-version: 0.3.2+version: 0.4.0 synopsis: Testing framework for Morley. description: This package provides an eDSL for testing contracts written in Michelson, Morley or Lorentz. These tests can be run on an emulated environment or on a real network. category: Blockchain@@ -154,7 +154,7 @@ UndecidableInstances UndecidableSuperClasses ViewPatterns- ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-implicit-prelude -Wno-prepositive-qualified-module -Wno-missing-safe-haskell-mode+ ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-implicit-prelude -Wno-prepositive-qualified-module -Wno-missing-safe-haskell-mode -Wno-missing-kind-signatures -Wno-implicit-lift -Wno-unticked-promoted-constructors build-depends: HUnit , MonadRandom@@ -309,7 +309,7 @@ UndecidableInstances UndecidableSuperClasses ViewPatterns- ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-implicit-prelude -Wno-prepositive-qualified-module -Wno-missing-safe-haskell-mode -threaded -eventlog -rtsopts "-with-rtsopts=-N -A64m -AL256m"+ ghc-options: -Weverything -Wno-missing-exported-signatures -Wno-missing-import-lists -Wno-missed-specialisations -Wno-all-missed-specialisations -Wno-unsafe -Wno-safe -Wno-missing-local-signatures -Wno-monomorphism-restriction -Wno-implicit-prelude -Wno-prepositive-qualified-module -Wno-missing-safe-haskell-mode -Wno-missing-kind-signatures -Wno-implicit-lift -Wno-unticked-promoted-constructors -threaded -rtsopts "-with-rtsopts=-N -A64m -AL256m" -Wno-unused-imports build-tool-depends: tasty-discover:tasty-discover build-depends:
src/Lorentz/Test/DupableScan.hs view
@@ -21,9 +21,14 @@ import Lorentz import Morley.Michelson.Typed.Scope+import Morley.Util.Generic import Morley.Util.Type import Morley.Util.TypeLits +{- $setup+>>> import Lorentz+-}+ -- | Bind on 'Either's that return nothing. type SumEithers :: Either l () -> Either l () -> Either l r type family SumEithers e1 e2 where@@ -50,9 +55,16 @@ -- | For the given type, check that at the left subtree of pairs tree it -- contains only dupable elements, and at the right - only non-dupable ones.-type family CheckDupablesDistribution (a :: Type) :: Either (Bool, Maybe Symbol, Type) () where- CheckDupablesDistribution a = GCheckDupablesDistribution (G.Rep a)+--+-- On ambiguity, evaluation is delayed to avoid exposing Generic internals.+type CheckDupablesDistribution :: Type -> Either (Bool, Maybe Symbol, Type) ()+type family CheckDupablesDistribution a where+ CheckDupablesDistribution ThisTypeShallNotBeExported = TypeError ('Text "impossible")+ CheckDupablesDistribution a = GCheckDupablesDistribution (GRep a) +-- | Dummy type to delay evaluation of 'CheckDupablesDistribution'.+data ThisTypeShallNotBeExported+ -- | Error for 'checkDupablesDistribution'. data BadElement = BadElement { beExpectedDupability :: Bool@@ -76,7 +88,35 @@ , beRecType = typeRep (Proxy @ty) } --- | 'CheckDupablesDistribution' for term-level.+{- | 'CheckDupablesDistribution' for term-level.++Shows decent error messages on missing 'Generic' instance.++>>> checkDupablesDistribution+...+... Ambiguous type variable ‘a0’ arising from a use of ‘checkDupablesDistribution’+... prevents the constraint ‘(Lorentz.Test.DupableScan.DemoteRes+... (CheckDupablesDistribution a0))’ from being solved.+...++The type must have a 'Generic' instance.++>>> data Foo = Foo () (Ticket ())+>>> checkDupablesDistribution @Foo+...+... GHC.Generics.Rep Foo+... is stuck. Likely+... Generic Foo+... instance is missing or out of scope.+...++The type itself needn't necessarily have @IsoValue@ instance, but all its leaves+must.++>>> data Foo = Foo () (Ticket ()) deriving Generic+>>> checkDupablesDistribution @Foo+Right ()+-} checkDupablesDistribution :: forall a. (DemoteRes (CheckDupablesDistribution a)) => Either BadElement ()
src/Test/Cleveland/Instances.hs view
@@ -13,7 +13,7 @@ import Test.Tasty.Runners (FailureReason(..)) import Time (Time) -import Lorentz.Entrypoints.Core (EntrypointRef(..), NiceEntrypointName)+import Lorentz.Entrypoints.Core (NiceEntrypointName) import Morley.Michelson.Text (MText, mkMText) import Morley.Michelson.Typed.Haskell.Value (BigMap(..)) import Morley.Michelson.Untyped qualified as U@@ -124,9 +124,6 @@ TestThrewException e -> "Test threw exception: " +| displayException e |+ "" TestTimedOut s -> "Test timed out: " +| s |+ "" TestDepFailed -> "Test skipped because its dependency failed"--instance mname ~ 'Nothing => Default (EntrypointRef mname) where- def = CallDefault instance Default U.EpName where def = U.DefEpName
src/Test/Cleveland/Internal/Actions/ExceptionHandling.hs view
@@ -43,9 +43,9 @@ -- exception. -- -- > expectTransferFailure (failedWith (constant @MText "NOT_ADMIN")) $--- > call contractAddr (Call @"Ep") arg+-- > call contractAddr #ep arg ----- > call contractAddr (Call @"Ep") arg & expectTransferFailure+-- > call contractAddr #ep arg & expectTransferFailure -- > ( failedWith (customError #tag 3) && -- > addressIs contractAddr -- > )
src/Test/Cleveland/Internal/Actions/Misc.hs view
@@ -10,7 +10,7 @@ import Data.Singletons (demote) import Fmt (Buildable, Doc, build, indentF, unlinesF, (+|), (|+))-import Time (KnownDivRat, Second, Time, toNum)+import Time (KnownDivRat, Second, Time, floorRat) import Lorentz (BigMapId, Contract(..), DemoteViewsDescriptor, IsoValue) import Lorentz.Bytes@@ -116,7 +116,7 @@ :: forall n n' caps m. (HasCallStack, MonadCleveland caps m, IsoNatPeano n n') => SizedList n SpecificOrDefaultAlias- -> m (SizedList n ImplicitAddressWithAlias)+ -> m (SizedList' n' ImplicitAddressWithAlias) newAddresses aliases = do addrs <- withCap getMiscCap \cap -> traverse (cmiGenKey cap) aliases Moneybag moneybag <- view moneybagL@@ -160,7 +160,7 @@ enumAliases :: forall n n'. (SingIPeano n, IsoNatPeano n n')- => ImplicitAlias -> SizedList n SpecificOrDefaultAlias+ => ImplicitAlias -> SizedList' n' SpecificOrDefaultAlias enumAliases (ImplicitAlias pfx) = SpecificAlias <$> SL.generate @n (\n -> ImplicitAlias $ pfx <> "-" <> show n) @@ -452,7 +452,7 @@ -- -- Can be useful when testing code using @MIN_BLOCK_TIME@ instruction. getMinBlockTime :: (HasCallStack, MonadCleveland caps m) => m Natural-getMinBlockTime = toNum @Second <$> getApproximateBlockInterval+getMinBlockTime = floorRat <$> getApproximateBlockInterval -- | Execute a contract's code without originating it. -- The chain's state will not be modified.
src/Test/Cleveland/Internal/Actions/MonadOps.hs view
@@ -19,7 +19,7 @@ -- 'MonadOps' constraint on it, f. ex.: -- -- > callEp1 :: MonadOps m => ContractHandle MyParam () () -> Integer -> m ()--- > callEp1 ch = transfer ch . calling (ep @"Entrypoint1")+-- > callEp1 ch = transfer ch . calling #entrypoint1 class (MonadTransfer m, MonadOriginate m) => MonadOps m instance (MonadTransfer m, MonadOriginate m) => MonadOps m
src/Test/Cleveland/Internal/Actions/Transfer.hs view
@@ -66,7 +66,7 @@ is arbitrary, but it is usually more convenient to specify transfer amount first. For example: -> transfer addr [tz|123u|] $ calling (ep @"Entrypoint") ()+> transfer addr [tz|123u|] $ calling #entrypoint () > transfer addr [tz|123u|] If the call isn't specified, then the default entrypoint will be called with@@ -117,7 +117,7 @@ :} GHC may not always figure out the type of the entrypoint parameter. In that-case, it'll show unbound type variable, usually @arg0@:+case, it'll show unbound type variable, usually @arg@ or @arg0@: >>> :{ example@@ -129,7 +129,7 @@ ... Can not look up entrypoints in type ... cp ... The most likely reason it is ambiguous, or you need-... HasEntrypointArg cp (EntrypointRef 'Nothing) arg0+... HasEntrypointArg cp (EntrypointRef 'Nothing) arg ... constraint ... @@ -353,7 +353,7 @@ -- specified entrypoint and the entrypoint in question accepts the argument -- provided, a type error is raised otherwise. ----- > transfer addr $ calling (ep @"Entrypoint") ()+-- > transfer addr $ calling #entrypoint () -- -- Use 'CallDefault' or @def@ to call the default entrypoint. --@@ -383,11 +383,6 @@ -- Also, no compile-time checks are performed on the entrypoint name, so it -- can be malformed. ----- > transfer addr $ unsafeCalling (ep @"Entrypoint") ()------ Overloaded labels are supported with 'unsafeCalling', so you can specify the--- entrypoint as an overloaded label:--- -- > transfer addr $ unsafeCalling #entrypoint () -- -- Use 'U.DefEpName' or @def@ to call the default entrypoint.@@ -409,5 +404,5 @@ -- | 'transfer' flag to signal we want contract events emitted by @EMIT@ -- returned. Passed in the variadic part of 'transfer', e.g. ----- > transfer addr [tz|123u|] WithContractEvents $ calling (ep @"Entrypoint") ()+-- > transfer addr [tz|123u|] WithContractEvents $ calling #entrypoint () data WithContractEvents = WithContractEvents
src/Test/Cleveland/Internal/Client.hs view
@@ -20,7 +20,7 @@ import Data.Typeable (cast) import Fmt (Buildable(build), Doc, indentF, pretty, unlinesF, (+|), (|+)) import System.IO (hFlush)-import Time (KnownDivRat, Second, Time, sec, threadDelay, toNum, toUnit)+import Time (KnownDivRat, Second, Time, floorRat, sec, threadDelay, toFractional, toUnit) import Unsafe qualified (fromIntegral) import Lorentz (NicePackedValue)@@ -169,8 +169,7 @@ if neExplicitDataDir then id else Client.mceTezosClientL . tceMbTezosClientDataDirL .~ Nothing- storageAddress <- runMorleyClientM setupEnv $- Client.resolveAddressMaybe (AddressAlias neMoneybagAlias)+ storageAddress <- runMorleyClientM setupEnv $ Client.resolveAddressMaybe neMoneybagAlias Moneybag <$> case (neSecretKey, storageAddress) of (Nothing, Just addr) -> do unless neExplicitDataDir do@@ -386,7 +385,7 @@ deltaSec = ceilingUnit $ toUnit @Second delta deltaSec' :: NominalDiffTime- deltaSec' = secondsToNominalDiffTime $ toNum @Second deltaSec+ deltaSec' = secondsToNominalDiffTime $ toFractional deltaSec t0 <- getLastBlockTimestamp neMorleyClientEnv threadDelay deltaSec let@@ -410,7 +409,7 @@ when (skippedLevels > 0) $ do when (skippedLevels > 1) $ do minBlockInterval <- cmiGetApproximateBlockInterval- let waitTime = (skippedLevels - 1) * toNum @Second minBlockInterval+ let waitTime = (skippedLevels - 1) * floorRat minBlockInterval threadDelay . sec $ waitTime % 1 -- A chain's time resolution is never smaller than a second, so with (less -- than) a level to go we can wait for 1s in loop until we reach the target.@@ -456,14 +455,14 @@ => MorleyClientEnv -> KindedAddress kind -> ClientM (Alias kind)-getAlias env = liftIO . runMorleyClientM env . TezosClient.getAlias . AddressResolved+getAlias env = liftIO . runMorleyClientM env . TezosClient.getAlias getAliasMaybe :: L1AddressKind kind => MorleyClientEnv -> KindedAddress kind -> ClientM (Maybe (Alias kind))-getAliasMaybe env = liftIO . runMorleyClientM env . Client.getAliasMaybe . AddressResolved+getAliasMaybe env = liftIO . runMorleyClientM env . Client.getAliasMaybe getLastBlockTimestamp :: MorleyClientEnv -> ClientM UTCTime getLastBlockTimestamp env = liftIO $
src/Test/Cleveland/Internal/Pure.hs view
@@ -22,7 +22,7 @@ import Data.Ratio ((%)) import Data.Set qualified as Set import Fmt (Buildable(..), Doc, build, nameF, pretty, unlinesF, (+|), (|+))-import Time (Second, toNum, toUnit)+import Time (Second, ceilingRat, toUnit) import Lorentz (Mutez, NiceComparable, pattern DefEpName) import Lorentz qualified as L@@ -61,7 +61,6 @@ import Test.Cleveland.Internal.Common import Test.Cleveland.Internal.Exceptions import Test.Cleveland.Lorentz-import Test.Cleveland.Util (ceilingUnit) data PureState = PureState { _psSecretKeys :: Map ImplicitAddress SecretKey@@ -235,7 +234,7 @@ , cmiGetChainId = use $ psGState . gsChainIdL , cmiAdvanceTime = \time -> do modifying psNow . flip timestampPlusSeconds $- toNum @Second @Integer $ ceilingUnit $ toUnit @Second time+ ceilingRat @Integer @Second $ toUnit @Second time , cmiAdvanceToLevel = \fn -> -- do not go back in levels
test/TestSuite/Cleveland/CallStack.hs view
@@ -48,7 +48,7 @@ [ testFailureIncludesCallStack "Custom errors are prefixed with clarifyErrors" [lit| failure ("Some failure")- ^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^ | For i=1: Some failure |] do@@ -58,7 +58,7 @@ , testFailureIncludesCallStack "clarifyErrors properly formats multiline errors" [lit| failure ("Some failure\nSome text")- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^ | For i=1: | Some failure | Some text@@ -109,7 +109,7 @@ [ testFailureIncludesCallStack "callstack points to runIO" [lit| runIO (throwM DummyException)- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^ |] do runIO (throwM DummyException)@@ -117,7 +117,7 @@ , testFailureIncludesCallStack "callstack points to resolveAddress" [lit| void $ resolveAddress invalidAlias- ^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^ |] do -- force a failure by using an unknown alias@@ -126,7 +126,7 @@ , testFailureIncludesCallStack "callstack points to newAddress" [lit| void $ newAddress "b"- ^^^^^^^^^^^^^^+ ^^^^^^^^^^ |] do addr <- newFreshAddress "a"@@ -148,7 +148,7 @@ , testFailureIncludesCallStack "callstack points to signBytes" [lit| void $ signBytes "" invalidAddrWAlias- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^ |] do void $ signBytes "" invalidAddrWAlias@@ -156,7 +156,7 @@ , testFailureIncludesCallStack "callstack points to signBinary" [lit| void $ signBinary @ByteString "" invalidAddrWAlias- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^ |] do void $ signBinary @ByteString "" invalidAddrWAlias@@ -164,9 +164,7 @@ , testFailureIncludesCallStack "callstack points to originate with untyped" [lit| void $ originate ""- (untypeValue $ toVal @Natural 3)- (convertContract $ toMichelsonContract @() @() idContract)- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^ |] do -- force a failure by using a storage of the wrong type@@ -177,11 +175,7 @@ , testFailureIncludesCallStack "callstack points to originate with lorentz" [lit| void $ originate- ""- ()- (idContract @() @())- (maxBound :: Mutez)- ^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^ |] do -- force a failure by transfering `maxBound` mutez@@ -194,7 +188,7 @@ , testFailureIncludesCallStack "callstack points to transfer" [lit| transfer invalidAddr- ^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^ |] do -- force a failure by transfering from an unknown alias@@ -203,7 +197,7 @@ , testFailureIncludesCallStack "callstack points to transferMoney" [it| transfer invalidAddr [tz|1u|\&]- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^ |] do -- force a failure by transfering from an unknown address@@ -213,7 +207,7 @@ , testFailureIncludesCallStack "callstack points to call" [lit| transfer invalidTAddr- ^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^ |] do -- force a failure by transfering to an unknown address@@ -234,7 +228,7 @@ , testFailureIncludesCallStack "callstack points to importUntypedContract" [lit| void $ importUntypedContract "<invalid file path>"- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^^^^^^^^ |] do void $ importUntypedContract "<invalid file path>"@@ -256,7 +250,6 @@ [ testFailureIncludesCallStack "when action does not throw, callstack points to catchTransferFailure" [lit| catchTransferFailure- pass ^^^^^^^^^^^^^^^^^^^^ |] do@@ -283,7 +276,7 @@ testName [lit| runIO (throwM ex)- ^^^^^^^^^^^^^^^^^+ ^^^^^ |] do void $ catchTransferFailure $ do@@ -295,7 +288,7 @@ , testFailureIncludesCallStack "when exception predicate fails, callstack points to checkTransferFailure" [lit| checkTransferFailure err $ failedWith (constant @Natural 2)- ^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^^^^^^^ |] do addr <- originate "" () contractFailWith1@@ -306,7 +299,7 @@ [ testFailureIncludesCallStack "when action does not throw, callstack points to expectTransferFailure" [lit| & expectTransferFailure emptyTransaction- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^^^^^^^^ |] do pass@@ -315,7 +308,7 @@ , testFailureIncludesCallStack "when action throws an unexpected exception, callstack points to action" [lit| runIO (throwM DummyException)- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^ |] do runIO (throwM DummyException)@@ -324,7 +317,7 @@ , testFailureIncludesCallStack "when exception predicate fails, callstack points to expectTransferFailure" [lit| & expectTransferFailure (failedWith (constant @Natural 2))- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^^^^^^^^ |] do addr <- originate "" () contractFailWith1@@ -335,7 +328,7 @@ , testFailureIncludesCallStack "callstack points to expectFailedWith" [lit| expectFailedWith @MText "" pass- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^^^ |] do expectFailedWith @MText "" pass@@ -343,7 +336,7 @@ , testFailureIncludesCallStack "callstack points to expectError" [lit| expectError @MText "" pass- ^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^ |] do expectError @MText "" pass@@ -351,7 +344,7 @@ , testFailureIncludesCallStack "callstack points to expectCustomError" [lit| expectCustomError #unitError () pass- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^^^^ |] do expectCustomError #unitError () pass@@ -359,7 +352,7 @@ , testFailureIncludesCallStack "callstack points to expectCustomError_" [lit| expectCustomError_ #unitError pass- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^^^^^ |] do expectCustomError_ #unitError pass@@ -367,7 +360,7 @@ , testFailureIncludesCallStack "callstack points to expectCustomErrorNoArg" [lit| expectCustomErrorNoArg #noArgError pass- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^^^^^^^^^ |] do expectCustomErrorNoArg #noArgError pass@@ -375,7 +368,7 @@ , testFailureIncludesCallStack "callstack points to expectCustomErrorAnyArg" [lit| expectCustomErrorAnyArg #anyCustomError pass- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^^^^^^^^^^ |] do expectCustomErrorAnyArg #anyCustomError pass@@ -383,7 +376,7 @@ , testFailureIncludesCallStack "callstack points to expectNumericError" [lit| expectNumericError @MText [] "" pass- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^^^^^ |] do expectNumericError @MText [] "" pass@@ -391,7 +384,7 @@ , testFailureIncludesCallStack "callstack points to getStorage" [lit| void $ getStorage @() invalidContractAddr- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^ |] do void $ getStorage @() invalidContractAddr@@ -399,7 +392,7 @@ , testFailureIncludesCallStackOnEmulator "callstack points to getFullStorage on emulator" [lit| void $ getFullStorage @() invalidContractAddr- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^ |] do void $ getFullStorage @() invalidContractAddr@@ -407,7 +400,7 @@ , testFailureIncludesCallStackOnEmulator "callstack points to getSomeStorage on emulator" [lit| void $ getSomeStorage invalidContractAddr- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^ |] do void $ getSomeStorage invalidContractAddr@@ -416,7 +409,7 @@ testFailureIncludesCallStackOnNetwork "callstack points to getBigMapValueMaybe" [lit| void $ getBigMapValueMaybe @Integer @Integer 999999999999999999 0- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^^^^^^ |] do void $ getBigMapValueMaybe @Integer @Integer 999999999999999999 0@@ -424,7 +417,7 @@ , testFailureIncludesCallStack "callstack points to getBigMapValue" [lit| void $ getBigMapValue @Integer @Integer 999999999999999999 0- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^ |] do void $ getBigMapValue @Integer @Integer 999999999999999999 0@@ -432,7 +425,7 @@ , testFailureIncludesCallStack "callstack points to getPublicKey" [lit| void $ getPublicKey invalidAddrWAlias- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^ |] do void $ getPublicKey invalidAddrWAlias@@ -450,7 +443,7 @@ testFailureIncludesCallStackOnNetwork "callstack points to advanceTime on network" [lit| advanceTime (sec 1)- ^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^ |] do advanceTime (sec 1)@@ -458,7 +451,7 @@ testFailureIncludesCallStackOnNetwork "callstack points to advanceLevel on network" [lit| advanceLevel 1- ^^^^^^^^^^^^^^+ ^^^^^^^^^^^^ |] do advanceLevel 1@@ -481,17 +474,7 @@ , testFailureIncludesCallStack "callstack points to runCode" [lit| void $ runCode RunCode- { rcContract =- L.defaultContract @() @() $ L.failUsing @MText "Contract should fail"- , rcStorage = untypeValue $ toVal ()- , rcParameter = untypeValue $ toVal ()- , rcAmount = 0- , rcBalance = 0- , rcSource = Nothing- , rcNow = Nothing- , rcLevel = Nothing- }- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^ |] do void $ runCode RunCode@@ -509,7 +492,7 @@ "when a branchout branch throws, the callstack points to the function inside the branch" [lit| getStorage @() invalidContractAddr- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^ | In branch 'a': Unknown address provided: KT1BRd2ka5q2cPRdXALtXD1QZ38CPam2j1ye |] do@@ -522,7 +505,7 @@ "when a nested branchout branch throws, the callstack branch name is correct" [lit| void $ getStorage @() invalidContractAddr- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^ | In branch 'a/b': Unknown address provided: KT1BRd2ka5q2cPRdXALtXD1QZ38CPam2j1ye |] do@@ -551,7 +534,7 @@ "when offshoot throws, the callstack points to the function inside offshoot" [lit| getStorage @() invalidContractAddr- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^ | In branch 'a': Unknown address provided: KT1BRd2ka5q2cPRdXALtXD1QZ38CPam2j1ye |]@@ -563,7 +546,7 @@ , testFailureIncludesCallStack "callstack points to failure" [lit| failure "a"- ^^^^^^^^^^^+ ^^^^^^^ |] do failure "a"@@ -571,7 +554,7 @@ , testFailureIncludesCallStack "callstack points to assert" [lit| assert False "a"- ^^^^^^^^^^^^^^^^+ ^^^^^^ |] do assert False "a"@@ -611,7 +594,7 @@ , testFailureIncludesCallStack "callstack points to checkCompares" [lit| checkCompares @Int 1 (==) 2- ^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^ |] do checkCompares @Int 1 (==) 2@@ -619,7 +602,7 @@ , testFailureIncludesCallStack "callstack points to checkComparesWith" [lit| checkComparesWith @Int show 1 (==) show 2- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^^^^^^^^^ |] do checkComparesWith @Int show 1 (==) show 2@@ -627,7 +610,7 @@ , testFailureIncludesCallStack "callstack points to evalJust" [lit| Nothing & evalJust ""- ^^^^^^^^^^^+ ^^^^^^^^ |] do Nothing & evalJust ""@@ -635,7 +618,7 @@ , testFailureIncludesCallStack "callstack points to evalRight" [lit| Left @Integer 1 & evalRight \_ -> ""- ^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^ |] do Left @Integer 1 & evalRight \_ -> ""@@ -644,7 +627,7 @@ [ testFailureIncludesCallStack "callstack points to helper using @==" [lit| bulkCheck [0, 1] [0, 2]- ^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^^^^^ |] do let@@ -659,7 +642,7 @@ [ testFailureIncludesCallStackOnEmulator "with whenEmulation" [lit| runIO (throwM DummyException)- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^ |] do whenEmulation $@@ -667,7 +650,7 @@ , testFailureIncludesCallStack "with ifEmulation" [lit| (runIO (throwM DummyException))- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^ |] do ifEmulation@@ -676,7 +659,7 @@ , testFailureIncludesCallStackOnNetwork "with whenNetwork" [lit| runIO (throwM DummyException)- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^+ ^^^^^ |] do whenNetwork $
test/TestSuite/Cleveland/DFS.hs view
@@ -55,6 +55,6 @@ transferAllCallerAddr <- importContract @TransferAllCallerParameter (inContractsDir "transfer_all_caller.tz") >>= originate "transfer_all_caller" () . noViews- transfer transferAllAddr [tz|100u|] $ calling (ep @"ReceiveXtz") ()- transfer transferAllCallerAddr $ calling (ep @"CallCPS") $ toTAddress transferAllAddr+ transfer transferAllAddr [tz|100u|] $ calling #receiveXtz ()+ transfer transferAllCallerAddr $ calling #callCPS $ toTAddress transferAllAddr ]
test/TestSuite/Cleveland/ExpectFailure.hs view
@@ -49,79 +49,79 @@ (defaultContract testContractWithNumericErrors) [tz|1u|] - attempt (transfer contractAddr $ calling (ep @"TriggerFailWith") ()) >>= \case+ attempt (transfer contractAddr $ calling #triggerFailWith ()) >>= \case Left err -> checkTransferFailure err $ failedWith (constant [mt|oops|]) Right _ -> failure "Expected contract to fail" catchTransferFailure $- transfer contractAddr $ calling (ep @"TriggerFailWith") ()+ transfer contractAddr $ calling #triggerFailWith () expectTransferFailure (failedWith (constant [mt|oops|])) $- transfer contractAddr $ calling (ep @"TriggerFailWith") ()+ transfer contractAddr $ calling #triggerFailWith () expectTransferFailure (failedWith (constant [mt|oops|]) && addressIs contractAddr) $- transfer contractAddr $ calling (ep @"TriggerFailWith") ()+ transfer contractAddr $ calling #triggerFailWith () expectFailedWith [mt|oops|] $- transfer contractAddr $ calling (ep @"TriggerFailWith") ()+ transfer contractAddr $ calling #triggerFailWith () expectError (VoidResult False) $- transfer contractAddr $ calling (ep @"VoidEP") (mkVoid True)+ transfer contractAddr $ calling #voidEP (mkVoid True) expectTransferFailure (failedWith $ constant (1 :: Natural, (2 :: Natural, 3 :: Natural))) $- transfer contractAddr $ calling (ep @"TriggerFailWithRightCombedPair") ()+ transfer contractAddr $ calling #triggerFailWithRightCombedPair () -- Check that string and bytes forms of 'chain_id' are equal if they are -- used as error argument. let c = fromRight (error "impossible") $ parseChainId "NetXUdfLh6Gm88t" expectTransferFailure (failedWith (constant @ChainId c)) $- transfer contractAddr $ calling (ep @"TriggerFailWithChainIdStr") ()+ transfer contractAddr $ calling #triggerFailWithChainIdStr () expectTransferFailure (failedWith (constant @ChainId c)) $- transfer contractAddr $ calling (ep @"TriggerFailWithChainIdBytes") ()+ transfer contractAddr $ calling #triggerFailWithChainIdBytes () expectCustomError #customError 1 $- transfer contractAddr $ calling (ep @"TriggerFailWithCustomError") ()+ transfer contractAddr $ calling #triggerFailWithCustomError () expectCustomError_ #customErrorUnit1 $- transfer contractAddr $ calling (ep @"TriggerFailWithCustomErrorUnit1") ()+ transfer contractAddr $ calling #triggerFailWithCustomErrorUnit1 () expectCustomError_ #customErrorUnit2 $- transfer contractAddr $ calling (ep @"TriggerFailWithCustomErrorUnit2") ()+ transfer contractAddr $ calling #triggerFailWithCustomErrorUnit2 () expectCustomErrorNoArg #customErrorNoArg $- transfer contractAddr $ calling (ep @"TriggerFailWithCustomErrorNoArg") ()+ transfer contractAddr $ calling #triggerFailWithCustomErrorNoArg () expectCustomErrorAnyArg #customError $- transfer contractAddr $ calling (ep @"TriggerFailWithCustomError") ()+ transfer contractAddr $ calling #triggerFailWithCustomError () expectCustomErrorAnyArg #customErrorUnit1 $- transfer contractAddr $ calling (ep @"TriggerFailWithCustomErrorUnit1") ()+ transfer contractAddr $ calling #triggerFailWithCustomErrorUnit1 () expectCustomErrorAnyArg #customErrorNoArg $- transfer contractAddr $ calling (ep @"TriggerFailWithCustomErrorNoArg") ()+ transfer contractAddr $ calling #triggerFailWithCustomErrorNoArg () shouldFailWithMessage "Contract failed with any custom error tagged with \"WrongErrorTag\"" $ expectCustomErrorAnyArg #wrongErrorTag $- transfer contractAddr $ calling (ep @"TriggerFailWithCustomErrorNoArg") ()+ transfer contractAddr $ calling #triggerFailWithCustomErrorNoArg () shouldFailWithMessage "Contract failed with any custom error tagged with \"CustomError\"" $ expectCustomErrorAnyArg #customError $- transfer contractAddr $ calling (ep @"TriggerShiftOverflow") ()+ transfer contractAddr $ calling #triggerShiftOverflow () shouldFailWithMessage "Expected an exception to be thrown, but it wasn't" $ expectCustomErrorAnyArg #customErrorNoArg pass expectNumericError errorTagMap (VoidResult False) $- transfer contractNumericAddr $ calling (ep @"VoidEP") $ mkVoid True+ transfer contractNumericAddr $ calling #voidEP $ mkVoid True expectTransferFailure shiftOverflow $- transfer contractAddr $ calling (ep @"TriggerShiftOverflow") ()+ transfer contractAddr $ calling #triggerShiftOverflow () expectTransferFailure gasExhaustion $- transfer contractAddr $ calling (ep @"TriggerGasExhaustion") ()+ transfer contractAddr $ calling #triggerGasExhaustion () expectTransferFailure emptyTransaction $ transfer validAddr [tz|0u|]@@ -138,7 +138,7 @@ failedWith (constant @MText "oops") || failedWith (customError #customError 1) - transfer contractAddr (calling (ep @"TriggerFailWithCustomError") ()) &+ transfer contractAddr (calling #triggerFailWithCustomError ()) & expectTransferFailure expectedErrs test_FailsIfTheGivenActionDoesNotThrow :: TestTree
test/TestSuite/Cleveland/Tasty/Report/Examples.hs view
@@ -30,7 +30,7 @@ ┏━━ #{reportExamplesPath} ━━━ 24 ┃ example1 :: EmulatedT PureM () 25 ┃ example1 = void $ signBytes "" unknownAddr- ┃ ^^^^^^^^^^^^^^^^^^^^^^^^+ ┃ ^^^^^^^^^ ┃ | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z 26 ┃ @@ -53,7 +53,7 @@ ┏━━ #{reportExamplesPath} ━━━ 47 ┃ exampleWithHelperFunction1Helper :: EmulatedT PureM () 48 ┃ exampleWithHelperFunction1Helper = void $ signBytes "" unknownAddr- ┃ ^^^^^^^^^^^^^^^^^^^^^^^^+ ┃ ^^^^^^^^^ ┃ | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z 49 ┃ @@ -108,15 +108,15 @@ ┏━━ #{reportExamplesPath} ━━━ 100 ┃ exampleMultipleLines1 = 101 ┃ void ( signBytes- 102 ┃ ""- 103 ┃ unknownAddr )- ┃ ^^^^^^^^^^^^^+ ┃ ^^^^^^^^^ ┃ | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z- 104 ┃+ 102 ┃ "" CallStack (from HasCallStack): |] ++ exampleMultipleLines2 :: EmulatedT PureM () exampleMultipleLines2 = void ( signBytes@@ -129,15 +129,15 @@ ┏━━ #{reportExamplesPath} ━━━ 121 ┃ exampleMultipleLines2 = 122 ┃ void ( signBytes+ ┃ ^^^^^^^^^+ ┃ | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z 123 ┃ ""- 124 ┃ unknownAddr )- ┃ ^^^^^^^^^^^^^- ┃ | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z- 125 ┃ CallStack (from HasCallStack): |] ++ exampleMultipleLines3 :: EmulatedT PureM () exampleMultipleLines3 = void ( signBytes@@ -150,15 +150,15 @@ ┏━━ #{reportExamplesPath} ━━━ 142 ┃ exampleMultipleLines3 = 143 ┃ void ( signBytes+ ┃ ^^^^^^^^^+ ┃ | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z 144 ┃ ""- 145 ┃ unknownAddr )- ┃ ^^^^^^^^^^^- ┃ | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z- 146 ┃ CallStack (from HasCallStack): |] ++ exampleMultipleLines4 :: EmulatedT PureM () exampleMultipleLines4 = void ( signBytes@@ -171,15 +171,15 @@ ┏━━ #{reportExamplesPath} ━━━ 163 ┃ exampleMultipleLines4 = 164 ┃ void ( signBytes+ ┃ ^^^^^^^^^+ ┃ | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z 165 ┃ ""- 166 ┃ unknownAddr )- ┃ ^^^^^^^^^^^^^^- ┃ | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z- 167 ┃ CallStack (from HasCallStack): |] ++ exampleMultipleLines5 :: EmulatedT PureM () exampleMultipleLines5 = void ( signBytes@@ -192,15 +192,15 @@ ┏━━ #{reportExamplesPath} ━━━ 184 ┃ exampleMultipleLines5 = 185 ┃ void ( signBytes+ ┃ ^^^^^^^^^+ ┃ | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z 186 ┃ ""- 187 ┃ unknownAddr )- ┃ ^^^^^^^^^^^^^^- ┃ | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z- 188 ┃ CallStack (from HasCallStack): |] ++ exampleMultipleLines6 :: EmulatedT PureM () exampleMultipleLines6 = void ( signBytes@@ -213,14 +213,14 @@ ┏━━ #{reportExamplesPath} ━━━ 205 ┃ exampleMultipleLines6 = 206 ┃ void ( signBytes+ ┃ ^^^^^^^^^+ ┃ | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z 207 ┃ ""- 208 ┃ unknownAddr )- ┃ ^^^^^^^^^^^- ┃ | Unknown address provided: tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z- 209 ┃ CallStack (from HasCallStack): |]++ unknownAddr :: ImplicitAddressWithAlias unknownAddr = AddressWithAlias [ta|tz1X59tp9P7sk8qdPwqqATVbURbN6o8sMZ7Z|] "unknown-addr"