|
I'm getting into testing a lot more lately and I realize that Test::More doesn't do what I would like it to do and thus I'm creating my own test class. I took the code from Test::More namely the _export_to_level(), plan(), import(), and builder(). I know what builder is doing so I don't need any help there. I am also including the
require Exporter; use vars ... $VERSION ... @ISA ... @EXPORT ...
lines in my code. Any help on what these lines and sub routines do or mean would be greatly appreciated. Thank you for your time.
--------------------------------------------------- Andrew Potozniak Administrative Computing Student Assistant State University of New York at Buffalo 645-3587 x 7123 ---------------------------------------------------
Here is the code that I am using:
use 5.004;
use strict; use Test::Builder;
require Exporter; use vars qw($VERSION @ISA @EXPORT %EXPORT_TAGS $TODO); $VERSION = '0.01'; @ISA = qw(Exporter); @EXPORT = qw(ok is isnt like unlike skip todo todo_skip pass fail $TODO plan diag );
my $Test = Test::Builder->new;
# 5.004's Exporter doesn't have export_to_level. sub _export_to_level { my $pkg = shift; my $level = shift; (undef) = shift; # redundant arg my $callpkg = caller($level); $pkg->export($callpkg, @_); }
sub plan { my(@plan) = @_;
my $caller = caller;
$Test->exported_to($caller);
my @imports = (); foreach my $idx (0..$#plan) { if( $plan[$idx] eq 'import' ) { my($tag, $imports) = splice @plan, $idx, 2; @imports = @$imports; last; } }
$Test->plan(@plan);
__PACKAGE__->_export_to_level(1, __PACKAGE__, @imports); }
sub import { my($class) = shift; goto &plan; }
sub builder { return Test::Builder->new; }
|
