# from Michael G Schwern
# on Wednesday 11 April 2012 11:06:

>> What exactly makes you uneasy? Maybe there is a way to address that
>> if you can be more specific.
>
>Mostly that it's cramming yet more complexity into core test library
> for a fairly narrow use case and functionality that lives quite
> happily in its own module.  It's already difficult enough to keep
> stable.
>
>To reverse it, why should it be in Test::More?  "People don't like to
> have extra test dependencies" is not accepted.

Looking at this a different way, instead of a library, make a distzilla 
extension (or whatever) which generates (and regenerates) a 00-load.t 
as per Ovid's earlier example.

The trouble with having it in a library is not just that you have a test 
dependency, but also that you have to add more complexity to the 
library (and then you have a test dependency on a newer version) 
whenever someone wants to do a complex thing.

Many modules in a distribution may not load unless $optional_dependency 
is satisfied.  But, it is good to precheck all of the modules in a 
distribution before starting tests (aside: did someone say prefork?) 
and helps to wrap this in some useful diagnostic + bail out.

I think something which embeds code in a 00-load.t, plus helps you 
maintain a list of modules by scanning lib/ would be a handy way to do 
that.  (Perhaps a list + hash to address the optional dependencies and 
each optional module has a subref to determine if it is enabled.)

One could argue that the functionality should be included in each test 
file to keep things orthogonal.  Such a one may find that there may be 
a way to require("./t/00-load.t") from each test file, but might also 
end up with a library and/or a hybrid with regenerative breaking 
(prefork.)

--Eric
-- 
But you can never get 3n from n, ever, and if you think you can, please
email me the stock ticker of your company so I can short it.
--Joel Spolsky
---------------------------------------------------
    http://scratchcomputing.com
---------------------------------------------------

Reply via email to