Test Cases for Configurations
Thomas Schilling
nominolo at googlemail.com
Fri Jun 15 09:06:07 EDT 2007
On 15 jun 2007, at 14.09, Neil Mitchell wrote:
> Hi
>
>> I thought we'd all agreed that a library package should always export
>> the same modules (and class, functions, type signatures etc), so
>> that if
>> foo depends on bar and you have bar installed then you know that
>> you can
>> build foo.
>>
>> In fact, I thought you were one of the people arguing in favour of
>> this
>> for the base package!
>
> I was, for the base package. I want other people to obey these rules,
> but occasionally I want to violate them :)
>
> I'm not sure if in general it should be possible to change the export
> list. Perhaps we can rely on a large number of evil stares to stop
> this being common practice, and yet permit it occasionally.
>
> One thing I would like is given a package _data, which provides a data
> type, and a package _class which provides a class and various
> instances, I'd like to write in the _class cabal file:
>
> #if has _data
> module Class.InstanceForData
> #endif
>
> Perhaps configurations can support that?
>
You mean like this?
Name: demo
Cabal-version: >= 1.3
Description: This is a test file
with a description longer than two lines.
flag Debug {
Description: Enable debug information
Default: False
}
library {
build-depends: blub
exposed-modules: Demo.Main, Demo
if flag(debug) {
build-depends: hunit
ghc-options: -DDEBUG
exposed-modules: Demo.Internal
}
}
executable foo-bar {
Main-is: Foo.hs
}
Of course in this case we'd need to add some flags to the version
number, to indicate, that tho installed version has a certain feature
enabled.
This could be solved with a different package name of course, but I
think it should be easy to add tags to a package version number:
if flag(debug) {
build-depends: hunit
ghc-options: -DDEBUG
tag: debug
exposed-modules: Demo.Internal
}
Testing for the tag is (almost) already supported:
build-depends: demo >= 1.1-debug,
It should be used often, but it could if necessary.
More information about the cabal-devel
mailing list