On Sat, Dec 15, 2001 at 01:18:23PM -0500, Michael G Schwern wrote:
> On Sat, Dec 15, 2001 at 10:52:07AM -0700, chromatic wrote:
> > On Sat, 15 Dec 2001 07:10:33 -0700, Barrie Slaymaker wrote:
> >
> > > How about having Test::More use eq_or_diff_data() in is_deeply() if it cane
> > > eval "use Test::Differences;" and use it's current routine if it can't? That's
> > > as seamless as you can get.
> >
> > Wild idea:
> >
> > How about splitting out the error-reporting, with a nice default in
> > Test::Builder or wherever, using optional modules if possible?
> >
> > use Test::More
> > tests => 100,
> > report => Test::Differences;
>
> The two modules can already work together in the same script. So, if
> you have Test::Differences, which has superior complex data structure
> handling, why are you calling is_deeply() in the first place?
The reason I was suggesting an automatic remapping of is_deeply() to be
eq_or_diff_data() inside Test::More is so that you can write a script
that only uses Test::More, but if you install Test::Differences, you get
the fancier output.
This would address Tatsuhiko Miyagawa's issue of wanting to minimize the
prerequisites (and thus the hassle) for CPANed modules, yet leverage
Test::Differences when needed.
A snippet of code is worth a kiloword, so this is what I mean. First,
rename sub is_deeply to sub _is_deeply in More.pm, then something like:
eval <<'EOCODE1' || eval <<'EOCODE2' ;
require Test::Differences;
sub is_deeply {
goto &eq_or_diff_data;
}
1;
EOCODE1
sub is_deeply {
goto &_is_deeply
}
EOCODE2
or equivalent is what I mean.
Seems very DWIMmerly to me, but YMMV, of course :).
Whether or not you want to alter Test::More's API to offer pluggable
reporting modules is another question; I'm not deeply concerned about
that.
- Barrie