Devel-DebugHooks
view release on metacpan or search on metacpan
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More 'no_plan';
use Test::Output;
use FindBin qw/ $Bin /; my $lib = "-I$Bin/lib -I$Bin/../lib";
use Data::Section::Simple qw/ get_data_section /;
use Test::Differences;
unified_diff();
{
no warnings qw/ redefine prototype /;
*is = \&eq_or_diff;
}
sub n {
$_ = join '', @_;
s#\t# #gm;
s#(?:[^\s]*?)?([^/]+\.p(?:m|l))#xxx/$1#gm;
$_;
}
sub nl {
$_ = n( @_ );
s#(xxx/.*?pm:)\d+#$1XXXX#gm;
$_;
}
my $cmds;
my $script;
my $files = get_data_section();
($script = <<'PERL') =~ s#^\t##gm;
sub t1 {
1;
}
t1();
2;
PERL
# FIX: we should not require last 's' to see '-e:0002 1;'
$cmds = 'DB::state( debug => "\@interact" );n;n;n;debug;s 10;s;s;s;s;s;r 3;s;q';
is
nl( `$^X $lib -d:DbInteract='$cmds' -e '$script'` )
,$files->{ 'debug cmd sbs' }
,"Debug command step-by-step";
$cmds = 'DB::state( debug => "\@interact" );n;n;n;debug;s 10;s;n;r 3;s;q';
is
nl( `$^X $lib -d:DbInteract='$cmds' -e '$script'` )
,$files->{ 'debug cmd step over' }
,"Debug command with step over";
$cmds = 'DB::state( debug => "\@interact" );n;n;n;debug;s 10;s 2;r;r 3;s;q';
is
nl( `$^X $lib -d:DbInteract='$cmds' -e '$script'` )
,$files->{ 'debug cmd return' }
,"Debug command with return";
( run in 0.874 second using v1.01-cache-2.11-cpan-6aa56a78535 )