[Haskell-cafe] Re: GSoC: Improving Cabal's Test Support
Gregory Crosswhite
gcross at phys.washington.edu
Tue Apr 6 20:42:23 EDT 2010
On Apr 6, 2010, at 5:28 PM, Thomas Tuegel wrote:
> On Tue, Apr 6, 2010 at 7:43 PM, Rogan Creswick <creswick at gmail.com> wrote:
>> test-framework and test-runner both address the second problem, and
>> those solutions can be kept separate, at least for now. Figuring out
>> the best way to specify test commands, dependencies, build/execution
>> order, etc. is going to take some substantial effort, and I think that
>> should be the first goal of the project.
>
> Ok, this is the bottom-line that I didn't understand after our first
> exchange, but I think now I do: I should entirely scrap the second
> aspect of my proposal and focus exclusively on making Cabal build and
> run test programs.
I concur with this conclusion.
>> Cabal allows for multiple executable sections -- are multiple test
>> sections allowed? If so, how are they handled when 'cabal test' is
>> invoked? If not, will there be any support for running multiple test
>> suites? (more on this below).
>>
>> While the test executable could be configured to run different sets of
>> tests (at runtime? hm.. we may need more flags to 'cabal test'), there
>> are some situations it's necessary to build multiple test suites
>> because of odd library dependencies. (for example, testing certain
>> combinations of libraries--imagine supporting multiple versions of
>> ghc.)
>
> I had intended to allow multiple 'Executable' sections; that's what I
> meant by "this is really an 'Executable' stanza by another name". I
> think that takes care of your concern about building multiple test
> suites with different dependencies, also.
>
> My thinking is that 'cabal test' should run all the tests that were
> built, and 'cabal test foo' should run only the test named 'foo'.
This sounds like a good idea to me.
>> The existing Executable sections may serve the need fine, if we could
>> specify how to run the tests in a different way. Perhaps a list of
>> test commands could be specified instead, eg:
>>
>>> TestCommands: foo-test-ghc6.6,
>>> foo-test-ghc6.8,
>>> foo-props --all
>>
>> Anyhow, just food for thought.
>
> One of the reasons I prefer implementing a dedicated 'Test' stanza is
> that it makes it easier to tell which executables to install. There
> may be situations where we want to install test programs, but there
> will _always_ be situations where we _don't_ want to. (Maybe
> '--{en,dis}able-tests' passed to 'cabal install' should control this?)
> Could we take a 'TestCommands' list and parse out the options to get
> the executable names? Yes, but relying on that to work makes me
> uneasy. I think the more robust way to specify executable-specific
> options instead would be to add a field to the 'Test' section
> ('run-options' seems to be consistent with the naming scheme) that
> doesn't exist in 'Executable'.
>
> (I've snipped some of the comments here; if forget about test
> frameworks for this proposal, it's all tangential.)
I agree with your reasoning here about having a separate Test stanza so that tests can be kept separate from the rest of the package.
- Greg
More information about the Haskell-Cafe
mailing list