How can I set up a simple test with Cabal?

Greg Bacon picture Greg Bacon · Jun 25, 2009 · Viewed 8.5k times · Source

I have a Haskell project and Cabal package-description that allows me to build and install my package with

$ cabal configure
$ cabal build
$ cabal install

But what about cabal test? Cabal's help says to configure a test suite with UserHooks, but how can I do that?

Answer

Jacob Stanley picture Jacob Stanley · Sep 10, 2011

As Duncan mentioned in Greg's answer, Cabal-1.10 has support for test suites out of the box.

The manual seems to have the best information that's I've found regarding how to make use of this.

Here's a snippet from the manual which shows how to use the exitcode-stdio test type:

foo.cabal

Name:           foo
Version:        1.0
License:        BSD3
Cabal-Version:  >= 1.9.2
Build-Type:     Simple

Test-Suite test-foo
    type:       exitcode-stdio-1.0
    main-is:    test-foo.hs
    build-depends: base

test-foo.hs:

module Main where

import System.Exit (exitFailure)

main = do
    putStrLn "This test always fails!"
    exitFailure