th-test-utils-1.2.1: Utility functions for testing Template Haskell code
MaintainerBrandon Chinn <brandon@leapyear.io>
Stabilityexperimental
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Language.Haskell.TH.TestUtils

Description

This module defines utilites for testing Template Haskell code.

Synopsis

Configuring TestQ

data QState (mode :: MockedMode) Source #

State information for mocking Q functionality.

Constructors

QState 

Fields

Instances

Instances details
Show (QState mode) Source # 
Instance details

Defined in Language.Haskell.TH.TestUtils.QState

Methods

showsPrec :: Int -> QState mode -> ShowS #

show :: QState mode -> String #

showList :: [QState mode] -> ShowS #

Lift (QState mode :: Type) Source # 
Instance details

Defined in Language.Haskell.TH.TestUtils.QState

Methods

lift :: Quote m => QState mode -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => QState mode -> Code m (QState mode) #

data QMode (mode :: MockedMode) where Source #

Constructors

MockQ :: QMode 'FullyMocked

All Q actions are mocked and IO actions are disallowed.

MockQAllowIO :: QMode 'FullyMockedWithIO

Same as MockQ, except IO actions are passed through. Useful if your TH code, for example, reads files with runIO.

AllowQ :: QMode 'NotMocked

No mocking is done. Useful for running Q as normal, but you need to get error messages.

Instances

Instances details
Lift (QMode mode :: Type) Source # 
Instance details

Defined in Language.Haskell.TH.TestUtils.QMode

Methods

lift :: Quote m => QMode mode -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => QMode mode -> Code m (QMode mode) #

Show (QMode mode) Source # 
Instance details

Defined in Language.Haskell.TH.TestUtils.QMode

Methods

showsPrec :: Int -> QMode mode -> ShowS #

show :: QMode mode -> String #

showList :: [QMode mode] -> ShowS #

data ReifyInfo Source #

Instances

Instances details
Show ReifyInfo Source # 
Instance details

Defined in Language.Haskell.TH.TestUtils.QState

Lift ReifyInfo Source # 
Instance details

Defined in Language.Haskell.TH.TestUtils.QState

Methods

lift :: Quote m => ReifyInfo -> m Exp #

liftTyped :: forall (m :: Type -> Type). Quote m => ReifyInfo -> Code m ReifyInfo #

loadNames :: [Name] -> ExpQ Source #

A helper for loading names for reifyInfo

Usage:

QState
  { reifyInfo = $(loadNames [''Int, ''Maybe])
  , ...
  }

unmockedState :: QState 'NotMocked Source #

A shortcut for defining an unmocked Q.

Running TestQ

runTestQ :: forall mode a. IsMockedMode mode => QState mode -> Q a -> TestQResult mode a Source #

runTestQErr :: forall mode a. (IsMockedMode mode, Show a) => QState mode -> Q a -> TestQResult mode String Source #

tryTestQ :: forall mode a. IsMockedMode mode => QState mode -> Q a -> TestQResult mode (Either String a) Source #