cardano-wallet-test-utils-2020.12.8: Shared utilities for writing unit and property tests.
Copyright© 2018-2020 IOHK
LicenseApache-2.0
Safe HaskellNone
LanguageHaskell2010

Test.Utils.Trace

Description

Provides functions for setting up and capturing logging so that expectations about logging can be asserted in test scenarios.

Synopsis

Documentation

withLogging :: ((Tracer IO msg, IO [msg]) -> IO a) -> IO a Source #

Run an action with a logging Trace object, and a function to get all messages that have been traced.

captureLogging :: (Tracer IO msg -> IO a) -> IO ([msg], a) Source #

Run an action with a Trace, returning captured log messages along with the result of the action.

countMsg :: Prism' s a -> [s] -> Int Source #

Count elements in the list matching the given Prism. Handy for counting log messages which are typically constructed as sum types with many constructors.

A Prism look scary but can be obtained very easily if the target type is deriving Generic. From there, use

`Data.Generics.Sum.Constructor#_Ctor` from `generic-lens`.

Example:

>>> data MySumType = MyConstructor | MyOtherConstructor deriving Generic
>>> xs = [ MyConstructor, MyOtherConstructor, MyConstructor ]
>>> count (_Ctor @"MyConstructor") xs
2