Re: File::Temp problems on VMS in bleedperl
[p5sagit/p5-mst-13.2.git] / t / lib / b.t
CommitLineData
ccc418af 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
9b86dfa2 13print "1..13\n";
ccc418af 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;
9b86dfa2 33{
34my $a = <<'EOF';
35{
36 $test = sub : lvalue {
37 1;
38 }
39 ;
40}
41EOF
42chomp $a;
43print "not " if $deparse->coderef2text(sub{$test = sub : lvalue { 1 }}) ne $a;
44ok;
45
46$a =~ s/lvalue/method/;
47print "not " if $deparse->coderef2text(sub{$test = sub : method { 1 }}) ne $a;
48ok;
49
50$a =~ s/method/locked method/;
51print "not " if $deparse->coderef2text(sub{$test = sub : method locked { 1 }})
52 ne $a;
53ok;
54}
ccc418af 55
885a8af1 56my $a;
57my $Is_VMS = $^O eq 'VMS';
58if ($Is_VMS) {
59 $^X = "MCR $^X";
60 $a = `$^X "-I../lib" "-MO=Deparse" -anle "1"`;
61}
62else {
63 $a = `$^X -I../lib -MO=Deparse -anle 1 2>&1`;
64}
5fb4d820 65$a =~ s/-e syntax OK\n//g;
ccc418af 66$b = <<'EOF';
ccc418af 67
68LINE: while (defined($_ = <ARGV>)) {
69 chomp $_;
70 @F = split(/\s+/, $_, 0);
71 '???'
72}
73continue {
74 '???'
75}
76
77EOF
5fb4d820 78print "# [$a]\n\# vs\n# [$b]\nnot " if $a ne $b;
ccc418af 79ok;
80
81#6
885a8af1 82if ($Is_VMS) {
83 $a = `$^X "-I../lib" "-MO=Debug" -e "1"`;
84}
85else {
86 $a = `$^X -I../lib -MO=Debug -e 1 2>&1`;
87}
ccc418af 88print "not " unless $a =~
89/\bLISTOP\b.*\bOP\b.*\bCOP\b.*\bOP\b/s;
90ok;
91
92#7
885a8af1 93if ($Is_VMS) {
94 $a = `$^X "-I../lib" "-MO=Terse" -e "1"`;
95}
96else {
97 $a = `$^X -I../lib -MO=Terse -e 1 2>&1`;
98}
ccc418af 99print "not " unless $a =~
100/\bLISTOP\b.*leave.*\bOP\b.*enter.*\bCOP\b.*nextstate.*\bOP\b.*null/s;
101ok;
102
885a8af1 103if ($Is_VMS) {
104 $a = `$^X "-I../lib" "-MO=Terse" -ane "s/foo/bar/"`;
105}
106else {
107 $a = `$^X -I../lib -MO=Terse -ane "s/foo/bar/" 2>&1`;
108}
ccc418af 109$a =~ s/\(0x[^)]+\)//g;
110$a =~ s/\[[^\]]+\]//g;
111$a =~ s/-e syntax OK//;
112$a =~ s/[^a-z ]+//g;
113$a =~ s/\s+/ /g;
b2ec7025 114$a =~ s/\b(s|foo|bar|ullsv)\b\s?//g;
ccc418af 115$a =~ s/^\s+//;
116$a =~ s/\s+$//;
208edb77 117my $is_thread = $Config{use5005threads} && $Config{use5005threads} eq 'define';
118if ($is_thread) {
cfe9256d 119 $b=<<EOF;
120leave enter nextstate label leaveloop enterloop null and defined null
121threadsv readline gv lineseq nextstate aassign null pushmark split pushre
122threadsv const null pushmark rvav gv nextstate subst const unstack nextstate
123EOF
124} else {
125 $b=<<EOF;
ccc418af 126leave enter nextstate label leaveloop enterloop null and defined null
127null gvsv readline gv lineseq nextstate aassign null pushmark split pushre
cfe9256d 128null gvsv const null pushmark rvav gv nextstate subst const unstack nextstate
ccc418af 129EOF
cfe9256d 130}
ccc418af 131$b=~s/\n/ /g;$b=~s/\s+/ /g;
132$b =~ s/\s+$//;
cfe9256d 133print "# [$a]\n# vs\n# [$b]\nnot " if $a ne $b;
ccc418af 134ok;
135
885a8af1 136if ($Is_VMS) {
137 chomp($a = `$^X "-I../lib" "-MB::Stash" "-Mwarnings" -e "1"`);
138}
139else {
140 chomp($a = `$^X -I../lib -MB::Stash -Mwarnings -e1`);
141}
ccc418af 142$a = join ',', sort split /,/, $a;
754a99e1 143$a =~ s/-uWin32,// if $^O eq 'MSWin32';
144$a =~ s/-u(Cwd|File|File::Copy|OS2),//g if $^O eq 'os2';
f3ff050f 145if ($Config{static_ext} eq ' ') {
146 $b = '-uCarp,-uCarp::Heavy,-uDB,-uExporter,-uExporter::Heavy,-uattributes,'
147 . '-umain,-uwarnings';
148 print "# [$a] vs [$b]\nnot " if $a ne $b;
149 ok;
150} else {
151 print "ok $test # skipped: one or more static extensions\n"; $test++;
152}
ccc418af 153
208edb77 154if ($is_thread) {
cfe9256d 155 print "# use5005threads: test $test skipped\n";
156} else {
157 if ($Is_VMS) {
158 $a = `$^X "-I../lib" "-MO=Showlex" -e "my %one"`;
159 }
160 else {
161 $a = `$^X -I../lib -MO=Showlex -e "my %one" 2>&1`;
162 }
163 print "# [$a]\nnot " unless $a =~ /sv_undef.*PVNV.*%one.*sv_undef.*HV/s;
885a8af1 164}
ccc418af 165ok;