Here's a version that actually works.  Feel free to take this module and
run with it.

Trying to use this module uncovered a bug in Test::More::plan() where this:

  plan tests => 1;

is the equivalent of

  plan tests => 1;
  Test::More->import;

Thus you pretty much must do:

  use Test::More tests => 1;
  use Test::ok;


package Test::ok;

use Test::Builder;
my $TB = Test::Builder->new;

sub import {
    my $caller = caller;
    no warnings 'redefine';
    *{$caller.'::ok'} = \&ok;
}

sub ok {
    my @args = @_;

    # Run all sub references.
    for (0..1) {
        $args[$_] = $args[$_]->() if ref $args[$_] eq 'CODE';
    }

    my $result;
    my($got, $expected, $diag) = @args;
    if( @args == 1 ) {
        $result = $TB->ok($got);
    }

    if( ref $expected eq 'Regexp' or $TB->maybe_regex($expected) ) {
        $result = $TB->like($got, $expected);
    }
    else {
        $result = $TB->is_eq($got, $expected);
    }

    $TB->diag($diag) if !$result and @_ == 3;
}

1;


-- 
Michael G Schwern        [EMAIL PROTECTED]  http://www.pobox.com/~schwern/
3. With sufficient thrust, pigs fly just fine. However, this is
   not necessarily a good idea. It is hard to be sure where they
   are going to land, and it could be dangerous sitting under them
   as they fly overhead.
    -- RFC 1925

Reply via email to