Fix-n-skip the tests under 5005threads.
[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+$//;
cfe9256d 117if ($Config{use5005threads} eq 'define') {
118 $b=<<EOF;
119leave enter nextstate label leaveloop enterloop null and defined null
120threadsv readline gv lineseq nextstate aassign null pushmark split pushre
121threadsv const null pushmark rvav gv nextstate subst const unstack nextstate
122EOF
123} else {
124 $b=<<EOF;
ccc418af 125leave enter nextstate label leaveloop enterloop null and defined null
126null gvsv readline gv lineseq nextstate aassign null pushmark split pushre
cfe9256d 127null gvsv const null pushmark rvav gv nextstate subst const unstack nextstate
ccc418af 128EOF
cfe9256d 129}
ccc418af 130$b=~s/\n/ /g;$b=~s/\s+/ /g;
131$b =~ s/\s+$//;
cfe9256d 132print "# [$a]\n# vs\n# [$b]\nnot " if $a ne $b;
ccc418af 133ok;
134
885a8af1 135if ($Is_VMS) {
136 chomp($a = `$^X "-I../lib" "-MB::Stash" "-Mwarnings" -e "1"`);
137}
138else {
139 chomp($a = `$^X -I../lib -MB::Stash -Mwarnings -e1`);
140}
ccc418af 141$a = join ',', sort split /,/, $a;
754a99e1 142$a =~ s/-uWin32,// if $^O eq 'MSWin32';
143$a =~ s/-u(Cwd|File|File::Copy|OS2),//g if $^O eq 'os2';
f3ff050f 144if ($Config{static_ext} eq ' ') {
145 $b = '-uCarp,-uCarp::Heavy,-uDB,-uExporter,-uExporter::Heavy,-uattributes,'
146 . '-umain,-uwarnings';
147 print "# [$a] vs [$b]\nnot " if $a ne $b;
148 ok;
149} else {
150 print "ok $test # skipped: one or more static extensions\n"; $test++;
151}
ccc418af 152
cfe9256d 153if ($Config{use5005threads} eq 'define') {
154 print "# use5005threads: test $test skipped\n";
155} else {
156 if ($Is_VMS) {
157 $a = `$^X "-I../lib" "-MO=Showlex" -e "my %one"`;
158 }
159 else {
160 $a = `$^X -I../lib -MO=Showlex -e "my %one" 2>&1`;
161 }
162 print "# [$a]\nnot " unless $a =~ /sv_undef.*PVNV.*%one.*sv_undef.*HV/s;
885a8af1 163}
ccc418af 164ok;