X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Ftest.pl;h=0c315561405a56c95032e436c5dc84c56f2ccc65;hb=b60cf05ab72950309ce22f1294b53484e06a00ac;hp=9b3d9d67cfd1e141a80a2bfa9aae1477dc457076;hpb=195d559b8ef22ad8837051fd15a3100fca99b37f;p=p5sagit%2Fp5-mst-13.2.git diff --git a/t/test.pl b/t/test.pl index 9b3d9d6..0c31556 100644 --- a/t/test.pl +++ b/t/test.pl @@ -2,6 +2,7 @@ # t/test.pl - most of Test::More functionality without the fuss # +$Level = 1; my $test = 1; my $planned; @@ -76,12 +77,12 @@ sub _ok { } sub _where { - my @caller = caller(1); + my @caller = caller($Level); return "at $caller[1] line $caller[2]"; } # DON'T use this for matches. Use like() instead. -sub ok { +sub ok ($@) { my ($pass, $name, @mess) = @_; _ok($pass, _where(), $name, @mess); } @@ -131,9 +132,18 @@ sub display { return @result; } -sub is { +sub is ($$@) { my ($got, $expected, $name, @mess) = @_; - my $pass = $got eq $expected; + + my $pass; + if( !defined $got || !defined $expected ) { + # undef only matches undef + $pass = !defined $got && !defined $expected; + } + else { + $pass = $got eq $expected; + } + unless ($pass) { unshift(@mess, "# got "._q($got)."\n", "# expected "._q($expected)."\n"); @@ -141,9 +151,18 @@ sub is { _ok($pass, _where(), $name, @mess); } -sub isnt { +sub isnt ($$@) { my ($got, $isnt, $name, @mess) = @_; - my $pass = $got ne $isnt; + + my $pass; + if( !defined $got || !defined $isnt ) { + # undef only matches undef + $pass = defined $got || defined $isnt; + } + else { + $pass = $got ne $isnt; + } + unless( $pass ) { unshift(@mess, "# it should not be "._q($got)."\n", "# but it is.\n"); @@ -151,7 +170,7 @@ sub isnt { _ok($pass, _where(), $name, @mess); } -sub cmp_ok { +sub cmp_ok ($$$@) { my($got, $type, $expected, $name, @mess) = @_; my $pass; @@ -184,7 +203,7 @@ sub cmp_ok { # otherwise $range is a fractional error. # Here $range must be numeric, >= 0 # Non numeric ranges might be a useful future extension. (eg %) -sub within { +sub within ($$$@) { my ($got, $expected, $range, $name, @mess) = @_; my $pass; if (!defined $got or !defined $expected or !defined $range) { @@ -216,7 +235,7 @@ sub within { } # Note: this isn't quite as fancy as Test::More::like(). -sub like { +sub like ($$@) { my ($got, $expected, $name, @mess) = @_; my $pass; if (ref $expected eq 'Regexp') { @@ -302,7 +321,7 @@ sub eq_hash { !$fail; } -sub require_ok { +sub require_ok ($) { my ($require) = @_; eval <import"; if ($@) { @@ -559,6 +593,7 @@ sub _fresh_perl { sub fresh_perl_is { my($prog, $expected, $runperl_args, $name) = @_; + local $Level = 2; _fresh_perl($prog, sub { @_ ? $_[0] eq $expected : $expected }, $runperl_args, $name); @@ -572,6 +607,7 @@ sub fresh_perl_is { sub fresh_perl_like { my($prog, $expected, $runperl_args, $name) = @_; + local $Level = 2; _fresh_perl($prog, sub { @_ ? $_[0] =~ (ref $expected ? $expected : /$expected/) :