kudzu-0.1.0.0: README.md
# KUDZU will slowly grow to cover all of your code
Kudzu is a library that throws test cases at your property tests until the code coverage no longer increases.
# WHY?
Property testing has no feedback loop, you randomly choose a number of test cases and hope for the best.
How do you know if your property tests were any good? The best feedback I know is to use [hpc](https://wiki.haskell.org/Haskell_program_coverage) and look at the pretty colored HTML output to see what code was exercised.
But wait, why do *I* have to look at the output? Isn't that why we have computers?
# HOW?
In Haskell, you can get [code coverage results](https://hackage.haskell.org/package/hpc/docs/Trace-Hpc-Reflect.html#v:examineTix) while your program is running!
# WHAT FEEDBACK LOOP?
The simplest feedback loop is to keep running random tests until new code coverage stops increasing.
# HOW DO I MAKE IT GO?
add kudzu to your test-suite depends,
# TELL ME MORE
The best write up of this idea is [Random Test Generation, Coverage Based](https://danluu.com/testing/).
# TODO
- [x] support HedgeHog
- [x] support QuickCheck
- [x] support LeanCheck
- [ ] figure out how to use Kudzu on Kudzu without looping forever
# EXAMPLE
You can see kudzu in use in the [tests](https://github.com/shapr/takedouble/blob/main/test/Main.hs) for [takedouble](https://github.com/shapr/takedouble/)