[Haskell-cafe] packages and QuickCheck

Conal Elliott conal at conal.net
Tue Sep 9 10:05:24 EDT 2008


Thanks, Sean.

On Tue, Sep 9, 2008 at 3:46 PM, Sean Leather <leather at cs.uu.nl> wrote:

>
> How do folks like to package up QuickCheck tests for their libraries?  In
>> the main library?  As a separate repo & package?  Same repo & separate
>> package?  Keeping tests with the tested code allows testing of non-exported
>> functionality, but can add quite a lot of clutter.
>>
>
> I have QuickCheck properties plus HUnit tests, but I think the question is
> the same. For me, it's in the same repository and shipped with the package
> source. I think that if you ship source (even via Hackage), you should also
> ship tests. So, if somebody wants to modify the source, they can run the
> tests. And making it convenient to test is very important, so I have "cabal
> test" (or "runhaskell Setup.hs test" without cabal-install) configured to
> run the tests. I don't think tests should (in general) be part of the
> user-visible API, so I have them external to the module hierarchy.
>

How do you set up cabal to do these tests?

Do your libraries depend on HUnit?

Where do you like to place your tests?  In the functionality modules?  A
parallel structure?  A single Test.hs file somewhere?

Testing non-exported functionality without exporting the test interface
> seems difficult in general. Is there a way to hide part of a module
> interface with Cabal? Then, you could have a 'test' function exported from
> each module for testing but hidden for release.
>

My current leaning is to split a package "foo" into packages "foo" and
>> "foo-test"
>>
>
> What benefit does this provide?
>

It keeps the library and its dependencies small.  Probably some of the
alternatives do as well.  For testing, I'm using
checkers<http://haskell.org/haskellwiki/Checkers>in addition to
QuickCheck, and I'd prefer not to make casual library users
have to pull in those libraries as well.

  - Conal
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20080909/62673e91/attachment.htm


More information about the Haskell-Cafe mailing list