X-Git-Url: http://git.vpit.fr/?a=blobdiff_plain;f=t%2F11-args.t;h=c16a1c5ec638a999d0956d10ec5c2080aff373c3;hb=7dfb54498a29abb83ba502c4f7dfae65d090aecf;hp=f2ed33d2ac6d861eb2092caae6708aa6b0c42896;hpb=e531c89b3ecbc5d58156f71c5324f5f253459864;p=perl%2Fmodules%2FB-RecDeparse.git diff --git a/t/11-args.t b/t/11-args.t index f2ed33d..c16a1c5 100644 --- a/t/11-args.t +++ b/t/11-args.t @@ -8,21 +8,31 @@ use Test::More tests => 4 * 4 + 4 * 2; use B::Deparse; use B::RecDeparse; +my $bd_version = $B::Deparse::VERSION; +{ + local $@; + $bd_version = eval $bd_version; + die $@ if $@; +} + sub add ($$) { $_[0] + $_[1] } sub mul { $_[0] * $_[1] } sub fma { add mul($_[0], $_[1]), $_[2] } sub wut { fma $_[0], 2, $_[1] } -my @br_args = ('', '-sCi0v1'); +my @bd_args = ('', '-sCi0v1'); my @brd_args = ({ }, { deparse => undef }, { deparse => { } }, { deparse => [ ] }); -my $br = B::Deparse->new(); -my $reference = $br->coderef2text(\&wut); +my $bd = B::Deparse->new(); +my $reference = $bd->coderef2text(\&wut); my $i = 1; for (@brd_args) { my $brd = B::RecDeparse->new(%$_, level => 0); my $code = $brd->coderef2text(\&wut); +SKIP: { + skip 'Harmless mismatch on "use warnings" code generation with olders B::Deparse' => 1 if $bd_version < 0.71; is($code, $reference, "empty deparse and level 0 does the same thing as B::Deparse ($i)"); +} $code = eval 'sub ' . $code; is($@, '', "result compiles ($i)"); is_deeply( [ defined $code, ref $code ], [ 1, 'CODE' ], "result compiles to a code reference ($i)"); @@ -30,13 +40,13 @@ for (@brd_args) { ++$i; } -my $br_opts = '-sCi0v1'; -@brd_args = ({ deparse => $br_opts }, { deparse => [ $br_opts ] }); +my $bd_opts = '-sCi0v1'; +@brd_args = ({ deparse => $bd_opts }, { deparse => [ $bd_opts ] }); for (@brd_args) { - $br = B::Deparse->new($br_opts); + $bd = B::Deparse->new($bd_opts); my $brd = B::RecDeparse->new(%$_, level => 0); my $code = $brd->coderef2text(\&wut); - is($code, $br->coderef2text(\&wut), "B::RecDeparse->new(deparse => '$br_opts' ), level => 0) does the same thing as B::Deparse->new('$br_opts') ($i)"); + is($code, $bd->coderef2text(\&wut), "B::RecDeparse->new(deparse => '$bd_opts' ), level => 0) does the same thing as B::Deparse->new('$bd_opts') ($i)"); $code = eval 'sub ' . $code; is($@, '', "result compiles ($i)"); is_deeply( [ defined $code, ref $code ], [ 1, 'CODE' ], "result compiles to a code reference ($i)");