Oktest
view release on metacpan or search on metacpan
lib/Oktest.pm view on Meta::CPAN
return $so;
}
sub _set_fixture {
my ($name, $block) = @_;
my $to = $Oktest::TopicObject::__current
or die "$name() should be called in topic block.";
$to->$name($block);
}
sub before(&) {
_set_fixture('before', @_);
}
sub after(&) {
_set_fixture('after', @_);
}
sub before_all(&) {
_set_fixture('before_all', @_);
}
sub after_all(&) {
_set_fixture('after_all', @_);
}
sub at_end(&) {
my ($block) = @_;
## todo: check whether at_end() is called in spec block.
push(@Oktest::__at_end_blocks, $block);
}
sub __at_end_of_spec {
## run closures in reverse order
for my $block (reverse(@Oktest::__at_end_blocks)) {
$block->();
}
lib/Oktest.pm view on Meta::CPAN
$reporter->{report_skipped} ||= $opts{report_skipped};
$reporter->{report_todo} ||= $opts{report_todo};
my @topics = @Oktest::TopicObject::__tops;
$runner->run_all(@topics);
}
sub main {
Oktest::MainApp->new(@_)->execute();
}
sub with(&) {
my ($block) = @_;
return $block;
}
sub __clear {
@__assertion_objects = ();
Oktest::TopicObject::__clear();
}
sub __at_exit {
lib/Oktest.pm view on Meta::CPAN
last if ! $filename || $filename eq __FILE__;
$str .= "File '$filename', line $linenum:\n";
if (-f $filename) {
my $line = Oktest::Util::read_line_from($filename, $linenum);
$str .= " " . Oktest::Util::strip($line) . "\n";
}
}
return $str;
}
sub _assert(&@) {
my ($closure, $op, $validate, $this, $expected) = @_;
$this->_done();
if ($validate) {
my $msg = $this->_validate_expected($expected, $op);
die $msg if $msg;
}
#unless (defined($expected)) {
# my $msg =
# "[ERROR] OK() $op \$expected: \$expected is undefined value.\n" .
# " \$expected: " . _repr($expected);
lib/Oktest.pm view on Meta::CPAN
my (@arr) = @_;
return $arr[$#arr] if @arr;
return;
}
sub length {
my (@arr) = @_;
return $#arr + 1;
}
sub index(&@) {
my ($block, @arr) = @_;
my $i = 0;
for (@arr) {
return $i if $block->($_);
$i++;
}
return -1;
}
sub index_denied(&@) {
my ($block, @arr) = @_;
my $i = 0;
for (@arr) {
return $i unless $block->($_);
$i++;
}
return -1;
}
sub is_string {
lib/Oktest.pm view on Meta::CPAN
open3($IN, $OUT, $ERR, $command);
print $IN $input if $input;
close $IN;
my @output = <$OUT>;
my @error = <$ERR>;
close $OUT;
close $ERR;
return join("", @output), join("", @error);
}
sub capture(&) {
my ($block) = @_;
my $sout = tie(local *STDOUT, 'Oktest::Util::__PrintHandler');
local *STDERR = *STDOUT;
$block->();
return $sout->output;
}
sub capture_stdouterr(&) {
my ($block) = @_;
my $sout = tie(local *STDOUT, 'Oktest::Util::__PrintHandler');
my $serr = tie(local *STDERR, 'Oktest::Util::__PrintHandler');
$block->();
return ($sout->output, $serr->output);
}
sub capture_stdout(&) {
my ($block) = @_;
my $sout = tie(local *STDOUT, 'Oktest::Util::__PrintHandler');
$block->();
return $sout->output;
}
sub capture_stderr(&) {
my ($block) = @_;
my $serr = tie(local *STDERR, 'Oktest::Util::__PrintHandler');
$block->();
return $serr->output;
}
$INC{'Oktest/Util.pm'} = __FILE__;
lib/Oktest.pm view on Meta::CPAN
#sub eq_hash {
# my ($this, $that) = @_;
# Oktest::OK ($this)->equals($that);
#}
#
#sub eq_set {
# my ($this, $that) = @_;
# Oktest::OK ($this)->equals($that);
#}
sub throws_ok(&$;$) {
my ($coderef, $pattern, $description) = @_;
Oktest::OK ($coderef)->dies($pattern);
return 1==1;
}
sub dies_ok(&;$) {
my ($coderef, $description) = @_;
Oktest::OK ($coderef)->dies();
return 1==1;
}
sub lives_ok(&;$) {
my ($coderef, $description) = @_;
Oktest::OK ($coderef)->not_die();
return 1==1;
}
sub lives_and(&;$) {
my ($test, $description) = @_;
Oktest::OK ($test)->not_die();
return 1==1;
}
sub warning_like(&$;$) {
my ($coderef, $pattern, $test_name) = @_;
Oktest::OK ($coderef)->warns($pattern);
return 1==1;
}
sub diag {
my ($message) = @_;
print STDOUT "# $message\n";
return 0==1;
}
( run in 1.002 second using v1.01-cache-2.11-cpan-49f99fa48dc )