X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ext%2FB%2Ft%2Foptree_samples.t;h=d198c59e65529be37606a5ac1aa41159fb33171f;hb=ce5d06123ae0253bf2e33033ffbfba16ce3bb79e;hp=c51eeaeb3537c927f67bca760bba2b01e8296f53;hpb=7252851f9977dfc5c982b985eeabcb43c006d03e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ext/B/t/optree_samples.t b/ext/B/t/optree_samples.t index c51eeae..d198c59 100644 --- a/ext/B/t/optree_samples.t +++ b/ext/B/t/optree_samples.t @@ -1,18 +1,19 @@ #!perl BEGIN { - chdir 't'; - @INC = ('../lib', '../ext/B/t'); + if ($ENV{PERL_CORE}){ + chdir('t') if -d 't'; + @INC = ('.', '../lib', '../ext/B/t'); + } else { + unshift @INC, 't'; + push @INC, "../../t"; + } require Config; if (($Config::Config{'extensions'} !~ /\bB\b/) ){ print "1..0 # Skip -- Perl configured without B module\n"; exit 0; } - if ($] < 5.009) { - print "1..0 # Skip -- TODO - provide golden result regexps for 5.8\n"; - exit 0; - } - require './test.pl'; + # require 'test.pl'; # now done by OptreeCheck } use OptreeCheck; use Config; @@ -29,6 +30,7 @@ checkOptree ( name => '-basic sub {if shift print then,else}', code => sub { if (shift) { print "then" } else { print "else" } }, + @open_todo, expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); # 9 <1> leavesub[1 ref] K/REFC,1 ->(end) # - <@> lineseq KP ->9 @@ -77,6 +79,7 @@ checkOptree ( name => '-basic (see above, with my $a = shift)', if ($a) { print "foo" } else { print "bar" } }, + @open_todo, expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); # d <1> leavesub[1 ref] K/REFC,1 ->(end) # - <@> lineseq KP ->d @@ -132,6 +135,7 @@ checkOptree ( name => '-exec sub {if shift print then,else}', code => sub { if (shift) { print "then" } else { print "else" } }, + @open_todo, expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); # 1 <;> nextstate(main 426 optree.t:16) v # 2 <#> gv[*_] s @@ -174,6 +178,7 @@ checkOptree ( name => '-exec (see above, with my $a = shift)', if ($a) { print "foo" } else { print "bar" } }, + @open_todo, expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); # 1 <;> nextstate(main 423 optree.t:16) v # 2 <#> gv[*_] s @@ -221,6 +226,7 @@ EONT_EONT checkOptree ( name => '-exec sub { print (shift) ? "foo" : "bar" }', code => sub { print (shift) ? "foo" : "bar" }, bcopts => '-exec', + @open_todo, expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); # 1 <;> nextstate(main 428 optree.t:31) v # 2 <0> pushmark s @@ -252,13 +258,14 @@ pass ("FOREACH"); checkOptree ( name => '-exec sub { foreach (1..10) {print "foo $_"} }', code => sub { foreach (1..10) {print "foo $_"} }, bcopts => '-exec', + @open_todo, expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); # 1 <;> nextstate(main 443 optree.t:158) v # 2 <0> pushmark s # 3 <$> const[IV 1] s # 4 <$> const[IV 10] s # 5 <#> gv[*_] s -# 6 <{> enteriter(next->d last->g redo->7) lKS +# 6 <{> enteriter(next->d last->g redo->7) lKS/8 # e <0> iter s # f <|> and(other->7) K/1 # 7 <;> nextstate(main 442 optree.t:158) v @@ -277,7 +284,7 @@ EOT_EOT # 3 <$> const(IV 1) s # 4 <$> const(IV 10) s # 5 <$> gv(*_) s -# 6 <{> enteriter(next->d last->g redo->7) lKS +# 6 <{> enteriter(next->d last->g redo->7) lKS/8 # e <0> iter s # f <|> and(other->7) K/1 # 7 <;> nextstate(main 443 optree_samples.t:182) v @@ -295,13 +302,14 @@ EONT_EONT checkOptree ( name => '-basic sub { print "foo $_" foreach (1..10) }', code => sub { print "foo $_" foreach (1..10) }, bcopts => '-basic', + @open_todo, expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); # h <1> leavesub[1 ref] K/REFC,1 ->(end) # - <@> lineseq KP ->h # 1 <;> nextstate(main 445 optree.t:167) v ->2 # 2 <;> nextstate(main 445 optree.t:167) v ->3 # g <2> leaveloop K/2 ->h -# 7 <{> enteriter(next->d last->g redo->8) lKS ->e +# 7 <{> enteriter(next->d last->g redo->8) lKS/8 ->e # - <0> ex-pushmark s ->3 # - <1> ex-list lK ->6 # 3 <0> pushmark s ->4 @@ -327,7 +335,7 @@ EOT_EOT # 1 <;> nextstate(main 446 optree_samples.t:192) v ->2 # 2 <;> nextstate(main 446 optree_samples.t:192) v ->3 # g <2> leaveloop K/2 ->h -# 7 <{> enteriter(next->d last->g redo->8) lKS ->e +# 7 <{> enteriter(next->d last->g redo->8) lKS/8 ->e # - <0> ex-pushmark s ->3 # - <1> ex-list lK ->6 # 3 <0> pushmark s ->4 @@ -352,6 +360,7 @@ EONT_EONT checkOptree ( name => '-exec -e foreach (1..10) {print qq{foo $_}}', prog => 'foreach (1..10) {print qq{foo $_}}', bcopts => '-exec', + @open_todo, expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); # 1 <0> enter # 2 <;> nextstate(main 2 -e:1) v @@ -359,7 +368,7 @@ checkOptree ( name => '-exec -e foreach (1..10) {print qq{foo $_}}', # 4 <$> const[IV 1] s # 5 <$> const[IV 10] s # 6 <#> gv[*_] s -# 7 <{> enteriter(next->e last->h redo->8) lKS +# 7 <{> enteriter(next->e last->h redo->8) lKS/8 # f <0> iter s # g <|> and(other->8) vK/1 # 8 <;> nextstate(main 1 -e:1) v @@ -379,7 +388,7 @@ EOT_EOT # 4 <$> const(IV 1) s # 5 <$> const(IV 10) s # 6 <$> gv(*_) s -# 7 <{> enteriter(next->e last->h redo->8) lKS +# 7 <{> enteriter(next->e last->h redo->8) lKS/8 # f <0> iter s # g <|> and(other->8) vK/1 # 8 <;> nextstate(main 1 -e:1) v @@ -397,6 +406,7 @@ EONT_EONT checkOptree ( name => '-exec sub { print "foo $_" foreach (1..10) }', code => sub { print "foo $_" foreach (1..10) }, bcopts => '-exec', + @open_todo, expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); # 1 <;> nextstate(main 445 optree.t:167) v # 2 <;> nextstate(main 445 optree.t:167) v @@ -404,7 +414,7 @@ checkOptree ( name => '-exec sub { print "foo $_" foreach (1..10) }', # 4 <$> const[IV 1] s # 5 <$> const[IV 10] s # 6 <#> gv[*_] s -# 7 <{> enteriter(next->d last->g redo->8) lKS +# 7 <{> enteriter(next->d last->g redo->8) lKS/8 # e <0> iter s # f <|> and(other->8) K/1 # 8 <0> pushmark s @@ -423,7 +433,7 @@ EOT_EOT # 4 <$> const(IV 1) s # 5 <$> const(IV 10) s # 6 <$> gv(*_) s -# 7 <{> enteriter(next->d last->g redo->8) lKS +# 7 <{> enteriter(next->d last->g redo->8) lKS/8 # e <0> iter s # f <|> and(other->8) K/1 # 8 <0> pushmark s @@ -443,7 +453,7 @@ checkOptree ( name => '@foo = grep(!/^\#/, @bar)', code => '@foo = grep(!/^\#/, @bar)', bcopts => '-exec', expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); -# 1 <;> nextstate(main 496 (eval 20):1) v +# 1 <;> nextstate(main 496 (eval 20):1) v:{ # 2 <0> pushmark s # 3 <0> pushmark s # 4 <#> gv[*bar] s @@ -459,7 +469,7 @@ checkOptree ( name => '@foo = grep(!/^\#/, @bar)', # d <2> aassign[t6] KS/COMMON # e <1> leavesub[1 ref] K/REFC,1 EOT_EOT -# 1 <;> nextstate(main 496 (eval 20):1) v +# 1 <;> nextstate(main 496 (eval 20):1) v:{ # 2 <0> pushmark s # 3 <0> pushmark s # 4 <$> gv(*bar) s @@ -483,7 +493,7 @@ checkOptree ( name => '%h = map { getkey($_) => $_ } @a', code => '%h = map { getkey($_) => $_ } @a', bcopts => '-exec', expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); -# 1 <;> nextstate(main 501 (eval 22):1) v +# 1 <;> nextstate(main 501 (eval 22):1) v:{ # 2 <0> pushmark s # 3 <0> pushmark s # 4 <#> gv[*a] s @@ -491,7 +501,7 @@ checkOptree ( name => '%h = map { getkey($_) => $_ } @a', # 6 <@> mapstart lK* # 7 <|> mapwhile(other->8)[t9] lK # 8 <0> enter l -# 9 <;> nextstate(main 500 (eval 22):1) v +# 9 <;> nextstate(main 500 (eval 22):1) v:{ # a <0> pushmark s # b <0> pushmark s # c <#> gvsv[*_] s @@ -507,7 +517,7 @@ checkOptree ( name => '%h = map { getkey($_) => $_ } @a', # l <2> aassign[t10] KS/COMMON # m <1> leavesub[1 ref] K/REFC,1 EOT_EOT -# 1 <;> nextstate(main 501 (eval 22):1) v +# 1 <;> nextstate(main 501 (eval 22):1) v:{ # 2 <0> pushmark s # 3 <0> pushmark s # 4 <$> gv(*a) s @@ -515,7 +525,7 @@ EOT_EOT # 6 <@> mapstart lK* # 7 <|> mapwhile(other->8)[t4] lK # 8 <0> enter l -# 9 <;> nextstate(main 500 (eval 22):1) v +# 9 <;> nextstate(main 500 (eval 22):1) v:{ # a <0> pushmark s # b <0> pushmark s # c <$> gvsv(*_) s @@ -542,16 +552,16 @@ checkOptree ( name => '%h=(); for $_(@a){$h{getkey($_)} = $_}', # 4 <#> gv[*h] s # 5 <1> rv2hv[t2] lKRM*/1 # 6 <2> aassign[t3] vKS -# 7 <;> nextstate(main 506 (eval 24):1) v +# 7 <;> nextstate(main 506 (eval 24):1) v:{ # 8 <0> pushmark sM # 9 <#> gv[*a] s # a <1> rv2av[t6] sKRM/1 # b <#> gv[*_] s # c <1> rv2gv sKRM/1 -# d <{> enteriter(next->o last->r redo->e) lKS +# d <{> enteriter(next->o last->r redo->e) lKS/8 # p <0> iter s # q <|> and(other->e) K/1 -# e <;> nextstate(main 505 (eval 24):1) v +# e <;> nextstate(main 505 (eval 24):1) v:{ # f <#> gvsv[*_] s # g <#> gv[*h] s # h <1> rv2hv sKR/1 @@ -572,16 +582,16 @@ EOT_EOT # 4 <$> gv(*h) s # 5 <1> rv2hv[t1] lKRM*/1 # 6 <2> aassign[t2] vKS -# 7 <;> nextstate(main 506 (eval 24):1) v +# 7 <;> nextstate(main 506 (eval 24):1) v:{ # 8 <0> pushmark sM # 9 <$> gv(*a) s # a <1> rv2av[t3] sKRM/1 # b <$> gv(*_) s # c <1> rv2gv sKRM/1 -# d <{> enteriter(next->o last->r redo->e) lKS +# d <{> enteriter(next->o last->r redo->e) lKS/8 # p <0> iter s # q <|> and(other->e) K/1 -# e <;> nextstate(main 505 (eval 24):1) v +# e <;> nextstate(main 505 (eval 24):1) v:{ # f <$> gvsv(*_) s # g <$> gv(*h) s # h <1> rv2hv sKR/1 @@ -606,7 +616,7 @@ checkOptree ( name => 'map $_+42, 10..20', # 3 <$> const[AV ] s # 4 <1> rv2av lKPM/1 # 5 <@> mapstart K -# 6 <|> mapwhile(other->7)[t7] K +# 6 <|> mapwhile(other->7)[t5] K # 7 <#> gvsv[*_] s # 8 <$> const[IV 42] s # 9 <2> add[t2] sK/2 @@ -631,16 +641,17 @@ pass("CONSTANTS"); checkOptree ( name => '-e use constant j => qq{junk}; print j', prog => 'use constant j => qq{junk}; print j', bcopts => '-exec', + @open_todo, expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT'); # 1 <0> enter -# 2 <;> nextstate(main 71 -e:1) v +# 2 <;> nextstate(main 71 -e:1) v:{ # 3 <0> pushmark s # 4 <$> const[PV "junk"] s # 5 <@> print vK # 6 <@> leave[1 ref] vKP/REFC EOT_EOT # 1 <0> enter -# 2 <;> nextstate(main 71 -e:1) v +# 2 <;> nextstate(main 71 -e:1) v:{ # 3 <0> pushmark s # 4 <$> const(PV "junk") s # 5 <@> print vK