Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to separate production and test code in Haskell

In other languages I like to put my unit tests in a different directory structure from the production code to keep things cleanly separated. Is there a typical convention in Haskell of how to do that or something similar?

like image 583
mentics Avatar asked Feb 09 '11 19:02

mentics


2 Answers

I think the best example I've came so far for that is the snap project

http://github.com/snapframework/snap-core

Check the test folder, they develop their own cabal package just for testing, and have a shell script (runTestAndCoverage.sh) that executes the final compiled test suite.

Good Luck.

like image 32
Roman Gonzalez Avatar answered Oct 21 '22 19:10

Roman Gonzalez


There is a typical convention codified at http://www.haskell.org/haskellwiki/Structure_of_a_Haskell_project.

Additionally, you can add the test build to the main cabal as in https://github.com/ekmett/speculation/blob/master/speculation.cabal

There are some bonuses to the separate cabal method. Namely that testing methods like the quickcheck generators for datatypes are available in a second project-test style cabal that others can import if they are using your data structures in their projects, but I prefer the single cabal approach. It depends on the purpose of your library though.

Haskell testing workflow is useful for more testing info.

like image 98
Alex M Avatar answered Oct 21 '22 20:10

Alex M