diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2001-09-25 14:27:01 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2001-09-25 14:27:01 +0000 |
commit | 69026470e9d2e2c7bf7b03f351d6e98a6d6f29f3 (patch) | |
tree | c194809a1212142d6e379732826ee7e74db2bded /t/test.pl | |
parent | 81ba8d9690fde862b2e9f40e3edd1700854de746 (diff) | |
download | perl-69026470e9d2e2c7bf7b03f351d6e98a6d6f29f3.tar.gz |
Replace the use Test::More in t/{op,io,run} with t/test.pl.
Note: io/binmode is failing, have to figure out why.
p4raw-id: //depot/perl@12198
Diffstat (limited to 't/test.pl')
-rw-r--r-- | t/test.pl | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/t/test.pl b/t/test.pl new file mode 100644 index 0000000000..c7c9908424 --- /dev/null +++ b/t/test.pl @@ -0,0 +1,146 @@ +# +# t/test.pl - most of Test::More functionality without the fuss +# + +my $test = 1; +my $planned; + +sub plan { + my $n; + if (@_ == 1) { + $n = shift; + } else { + my %plan = @_; + $n = $plan{tests}; + } + print "1..$n\n"; + $planned = $n; +} + +END { + my $ran = $test - 1; + if (defined $planned && $planned != $ran) { + print "# Looks like you planned $planned tests but ran $ran.\n"; + } +} + +sub skip_all { + if (@_) { + print "1..0 - @_\n"; + } else { + print "1..0\n"; + } + exit(0); +} + +sub _ok { + my ($pass, $where, @mess) = @_; + # Do not try to microoptimize by factoring out the "not ". + # VMS will avenge. + if (@mess) { + print $pass ? "ok $test - @mess\n" : "not ok $test - @mess\n"; + } else { + print $pass ? "ok $test\n" : "not ok $test\n"; + } + unless ($pass) { + print "# Failed $where\n"; + } + $test++; +} + +sub _where { + my @caller = caller(1); + return "at $caller[1] line $caller[2]"; +} + +sub ok { + my ($pass, @mess) = @_; + _ok($pass, _where(), @mess); +} + +sub _expect { + my ($got, $pass, @mess) = @_; + if ($pass) { + ok(1, @mess); + } else { + ok(0, @mess); + } +} + +sub is { + my ($got, $expected, @mess) = @_; + my $pass = $got eq $expected; + unless ($pass) { + unshift(@mess, "\n", + "# got '$got'\n", + "# expected '$expected'\n"); + } + _expect($pass, _where(), @mess); +} + +# Note: this isn't quite as fancy as Test::More::like(). +sub like { + my ($got, $expected, @mess) = @_; + my $pass; + if (ref $expected eq 'Regexp') { + $pass = $got =~ $expected; + unless ($pass) { + unshift(@mess, "\n", + "# got '$got'\n"); + } + } else { + $pass = $got =~ /$expected/; + unless ($pass) { + unshift(@mess, "\n", + "# got '$got'\n", + "# expected /$expected/\n"); + } + } + _expect($pass, _where(), @mess); +} + +sub pass { + _ok(1, '', @_); +} + +sub fail { + _ok(0, _where(), @_); +} + +# Note: can't pass multipart messages since we try to +# be compatible with Test::More::skip(). +sub skip { + my ($mess, $n) = @_; + for (1..$n) { + ok(1, "# skip:", $mess); + } + local $^W = 0; + last SKIP; +} + +sub eq_array { + my ($ra, $rb) = @_; + return 0 unless $#$ra == $#$rb; + for my $i (0..$#$ra) { + return 0 unless $ra->[$i] eq $rb->[$i]; + } + return 1; +} + +sub require_ok { + my ($require) = @_; + eval <<REQUIRE_OK; +require $require; +REQUIRE_OK + ok(!$@, "require $require"); +} + +sub use_ok { + my ($use) = @_; + eval <<USE_OK; +use $use; +USE_OK + ok(!$@, "use $use"); +} + +1; |