> use Test::Unit::Debug;
>  {
>     no warnings 'redefine';
>      package Test::Unit::Debug;
>      *Test::Unit::Debug::debug = sub {
>          my ($package, $filename, $line) = caller();
>          print $out "***************************************that's the
> facts, Jack!\n";
>          print $out @_ if $DEBUG{$package};
>          }
>  }

Trying to get that working exceeded my time box, so I went in for a hack.

Firstly, 'debug' was the wrong method to try to override. I'l eventually
figure out how to perform a hostile override, but for now I went with these
adjustments to the actual source.

First I hack Exception.pm so errors are in this format: path\file(line):

sub stringify {
    my $self = shift;
    my $file = $self->file;
    my $line = $self->line;
    my $message = $self->text || 'Died';
    my $object = $self->object;

    my $winFile = $file;
    $winFile =~ s/\//\\/g;  #  "it's under a Big Dubb'ya"!

    my $str = "$winFile($line)";
    $str .= ': ' . $object->to_string() if $object &&
$object->can('to_string');
    $str .= "\n" . $message;
    return $str;
}

Next, I transmogrify TestRunner::print_failures:

...
    for my $f (@{$result->failures()}) {
        chomp(my $f_to_str = $f);
        $self->_print("\n") if $i++;
        $self->_print("$i) $f_to_str\n");

        use Win32::API::OutputDebugString qw(OutputDebugString);

        OutputDebugString("$f_to_str\n");

        $self->_print("\nAnnotations:\n", $f->object->annotations())
          if $f->object->annotations();
    }
...

The result: I can use tests to drive development in an app written in C++,
using an enourmous test suite written in Perl. All using OneButtonTesting,
without manually navigating back to failure lines.

--
  Phlip
        http://www.greencheese.org/SkeletonCrew
  --  Have a :-) day  --




-------------------------------------------------------
This sf.net email is sponsored by: See the NEW Palm 
Tungsten T handheld. Power & Color in a compact size!
http://ads.sourceforge.net/cgi-bin/redirect.pl?palm0001en
_______________________________________________
Perlunit-users mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/perlunit-users

Reply via email to