
#215: Overhaul support for package's tests ----------------------------+----------------------------------------------- Reporter: duncan | Owner: Type: task | Status: new Priority: normal | Milestone: Component: Cabal library | Version: 1.2.3.0 Severity: normal | Resolution: Keywords: | Difficulty: project(> week) Ghcversion: 6.8.2 | Platform: ----------------------------+----------------------------------------------- Comment (by duncan): Here's an idea {{{ test test-is: Test build-depends: QuickCheck hs-source-dirs: tests src }}} So imaging a dir layout like: {{{ foo.cabal src/* tests/Test.hs }}} where `tests/Test.hs` is {{{ module Test (tests) where tests :: SomethingYetToBeDecided tests = ... }}} So a test is really like an executable or library. It can have all the ordinary buildinfo which for example allows it to depend on extra testing libs. The difference is that instead of having a single Main.main entry point or a bunch of exposed modules, it has a test entry point in one module. That also means the interface is a Haskell one, not a process text stdin/stdout one. That's likely more portable between Haskell implementations and crucially it allows us to build the test code with additional profiling or hpc or whatever. It also means that in principle such tests could be secure if the test type does not involve IO and we use a Haskell implementation that can run untrusted pure code securely. The tricky bit is what the type of the test entry point should be. We want to be able to gather the results of the tests. Perhaps the test stanza also needs to declare what version of the test api interface it is using since it is likely to be refined/improved over time. -- Ticket URL: http://hackage.haskell.org/trac/hackage/ticket/215#comment:2 Hackage http://haskell.org/cabal/ Hackage: Cabal and related projects