Hi all,

So here's the situation as it I see it.  There's a general consensus
that we need more flexibility in how we run our tests.  This is because
there are two broad categories of tests:

1.  Tests which absolutely, definitely, unquestionably, beyond a shadow
of a doubt, MUST NEVER FAIL.  I'll call these MNF tests.

2.  Everything else.

MNF tests mean that there's a real, honest-to-god problem in the
software.  It doesn't mean that someone forgot =back tag.  It doesn't
mean that network tests fail because the network went down partway
through the test.  It doesn't mean that yes, they have your favorite
GUI module installed but aren't running X.  If an MNF test fails, you
can't trust the module and the author should be notified.

We might disagree with what constitutes an MNF test.  I say this to
avoid email from folks who might disagree with some of what I describe
above, but that's *not* the issue here and I would hate for us to get
sidetracked.  The issue is that we generally agree that there are MNF
tests and all other tests.

What we appear to disagree on is how to handle non-MNF tests.  The main
dividing line seems to be whether we should have a separate test
directory.  There are suggestions requiring that people consider things
like Test::Manifest, YAML, possibly XML or Ant-style tools.  These are
fine suggestions, but I don't think they're our best option.  Too many
folks have trouble installing extra modules or balk at installing extra
modules or have strange business rules regarding what they can and
cannot install.  You can argue about how stupid this is, but there's a
difference between an ideal world and the real one.

There's also the the question of recursive tests.  Right now, how do
people run tests?  Sometimes via prove, sometimes via runtests,
sometimes via './Build test', sometims via 'make test', sometimes via
smolder, sometimes via custom tools built in-house or via TAP::Parser's
extensibility.  I've had Adrian Howard report a bug in TAP::Parser
because he runs tests recursively by default (Adrian, correct me if I'm
wrong) and I'm sure he's not the only one.  By insisting that all tests
must always be in 't/', we're either insisting upon maintenance of the
admittedly unsatisfactory status quo or we have the potential of having
to build new tools and possibly create more bugs and then the daunting
task of bringing the Perl community up to speed.

We cannot control how people are going to run tests and suggestions on
changing how we currently do things has a great potential to impact
that.  We need to accept that.  If we can swing it, whatever we do
needs to be as seamless as possible and backwards compatile. 

By historical accident, virtually all tools expect that tests are in
test.pl or the 't/' directory.  Merely by taking advantage of this and
using a different, standard directory, we avoid breaking any of those
tools.  A new directory:

1.  addresses the current problem.  
2.  doesn't require new tools.
3.  doesn't break old installations.
4.  still allows us to adopt solutions previously recommended!

We know the downside of just sticking to the 't/' directory is that
having expectations that we can and must change large portions of the
Perl community is a lousy expectation.  I'm sure we can think of plenty
of examples of this :)

So please, if you want to shove all MNF and non-MNF tests in 't/', list
its benefits (considering the problems I've listed above) and then list
reasons why separating them into a new directory is such a bad idea. 
Once you can list the strengths and weaknesses of each proposal, you
can try and weigh them.

So far I've not seen a single compelling argument *for* sticking
everything in the 't/' directory and I haven't seen a single compelling
argument *against* a new directory.

Cheers,
Ovid

--
Buy the book  - http://www.oreilly.com/catalog/perlhks/
Perl and CGI  - http://users.easystreet.com/ovid/cgi_course/
Personal blog - http://publius-ovidius.livejournal.com/
Tech blog     - http://use.perl.org/~Ovid/journal/

Reply via email to