5 unshift @INC, '../lib';
17 sub ok { print "ok $test\n"; $test++ }
20 my $deparse = B::Deparse->new() or print "not ";
23 print "not " if "{\n 1;\n}" ne $deparse->coderef2text(sub {1});
26 print "not " if "{\n '???';\n 2;\n}" ne
27 $deparse->coderef2text(sub {1;2});
30 print "not " if "{\n \$test /= 2 if ++\$test;\n}" ne
31 $deparse->coderef2text(sub {++$test and $test/=2;});
36 $test = sub : lvalue {
43 print "not " if $deparse->coderef2text(sub{$test = sub : lvalue { 1 }}) ne $a;
46 $a =~ s/lvalue/method/;
47 print "not " if $deparse->coderef2text(sub{$test = sub : method { 1 }}) ne $a;
50 $a =~ s/method/locked method/;
51 print "not " if $deparse->coderef2text(sub{$test = sub : method locked { 1 }})
57 my $Is_VMS = $^O eq 'VMS';
60 $a = `$^X "-I../lib" "-MO=Deparse" -anle "1"`;
63 $a = `$^X -I../lib -MO=Deparse -anle 1 2>&1`;
65 $a =~ s/-e syntax OK\n//g;
68 LINE: while (defined($_ = <ARGV>)) {
70 @F = split(/\s+/, $_, 0);
78 print "# [$a]\n\# vs\n# [$b]\nnot " if $a ne $b;
83 $a = `$^X "-I../lib" "-MO=Debug" -e "1"`;
86 $a = `$^X -I../lib -MO=Debug -e 1 2>&1`;
88 print "not " unless $a =~
89 /\bLISTOP\b.*\bOP\b.*\bCOP\b.*\bOP\b/s;
94 $a = `$^X "-I../lib" "-MO=Terse" -e "1"`;
97 $a = `$^X -I../lib -MO=Terse -e 1 2>&1`;
99 print "not " unless $a =~
100 /\bLISTOP\b.*leave.*\bOP\b.*enter.*\bCOP\b.*nextstate.*\bOP\b.*null/s;
104 $a = `$^X "-I../lib" "-MO=Terse" -ane "s/foo/bar/"`;
107 $a = `$^X -I../lib -MO=Terse -ane "s/foo/bar/" 2>&1`;
109 $a =~ s/\(0x[^)]+\)//g;
110 $a =~ s/\[[^\]]+\]//g;
111 $a =~ s/-e syntax OK//;
114 $a =~ s/\b(s|foo|bar|ullsv)\b\s?//g;
117 if ($Config{use5005threads} eq 'define') {
119 leave enter nextstate label leaveloop enterloop null and defined null
120 threadsv readline gv lineseq nextstate aassign null pushmark split pushre
121 threadsv const null pushmark rvav gv nextstate subst const unstack nextstate
125 leave enter nextstate label leaveloop enterloop null and defined null
126 null gvsv readline gv lineseq nextstate aassign null pushmark split pushre
127 null gvsv const null pushmark rvav gv nextstate subst const unstack nextstate
130 $b=~s/\n/ /g;$b=~s/\s+/ /g;
132 print "# [$a]\n# vs\n# [$b]\nnot " if $a ne $b;
136 chomp($a = `$^X "-I../lib" "-MB::Stash" "-Mwarnings" -e "1"`);
139 chomp($a = `$^X -I../lib -MB::Stash -Mwarnings -e1`);
141 $a = join ',', sort split /,/, $a;
142 $a =~ s/-uWin32,// if $^O eq 'MSWin32';
143 $a =~ s/-u(Cwd|File|File::Copy|OS2),//g if $^O eq 'os2';
144 if ($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;
150 print "ok $test # skipped: one or more static extensions\n"; $test++;
153 if ($Config{use5005threads} eq 'define') {
154 print "# use5005threads: test $test skipped\n";
157 $a = `$^X "-I../lib" "-MO=Showlex" -e "my %one"`;
160 $a = `$^X -I../lib -MO=Showlex -e "my %one" 2>&1`;
162 print "# [$a]\nnot " unless $a =~ /sv_undef.*PVNV.*%one.*sv_undef.*HV/s;