A Setup.hs helper for doctests running

Version on this page:1
LTS Haskell 8.12:1
Stackage Nightly 2017-04-27:1
Latest on Hackage:1
BSD3 licensed and maintained by Oleg Grenrus

Module documentation for 1


Hackage Build Status

A Setup.hs helper for running doctests.

Example Usage

To use this library in your Setup.hs, you should specify a custom-setup section in your .cabal file. For example:

   base >= 4 && <5,
   cabal-doctest >= 1 && <1.1

You'll also need to specify build-type: Custom at the top of the .cabal file. Now put this into your Setup.hs file:

module Main where

import Distribution.Extra.Doctest (defaultMainWithDoctests)

main :: IO ()
main = defaultMainWithDoctests "doctests"

When you build your project, this Setup will generate a Build_doctests module. To use it in a testsuite, simply do this:

module Main where

import Build_doctests (flags, pkgs, module_sources)
import Data.Foldable (traverse_)
import Test.Doctest (doctest)

main :: IO ()
main = do
    traverse_ putStrLn args -- optionally print arguments
    doctest args
    args = flags ++ pkgs ++ module_sources


  • custom-setup section is supported starting from cabal-install-1.24. For older cabal-install's you have to install custom setup dependencies manually.

  • stack respects custom-setup starting from version 1.3.3. Before that you have to use explicit-setup-deps setting in your stack.yaml. (stack/GH-2094)

  • There is [an issue in the Cabal issue tracker]( Cabal/2327) about adding cabal doctest command. After that command is implemented, this library will be deprecated.


Copyright 2017 Oleg Grenrus.

Available under the BSD 3-clause license.


1 -- 2017-01-31

  • First version. Released on an unsuspecting world.
comments powered byDisqus