Automated testing for Haskell programs
Haskell
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
lib/base
sessions
src
test
tmp
.gitignore
.travis.yml
LICENSE
Main.hs
README.md
dart-haskell.cabal
test.sh

README.md

Description

Automated testing for Haskell programs. We take a program, simulate it against likely runs and report inputs that make it crash.

The idea is motivated by Godefroid, Patrice and Klarlund, Nils and Sen, Koushik, DART: Directed Automated Random Testing}, PLDI2005, 2005

Roadmap

  • Compile, interpret and test expressions.
  • Find paths that were not run using an SMT solver -- TODO
  • Simulate further -- TODO

It reports

  • How many functions were run. How many functions seem normal.
  • Which functions terminated because of an error and what kind of parameters make them crash.

Install

  1. Download Z3 and let its binary be in the binaries scope, e.g. on Linux, add it to your $PATH

  2. Install DART-Haskell

    git clone https://github.com/kmels/dart-haskell cd dart-haskell cabal install

Usage examples

> dart-haskell -f examples/interpreter/GHC.Num.hs -e numberTen
> 10

> dart-haskell -f examples/interpreter/data-constructors.hs -e tree1
> Branch Branch Leaf 1 Leaf 2 Leaf 3