+# license: perl
+# copyright: 2004, 2006, 2011, 2012
+
package Spiffy;
use strict;
use 5.006001;
use warnings;
use Carp;
require Exporter;
-our $VERSION = '0.30';
+our $VERSION = '0.31';
our @EXPORT = ();
our @EXPORT_BASE = qw(field const stub super);
our @EXPORT_OK = (@EXPORT_BASE, qw(id WWW XXX YYY ZZZ));
our %EXPORT_TAGS = (XXX => [qw(WWW XXX YYY ZZZ)]);
-my $stack_frame = 0;
+my $stack_frame = 0;
my $dump = 'yaml';
my $bases_map = {};
@@ -38,7 +45,7 @@
my $method = shift;
$self->$method(shift);
}
- return $self;
+ return $self;
}
my $filtered_files = {};
@@ -46,7 +53,7 @@
my $filter_save = 0;
our $filter_result = '';
sub import {
- no strict 'refs';
+ no strict 'refs';
no warnings;
my $self_package = shift;
@@ -54,12 +61,12 @@
# subclass's boolean_arguments and paired_arguments can conflict, causing
# difficult debugging. Consider using something truly local.
my ($args, @export_list) = do {
- local *boolean_arguments = sub {
+ local *boolean_arguments = sub {
qw(
- -base -Base -mixin -selfless
- -XXX -dumper -yaml
+ -base -Base -mixin -selfless
+ -XXX -dumper -yaml
-filter_dump -filter_save
- )
+ )
};
local *paired_arguments = sub { qw(-package) };
$self_package->parse_arguments(@_);
@@ -79,8 +86,8 @@
unless grep /^XXX$/, @EXPORT_BASE;
}
- spiffy_filter()
- if ($args->{-selfless} or $args->{-Base}) and
+ spiffy_filter()
+ if ($args->{-selfless} or $args->{-Base}) and
not $filtered_files->{(caller($stack_frame))[1]}++;
my $caller_package = $args->{-package} || caller($stack_frame);
@@ -91,7 +98,7 @@
next unless $class->isa('Spiffy');
my @export = grep {
not defined &{"$caller_package\::$_"};
- } ( @{"$class\::EXPORT"},
+ } ( @{"$class\::EXPORT"},
($args->{-Base} or $args->{-base})
? @{"$class\::EXPORT_BASE"} : (),
);
@@ -99,7 +106,7 @@
not defined &{"$caller_package\::$_"};
} @{"$class\::EXPORT_OK"};
- # Avoid calling the expensive Exporter::export
+ # Avoid calling the expensive Exporter::export
# if there is nothing to do (optimization)
my %exportable = map { ($_, 1) } @export, @export_ok;
next unless keys %exportable;
@@ -163,7 +170,7 @@
sub all_my_bases {
my $class = shift;
- return $bases_map->{$class}
+ return $bases_map->{$class}
if defined $bases_map->{$class};
my @bases = ($class);
@@ -175,10 +182,10 @@
$bases_map->{$class} = [grep {not $used->{$_}++} @bases];
}
-my %code = (
- sub_start =>
+my %code = (
+ sub_start =>
"sub {\n",
- set_default =>
+ set_default =>
" \$_[0]->{%s} = %s\n unless exists \$_[0]->{%s};\n",
init =>
" return \$_[0]->{%s} = do { my \$self = \$_[0]; %s }\n" .
@@ -189,13 +196,13 @@
" Scalar::Util::weaken(\$_[0]->{%s}) if ref \$_[0]->{%s};\n" .
" \$_[0]->{%s};\n" .
" } unless \$#_ > 0 or defined \$_[0]->{%s};\n",
- return_if_get =>
+ return_if_get =>
" return \$_[0]->{%s} unless \$#_ > 0;\n",
- set =>
+ set =>
" \$_[0]->{%s} = \$_[1];\n",
- weaken =>
+ weaken =>
" Scalar::Util::weaken(\$_[0]->{%s}) if ref \$_[0]->{%s};\n",
- sub_end =>
+ sub_end =>
" return \$_[0]->{%s};\n}\n",
);
@@ -229,7 +236,7 @@
if defined $default;
$code .= sprintf $code{return_if_get}, $field;
$code .= sprintf $code{set}, $field;
- $code .= sprintf $code{weaken}, $field, $field
+ $code .= sprintf $code{weaken}, $field, $field
if $args->{-weak};
$code .= sprintf $code{sub_end}, $field;
@@ -274,10 +281,10 @@
$package = $args->{-package} if defined $args->{-package};
no strict 'refs';
return if defined &{"${package}::$field"};
- *{"${package}::$field"} =
- sub {
+ *{"${package}::$field"} =
+ sub {
require Carp;
- Carp::confess
+ Carp::confess
"Method $field in package $package must be subclassed";
}
}
@@ -301,7 +308,7 @@
push @values, $elem;
}
}
- return wantarray ? ($args, @values) : $args;
+ return wantarray ? ($args, @values) : $args;
}
sub boolean_arguments { () }
@@ -325,8 +332,8 @@
package DB;
{
no warnings 'redefine';
- sub super_args {
- my @dummy = caller(@_ ? $_[0] : 2);
+ sub super_args {
+ my @dummy = caller(@_ ? $_[0] : 2);
return @DB::args;
}
}
@@ -397,7 +404,7 @@
my $inheritor = caller(0);
for my $base_class (@base_classes) {
next if $inheritor->isa($base_class);
- croak "Can't mix Spiffy and non-Spiffy classes in 'use base'.\n",
+ croak "Can't mix Spiffy and non-Spiffy classes in 'use base'.\n",
"See the documentation of Spiffy.pm for details\n "
unless $base_class->isa('Spiffy');
$stack_frame = 1; # tell import to use different caller
@@ -439,7 +446,7 @@
$methods{$_}
? ($_, \ &{"$methods{$_}\::$_"})
: ($_, \ &{"$mixin_class\::$_"})
- } @_
+ } @_
? (get_roles($mixin_class, @_))
: (keys %methods);
}
@@ -450,12 +457,12 @@
while (grep /^!*:/, @roles) {
@roles = map {
s/!!//g;
- /^!:(.*)/ ? do {
- my $m = "_role_$1";
+ /^!:(.*)/ ? do {
+ my $m = "_role_$1";
map("!$_", $mixin_class->$m);
} :
/^:(.*)/ ? do {
- my $m = "_role_$1";
+ my $m = "_role_$1";
($mixin_class->$m);
} :
($_)
@@ -534,6 +541,3 @@
1;
-__END__
-
-#line 1066
diff -Nru libdevel-stacktrace-ashtml-perl-0.11/inc/Test/Base/Filter.pm libdevel-stacktrace-ashtml-perl-0.14/inc/Test/Base/Filter.pm
--- libdevel-stacktrace-ashtml-perl-0.11/inc/Test/Base/Filter.pm 2011-01-25 07:08:56.000000000 +0000
+++ libdevel-stacktrace-ashtml-perl-0.14/inc/Test/Base/Filter.pm 2013-02-18 19:41:20.000000000 +0000
@@ -1,7 +1,4 @@
#line 1
-#. TODO:
-#.
-
#===============================================================================
# This is the default class for handling Test::Base data filtering.
#===============================================================================
@@ -341,4 +338,4 @@
__DATA__
-#line 639
+#line 636
diff -Nru libdevel-stacktrace-ashtml-perl-0.11/inc/Test/Base.pm libdevel-stacktrace-ashtml-perl-0.14/inc/Test/Base.pm
--- libdevel-stacktrace-ashtml-perl-0.11/inc/Test/Base.pm 2011-01-25 07:08:56.000000000 +0000
+++ libdevel-stacktrace-ashtml-perl-0.14/inc/Test/Base.pm 2013-02-18 19:41:20.000000000 +0000
@@ -1,11 +1,9 @@
#line 1
-# TODO:
-#
package Test::Base;
use 5.006001;
use Spiffy 0.30 -Base;
use Spiffy ':XXX';
-our $VERSION = '0.59';
+our $VERSION = '0.60';
my @test_more_exports;
BEGIN {
@@ -536,7 +534,7 @@
sub tie_output() {
my $handle = shift;
die "No buffer to tie" unless @_;
- tie $handle, 'Test::Base::Handle', $_[0];
+ tie *$handle, 'Test::Base::Handle', $_[0];
}
sub no_diff {
@@ -681,4 +679,4 @@
=encoding utf8
-#line 1376
+#line 1374
diff -Nru libdevel-stacktrace-ashtml-perl-0.11/inc/Test/Builder/Module.pm libdevel-stacktrace-ashtml-perl-0.14/inc/Test/Builder/Module.pm
--- libdevel-stacktrace-ashtml-perl-0.11/inc/Test/Builder/Module.pm 2011-01-25 07:08:56.000000000 +0000
+++ libdevel-stacktrace-ashtml-perl-0.14/inc/Test/Builder/Module.pm 2013-02-18 19:41:20.000000000 +0000
@@ -8,7 +8,7 @@
require Exporter;
our @ISA = qw(Exporter);
-our $VERSION = '0.96';
+our $VERSION = '0.98';
$VERSION = eval $VERSION; ## no critic (BuiltinFunctions::ProhibitStringyEval)
diff -Nru libdevel-stacktrace-ashtml-perl-0.11/inc/Test/Builder.pm libdevel-stacktrace-ashtml-perl-0.14/inc/Test/Builder.pm
--- libdevel-stacktrace-ashtml-perl-0.11/inc/Test/Builder.pm 2011-01-25 07:08:56.000000000 +0000
+++ libdevel-stacktrace-ashtml-perl-0.14/inc/Test/Builder.pm 2013-02-18 19:41:20.000000000 +0000
@@ -5,7 +5,7 @@
use strict;
use warnings;
-our $VERSION = '0.96';
+our $VERSION = '0.98';
$VERSION = eval $VERSION; ## no critic (BuiltinFunctions::ProhibitStringyEval)
BEGIN {
@@ -191,6 +191,8 @@
if( $self->{Child_Name} ) {
$self->croak("Can't call finalize() with child ($self->{Child_Name}) active");
}
+
+ local $? = 0; # don't fail if $subtests happened to set $? nonzero
$self->_ending;
# XXX This will only be necessary for TAP envelopes (we think)
@@ -224,11 +226,11 @@
return $self->{Indent};
}
-#line 357
+#line 359
sub parent { shift->{Parent} }
-#line 369
+#line 371
sub name { shift->{Name} }
@@ -244,7 +246,7 @@
}
}
-#line 393
+#line 395
our $Level;
@@ -291,7 +293,7 @@
return;
}
-#line 472
+#line 474
my %plan_cmds = (
no_plan => \&no_plan,
@@ -338,7 +340,7 @@
return;
}
-#line 527
+#line 529
sub expected_tests {
my $self = shift;
@@ -356,7 +358,7 @@
return $self->{Expected_Tests};
}
-#line 551
+#line 553
sub no_plan {
my($self, $arg) = @_;
@@ -369,7 +371,7 @@
return 1;
}
-#line 584
+#line 586
sub _output_plan {
my($self, $max, $directive, $reason) = @_;
@@ -388,7 +390,7 @@
}
-#line 636
+#line 638
sub done_testing {
my($self, $num_tests) = @_;
@@ -431,7 +433,7 @@
}
-#line 687
+#line 689
sub has_plan {
my $self = shift;
@@ -441,7 +443,7 @@
return(undef);
}
-#line 704
+#line 706
sub skip_all {
my( $self, $reason ) = @_;
@@ -455,7 +457,7 @@
exit(0);
}
-#line 729
+#line 731
sub exported_to {
my( $self, $pack ) = @_;
@@ -466,7 +468,7 @@
return $self->{Exported_To};
}
-#line 759
+#line 761
sub ok {
my( $self, $test, $name ) = @_;
@@ -626,7 +628,7 @@
return $numval != 0 and $numval ne $val ? 1 : 0;
}
-#line 933
+#line 939
sub is_eq {
my( $self, $got, $expect, $name ) = @_;
@@ -705,7 +707,7 @@
DIAGNOSTIC
}
-#line 1026
+#line 1032
sub isnt_eq {
my( $self, $got, $dont_expect, $name ) = @_;
@@ -739,7 +741,7 @@
return $self->cmp_ok( $got, '!=', $dont_expect, $name );
}
-#line 1075
+#line 1081
sub like {
my( $self, $this, $regex, $name ) = @_;
@@ -755,7 +757,7 @@
return $self->_regex_ok( $this, $regex, '!~', $name );
}
-#line 1099
+#line 1105
my %numeric_cmps = map { ( $_, 1 ) } ( "<", "<=", ">", ">=", "==", "!=", "<=>" );
@@ -836,7 +838,7 @@
return $code;
}
-#line 1199
+#line 1205
sub BAIL_OUT {
my( $self, $reason ) = @_;
@@ -846,14 +848,14 @@
exit 255;
}
-#line 1212
+#line 1218
{
no warnings 'once';
*BAILOUT = \&BAIL_OUT;
}
-#line 1226
+#line 1232
sub skip {
my( $self, $why ) = @_;
@@ -884,7 +886,7 @@
return 1;
}
-#line 1267
+#line 1273
sub todo_skip {
my( $self, $why ) = @_;
@@ -912,7 +914,7 @@
return 1;
}
-#line 1347
+#line 1353
sub maybe_regex {
my( $self, $regex ) = @_;
@@ -992,7 +994,7 @@
# I'm not ready to publish this. It doesn't deal with array return
# values from the code or context.
-#line 1443
+#line 1449
sub _try {
my( $self, $code, %opts ) = @_;
@@ -1012,7 +1014,7 @@
return wantarray ? ( $return, $error ) : $return;
}
-#line 1472
+#line 1478
sub is_fh {
my $self = shift;
@@ -1026,7 +1028,7 @@
eval { tied($maybe_fh)->can('TIEHANDLE') };
}
-#line 1515
+#line 1521
sub level {
my( $self, $level ) = @_;
@@ -1037,7 +1039,7 @@
return $Level;
}
-#line 1547
+#line 1553
sub use_numbers {
my( $self, $use_nums ) = @_;
@@ -1048,7 +1050,7 @@
return $self->{Use_Nums};
}
-#line 1580
+#line 1586
foreach my $attribute (qw(No_Header No_Ending No_Diag)) {
my $method = lc $attribute;
@@ -1066,7 +1068,7 @@
*{ __PACKAGE__ . '::' . $method } = $code;
}
-#line 1633
+#line 1639
sub diag {
my $self = shift;
@@ -1074,7 +1076,7 @@
$self->_print_comment( $self->_diag_fh, @_ );
}
-#line 1648
+#line 1654
sub note {
my $self = shift;
@@ -1111,7 +1113,7 @@
return 0;
}
-#line 1698
+#line 1704
sub explain {
my $self = shift;
@@ -1130,7 +1132,7 @@
} @_;
}
-#line 1727
+#line 1733
sub _print {
my $self = shift;
@@ -1159,7 +1161,7 @@
return print $fh $indent, $msg;
}
-#line 1787
+#line 1793
sub output {
my( $self, $fh ) = @_;
@@ -1255,8 +1257,8 @@
open( $Testout, ">&STDOUT" ) or die "Can't dup STDOUT: $!";
open( $Testerr, ">&STDERR" ) or die "Can't dup STDERR: $!";
- # $self->_copy_io_layers( \*STDOUT, $Testout );
- # $self->_copy_io_layers( \*STDERR, $Testerr );
+ $self->_copy_io_layers( \*STDOUT, $Testout );
+ $self->_copy_io_layers( \*STDERR, $Testerr );
$self->{Opened_Testhandles} = 1;
@@ -1271,14 +1273,22 @@
require PerlIO;
my @src_layers = PerlIO::get_layers($src);
- binmode $dst, join " ", map ":$_", @src_layers if @src_layers;
+ _apply_layers($dst, @src_layers) if @src_layers;
}
);
return;
}
-#line 1912
+sub _apply_layers {
+ my ($fh, @layers) = @_;
+ my %seen;
+ my @unique = grep { $_ ne 'unix' and !$seen{$_}++ } @layers;
+ binmode($fh, join(":", "", "raw", @unique));
+}
+
+
+#line 1926
sub reset_outputs {
my $self = shift;
@@ -1290,7 +1300,7 @@
return;
}
-#line 1938
+#line 1952
sub _message_at_caller {
my $self = shift;
@@ -1311,7 +1321,7 @@
}
-#line 1978
+#line 1992
sub current_test {
my( $self, $num ) = @_;
@@ -1344,7 +1354,7 @@
return $self->{Curr_Test};
}
-#line 2026
+#line 2040
sub is_passing {
my $self = shift;
@@ -1357,7 +1367,7 @@
}
-#line 2048
+#line 2062
sub summary {
my($self) = shift;
@@ -1365,14 +1375,14 @@
return map { $_->{'ok'} } @{ $self->{Test_Results} };
}
-#line 2103
+#line 2117
sub details {
my $self = shift;
return @{ $self->{Test_Results} };
}
-#line 2132
+#line 2146
sub todo {
my( $self, $pack ) = @_;
@@ -1386,7 +1396,7 @@
return '';
}
-#line 2159
+#line 2173
sub find_TODO {
my( $self, $pack, $set, $new_value ) = @_;
@@ -1400,7 +1410,7 @@
return $old_value;
}
-#line 2179
+#line 2193
sub in_todo {
my $self = shift;
@@ -1409,7 +1419,7 @@
return( defined $self->{Todo} || $self->find_TODO ) ? 1 : 0;
}
-#line 2229
+#line 2243
sub todo_start {
my $self = shift;
@@ -1424,7 +1434,7 @@
return;
}
-#line 2251
+#line 2265
sub todo_end {
my $self = shift;
@@ -1445,7 +1455,7 @@
return;
}
-#line 2284
+#line 2298
sub caller { ## no critic (Subroutines::ProhibitBuiltinHomonyms)
my( $self, $height ) = @_;
@@ -1460,10 +1470,10 @@
return wantarray ? @caller : $caller[0];
}
-#line 2301
-
#line 2315
+#line 2329
+
#'#
sub _sanity_check {
my $self = shift;
@@ -1475,7 +1485,7 @@
return;
}
-#line 2336
+#line 2350
sub _whoa {
my( $self, $check, $desc ) = @_;
@@ -1490,7 +1500,7 @@
return;
}
-#line 2360
+#line 2374
sub _my_exit {
$? = $_[0]; ## no critic (Variables::RequireLocalizedPunctuationVars)
@@ -1498,7 +1508,7 @@
return 1;
}
-#line 2372
+#line 2386
sub _ending {
my $self = shift;
@@ -1617,7 +1627,7 @@
$Test->_ending if defined $Test;
}
-#line 2560
+#line 2574
1;
diff -Nru libdevel-stacktrace-ashtml-perl-0.11/inc/Test/More.pm libdevel-stacktrace-ashtml-perl-0.14/inc/Test/More.pm
--- libdevel-stacktrace-ashtml-perl-0.11/inc/Test/More.pm 2011-01-25 07:08:56.000000000 +0000
+++ libdevel-stacktrace-ashtml-perl-0.14/inc/Test/More.pm 2013-02-18 19:41:20.000000000 +0000
@@ -18,7 +18,7 @@
return warn @_, " at $file line $line\n";
}
-our $VERSION = '0.96';
+our $VERSION = '0.98';
$VERSION = eval $VERSION; ## no critic (BuiltinFunctions::ProhibitStringyEval)
use Test::Builder::Module;
@@ -88,7 +88,7 @@
return $tb->ok( $test, $name );
}
-#line 367
+#line 372
sub is ($$;$) {
my $tb = Test::More->builder;
@@ -104,7 +104,7 @@
*isn't = \&isnt;
-#line 411
+#line 416
sub like ($$;$) {
my $tb = Test::More->builder;
@@ -112,7 +112,7 @@
return $tb->like(@_);
}
-#line 426
+#line 431
sub unlike ($$;$) {
my $tb = Test::More->builder;
@@ -120,7 +120,7 @@
return $tb->unlike(@_);
}
-#line 471
+#line 476
sub cmp_ok($$$;$) {
my $tb = Test::More->builder;
@@ -128,7 +128,7 @@
return $tb->cmp_ok(@_);
}
-#line 506
+#line 511
sub can_ok ($@) {
my( $proto, @methods ) = @_;
@@ -162,7 +162,7 @@
return $ok;
}
-#line 572
+#line 577
sub isa_ok ($$;$) {
my( $object, $class, $obj_name ) = @_;
@@ -222,7 +222,7 @@
return $ok;
}
-#line 651
+#line 656
sub new_ok {
my $tb = Test::More->builder;
@@ -247,16 +247,16 @@
return $obj;
}
-#line 736
+#line 741
-sub subtest($&) {
+sub subtest {
my ($name, $subtests) = @_;
my $tb = Test::More->builder;
return $tb->subtest(@_);
}
-#line 760
+#line 765
sub pass (;$) {
my $tb = Test::More->builder;
@@ -270,7 +270,7 @@
return $tb->ok( 0, @_ );
}
-#line 823
+#line 833
sub use_ok ($;@) {
my( $module, @imports ) = @_;
@@ -332,7 +332,7 @@
return( $eval_result, $eval_error );
}
-#line 892
+#line 902
sub require_ok ($) {
my($module) = shift;
@@ -376,7 +376,7 @@
return $module =~ /^[a-zA-Z]\w*$/ ? 1 : 0;
}
-#line 969
+#line 979
our( @Data_Stack, %Refs_Seen );
my $DNE = bless [], 'Does::Not::Exist';
@@ -483,7 +483,7 @@
return '';
}
-#line 1129
+#line 1139
sub diag {
return Test::More->builder->diag(@_);
@@ -493,13 +493,13 @@
return Test::More->builder->note(@_);
}
-#line 1155
+#line 1165
sub explain {
return Test::More->builder->explain(@_);
}
-#line 1221
+#line 1231
## no critic (Subroutines::RequireFinalReturn)
sub skip {
@@ -527,7 +527,7 @@
last SKIP;
}
-#line 1305
+#line 1315
sub todo_skip {
my( $why, $how_many ) = @_;
@@ -548,7 +548,7 @@
last TODO;
}
-#line 1360
+#line 1370
sub BAIL_OUT {
my $reason = shift;
@@ -557,7 +557,7 @@
$tb->BAIL_OUT($reason);
}
-#line 1399
+#line 1409
#'#
sub eq_array {
@@ -697,7 +697,7 @@
}
}
-#line 1546
+#line 1556
sub eq_hash {
local @Data_Stack = ();
@@ -732,7 +732,7 @@
return $ok;
}
-#line 1605
+#line 1615
sub eq_set {
my( $a1, $a2 ) = @_;
@@ -757,6 +757,6 @@
);
}
-#line 1807
+#line 1817
1;
diff -Nru libdevel-stacktrace-ashtml-perl-0.11/lib/Devel/StackTrace/AsHTML.pm libdevel-stacktrace-ashtml-perl-0.14/lib/Devel/StackTrace/AsHTML.pm
--- libdevel-stacktrace-ashtml-perl-0.11/lib/Devel/StackTrace/AsHTML.pm 2011-01-25 07:08:45.000000000 +0000
+++ libdevel-stacktrace-ashtml-perl-0.14/lib/Devel/StackTrace/AsHTML.pm 2013-02-18 19:41:08.000000000 +0000
@@ -2,7 +2,7 @@
use strict;
use 5.008_001;
-our $VERSION = '0.11';
+our $VERSION = '0.14';
use Data::Dumper;
use Devel::StackTrace;
@@ -91,10 +91,11 @@
my $i = 0;
while (my $frame = $trace->next_frame) {
$i++;
+ my $next_frame = $trace->frame($i); # peek next
$out .= join(
'',
'',
- $frame->subroutine ? encode_html("in " . $frame->subroutine) : '',
+ ($next_frame && $next_frame->subroutine) ? encode_html("in " . $next_frame->subroutine) : '',
' at ',
$frame->filename ? encode_html($frame->filename) : '',
' line ',
@@ -102,7 +103,7 @@
q(),
_build_context($frame) || '',
q(
),
- _build_arguments($i, [$frame->args]),
+ _build_arguments($i, $next_frame),
$frame->can('lexicals') ? _build_lexicals($i, $frame->lexicals) : '',
q(),
);
@@ -123,16 +124,18 @@
};
sub _build_arguments {
- my($id, $args) = @_;
+ my($id, $frame) = @_;
my $ref = "arg-$id";
- return '' unless @$args;
+ return '' unless $frame && $frame->args;
+
+ my @args = $frame->args;
my $html = qq(Show function arguments
);
# Don't use while each since Dumper confuses that
- for my $idx (0 .. @$args - 1) {
- my $value = $args->[$idx];
+ for my $idx (0 .. @args - 1) {
+ my $value = $args[$idx];
my $dump = $dumper->($value);
$html .= qq{};
$html .= qq{\$_[$idx] | };
diff -Nru libdevel-stacktrace-ashtml-perl-0.11/t/output.t libdevel-stacktrace-ashtml-perl-0.14/t/output.t
--- libdevel-stacktrace-ashtml-perl-0.11/t/output.t 2009-10-09 07:01:26.000000000 +0000
+++ libdevel-stacktrace-ashtml-perl-0.14/t/output.t 2013-02-18 19:40:45.000000000 +0000
@@ -13,5 +13,6 @@
bar(2);
like $html, qr/match.*bar\(2\)/;
+like $html, qr!t[\\/]output\.t line 8.*\n.*in main::foo!;
done_testing;