%PDF- %PDF-
Direktori : /home/opti/optisoftcom/.cpanm/work/1544535425.21555/CPAN-Meta-YAML-0.018/t/lib/ |
Current File : /home/opti/optisoftcom/.cpanm/work/1544535425.21555/CPAN-Meta-YAML-0.018/t/lib/SubtestCompat.pm |
use 5.008001; use strict; use warnings; package SubtestCompat; # XXX must be used with no_plan or done_testing use Test::More 0.88; use base 'Exporter'; our @EXPORT; our $INDENT = -2; # intercept 'skip_all' in subtest and turn into a regular skip sub _fake_plan { my ( $self, $cmd, $arg ) = @_; return unless $cmd; if ( $cmd eq 'skip_all' ) { die bless { reason => $arg }, "Subtest::SKIP"; } else { goto &Test::Builder::plan; } } unless ( Test::More->can("subtest") ) { *subtest = sub { my ( $label, $code ) = @_; local $Test::Builder::Level = $Test::Builder::Level + 1; local $INDENT = $INDENT + 2; $label = "TEST: $label"; my $sep_len = 60 - length($label); note( " " x $INDENT . "$label { " . ( " " x ($sep_len-$INDENT-2) ) ); eval { no warnings 'redefine'; local *Test::Builder::plan = \&_fake_plan; # only want subtest error reporting to look up to the code ref # for where test was called, not further up to *our* callers, # so we *reset* the Level, rather than increment it local $Test::Builder::Level = 1; $code->(); }; if ( my $err = $@ ) { if ( ref($err) eq 'Subtest::SKIP' ) { SKIP: { skip $err->{reason}, 1; } } else { fail("SUBTEST: $label"); diag("Caught exception: $err"); die "$err\n"; } } note( " " x $INDENT . "}" ); }; push @EXPORT, 'subtest'; } 1;