redact-0.4.0.0: test/TestLib.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module TestLib where
-- https://hackage.haskell.org/package/ansi-terminal
import qualified System.Console.ANSI as Term
-- https://hackage.haskell.org/package/base
import Control.Monad.IO.Class (MonadIO(liftIO))
import GHC.Stack (HasCallStack)
-- https://hackage.haskell.org/package/HMock
import Test.HMock (makeMockable)
-- https://hackage.haskell.org/package/tasty-hunit
import qualified Test.Tasty.HUnit as HUnit
-- (redact)
import Redact.Monad.Handle (MonadHandle)
import qualified Redact.Monad.Terminal as RMT
import Redact.Monad.Terminal (MonadTerminal)
------------------------------------------------------------------------------
makeMockable [t|MonadHandle|]
makeMockable [t|MonadTerminal|]
------------------------------------------------------------------------------
redactSGRs :: [Term.SGR]
redactSGRs = RMT.redactSGRs Term.Red Term.Vivid
------------------------------------------------------------------------------
assertSuccess
:: (HasCallStack, MonadIO m, Show e)
=> Either e ()
-> m ()
assertSuccess = \case
Right () -> pure ()
Left err ->
liftIO . HUnit.assertFailure $ "unexpected error: " ++ show err