# Difference between revisions of "DocTest"

SimonHengel (talk | contribs) m |
SimonHengel (talk | contribs) (fix formatting issue) |
||

Line 33: | Line 33: | ||

</haskell> |
</haskell> |
||

− | (A line starting with <hask>>>></hask> denotes an ''expression''. |
||

+ | (A line starting with <hask>>>></hask> denotes an ''expression''. All comment lines following an expression denote the ''result'' of that expression. Result is defined by what an [http://en.wikipedia.org/wiki/Read-eval-print_loop REPL] (e.g. ghci) prints to <hask>stdout</hask> and <hask>stderr</hask> when evaluating that expression.) |
||

− | All comment lines following an expression denote the |
||

− | ''result'' of that expression. Result is defined by what an [http://en.wikipedia.org/wiki/Read-eval-print_loop REPL] |
||

− | (e.g. ghci) prints to <hask>stdout</hask> and <hask>stderr</hask> when |
||

− | evaluating that expression.) |
||

With DocTest you may check whether the implementation satisfies the given examples, by typing: |
With DocTest you may check whether the implementation satisfies the given examples, by typing: |

## Revision as of 15:55, 25 January 2011

## Contents

## What is DocTest

DocTest is a small program, that checks examples in Haddock comments. It is modeled after doctest for Python.

## Installation

DocTest is available from Hackage. Install it, by typing:

$ cabal install doctest

## Usage

Below is a small Haskell module. The module contains a Haddock comment with some examples of interaction. The examples demonstrate how the module is supposed to be used.

```
module Fib where
-- | Compute Fibonacci numbers
--
-- Examples:
--
-- >>> fib 10
-- 55
--
-- >>> fib 5
-- 5
fib :: Int -> Int
fib 0 = 0
fib 1 = 1
fib n = fib (n - 1) + fib (n - 2)
```

(A line starting with `>>>`

denotes an *expression*. All comment lines following an expression denote the *result* of that expression. Result is defined by what an REPL (e.g. ghci) prints to `stdout`

and `stderr`

when evaluating that expression.)

With DocTest you may check whether the implementation satisfies the given examples, by typing:

$ doctest Fib.hs

You may produce Haddock documentation for that module with:

$ haddock -h Fib.hs -o doc/

## Hacking

DocTest is still experimental. You can find a reference to the public source repository at Hackage.

Patches are gladly welcome!