YA resync with mainstem, including VMS patches from others
[p5sagit/p5-mst-13.2.git] / t / lib / b.t
CommitLineData
ee8c7f54 1#!./perl
2
3BEGIN {
4 chdir 't' if -d 't';
5 unshift @INC, '../lib';
6}
7
8$| = 1;
9use warnings;
10use strict;
11use Config;
12
13print "1..10\n";
14
15my $test = 1;
16
17sub ok { print "ok $test\n"; $test++ }
18
19use B::Deparse;
20my $deparse = B::Deparse->new() or print "not ";
21ok;
22
23print "not " if "{\n 1;\n}" ne $deparse->coderef2text(sub {1});
24ok;
25
26print "not " if "{\n '???';\n 2;\n}" ne
27 $deparse->coderef2text(sub {1;2});
28ok;
29
30print "not " if "{\n \$test /= 2 if ++\$test;\n}" ne
31 $deparse->coderef2text(sub {++$test and $test/=2;});
32ok;
33
4b19af01 34my $a;
35my $Is_VMS = $^O eq 'VMS';
36if ($Is_VMS) {
37 $^X = "MCR $^X";
38 $a = `$^X "-I../lib" "-MO=Deparse" -anle "1"`;
39}
40else {
41 $a = `$^X -I../lib -MO=Deparse -anle 1 2>&1`;
42}
ee8c7f54 43$a =~ s/-e syntax OK\n//g;
44$b = <<'EOF';
45
46LINE: while (defined($_ = <ARGV>)) {
47 chomp $_;
48 @F = split(/\s+/, $_, 0);
49 '???'
50}
51continue {
52 '???'
53}
54
55EOF
56print "# [$a]\n\# vs\n# [$b]\nnot " if $a ne $b;
57ok;
58
59#6
4b19af01 60if ($Is_VMS) {
61 $a = `$^X "-I../lib" "-MO=Debug" -e "1"`;
62}
63else {
64 $a = `$^X -I../lib -MO=Debug -e 1 2>&1`;
65}
ee8c7f54 66print "not " unless $a =~
67/\bLISTOP\b.*\bOP\b.*\bCOP\b.*\bOP\b/s;
68ok;
69
70#7
4b19af01 71if ($Is_VMS) {
72 $a = `$^X "-I../lib" "-MO=Terse" -e "1"`;
73}
74else {
75 $a = `$^X -I../lib -MO=Terse -e 1 2>&1`;
76}
ee8c7f54 77print "not " unless $a =~
78/\bLISTOP\b.*leave.*\bOP\b.*enter.*\bCOP\b.*nextstate.*\bOP\b.*null/s;
79ok;
80
4b19af01 81if ($Is_VMS) {
82 $a = `$^X "-I../lib" "-MO=Terse" -ane "s/foo/bar/"`;
83}
84else {
85 $a = `$^X -I../lib -MO=Terse -ane "s/foo/bar/" 2>&1`;
86}
ee8c7f54 87$a =~ s/\(0x[^)]+\)//g;
88$a =~ s/\[[^\]]+\]//g;
89$a =~ s/-e syntax OK//;
90$a =~ s/[^a-z ]+//g;
91$a =~ s/\s+/ /g;
92$a =~ s/\b(s|foo|bar|ullsv)\b\s?//g;
93$a =~ s/^\s+//;
94$a =~ s/\s+$//;
95$b=<<EOF;
96leave enter nextstate label leaveloop enterloop null and defined null
97null gvsv readline gv lineseq nextstate aassign null pushmark split pushre
98null gvsv const null pushmark rvav gv nextstate subst const unstack
99nextstate
100EOF
101$b=~s/\n/ /g;$b=~s/\s+/ /g;
102$b =~ s/\s+$//;
103print "# [$a] vs [$b]\nnot " if $a ne $b;
104ok;
105
4b19af01 106if ($Is_VMS) {
107 chomp($a = `$^X "-I../lib" "-MB::Stash" "-Mwarnings" -e "1"`);
108}
109else {
110 chomp($a = `$^X -I../lib -MB::Stash -Mwarnings -e1`);
111}
ee8c7f54 112$a = join ',', sort split /,/, $a;
4b19af01 113$a =~ s/-uWin32,// if $^O eq 'MSWin32';
114$a =~ s/-u(Cwd|File|File::Copy|OS2),//g if $^O eq 'os2';
115if ($Config{static_ext} eq ' ') {
116 $b = '-uCarp,-uCarp::Heavy,-uDB,-uExporter,-uExporter::Heavy,-uattributes,'
117 . '-umain,-uwarnings';
118 print "# [$a] vs [$b]\nnot " if $a ne $b;
119 ok;
120} else {
121 print "ok $test # skipped: one or more static extensions\n"; $test++;
122}
ee8c7f54 123
4b19af01 124if ($Is_VMS) {
125 $a = `$^X "-I../lib" "-MO=Showlex" -e "my %one"`;
126}
127else {
128 $a = `$^X -I../lib -MO=Showlex -e "my %one" 2>&1`;
129}
ee8c7f54 130print "# [$a]\nnot " unless $a =~ /sv_undef.*PVNV.*%one.*sv_undef.*HV/s;
131ok;