On 12/04/15 22:14, Chad Granum wrote:
> Thanks for the feedback!
>
> A few people have asked for a transition document like what you are
> asking for, I have yet to write it, but it is on my list.
>
> The main thing for a darkpan maintainer to do is this:
>
> Run all your tests against the latest dev release on cpan
> (
https://metacpan.org/release/EXODIST/Test-Simple-1.301001_100). This
> can easily be done with a local::lob if you do not want to actually
> install it. If all your tests pass then there is nothing you need to
> do, everything just works. If this is the case please mention it
> somewhere, such as on this list. So far I have gotten only a handful
> of darkpan results, none of them reporting anything broken. It would
> be nice if there was a public list of darkpan results I can keep, and
> I may start one on github.
>
> If something is broken it would be best to send me a bug report on
> github. My goal is to break as little as possible, so if I do break
> something for you I would prefer fixing it over making you change you
> things. The only exceptions are when things are very crazy: Replacing
> the Test::Builder singleton, or breaking encapsulation by directly
> accessing hash keys of the Test::Builder object. The new stuff even
> goes so far as to support legacy monkeypatching of key methods in the
> Test::Builder namespace.
>
> -Chad
Hi Chad,
I have now run our entire darkpan test suite with the version of Test::Simple above. It takes around 3 hours to run :-( and tests 3 APIs (one of which is very large) using JSON sent over various transports (including HTTP). I found no differences from the the previous (and much older) version.
Our test suite uses, Test::More, Test::Deep, Test::Group and Test::Builder. The only thing we did I was unsure would work was overriding Test::Builder::ok and Test::Builder::BAIL_OUT as follows:
if ($self->{verbose}) {
Test::Group->verbose($args{verbose}); # so we can see the subtests run:
# Part copied from
#
http://www.nntp.perl.org/group/perl.qa/2009/05/msg12229.html
# add call frame to ok's if verbose running
my $ok = \&Test::Builder::ok;
#no warnings 'redefined';
*Test::Builder::ok = sub {
my ($package, $filename, $line);
my $frame = 0;
my $frames = '';
for (;;) {
( $package, $filename, $line ) = caller($frame);
last if !defined $package;
$frame++;
next if $filename =~ /^\/usr/;
$frames .= "$package:$line, ";
}
$_[0]->diag("ok, $frames") if $frames;
goto $ok;
};
# redefine the BAIL_OUT method to show call stack:
{
my $bail_out = \&Test::Builder::BAIL_OUT;
*Test::Builder::BAIL_OUT = sub {
my ($package, $filename, $line);
my $frame = 0;
my $frames = '';
for (;;) {
( $package, $filename, $line ) = caller($frame);
last if !defined $package;
$frame++;
#next if $filename =~ /^\/usr/;
$frames .= "$package:$filename:$line, ";
}
$_[1] = "$_[1] - $frames";
goto $bail_out;
};
}
but that did not seem to cause a problem.
I hope this gives you some further confidence.
Martin