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 my $is_thread = $Config{use5005threads} && $Config{use5005threads} eq 'define';
120 leave enter nextstate label leaveloop enterloop null and defined null
121 threadsv readline gv lineseq nextstate aassign null pushmark split pushre
122 threadsv const null pushmark rvav gv nextstate subst const unstack nextstate
126 leave enter nextstate label leaveloop enterloop null and defined null
127 null gvsv readline gv lineseq nextstate aassign null pushmark split pushre
128 null gvsv const null pushmark rvav gv nextstate subst const unstack nextstate
131 $b=~s/\n/ /g;$b=~s/\s+/ /g;
133 print "# [$a]\n# vs\n# [$b]\nnot " if $a ne $b;
137 chomp($a = `$^X "-I../lib" "-MB::Stash" "-Mwarnings" -e "1"`);
140 chomp($a = `$^X -I../lib -MB::Stash -Mwarnings -e1`);
142 $a = join ',', sort split /,/, $a;
143 $a =~ s/-uWin32,// if $^O eq 'MSWin32';
144 $a =~ s/-u(Cwd|File|File::Copy|OS2),//g if $^O eq 'os2';
145 $a =~ s/-uCwd,// if $^O eq 'cygwin';
146 if ($Config{static_ext} eq ' ') {
147 $b = '-uCarp,-uCarp::Heavy,-uDB,-uExporter,-uExporter::Heavy,-uattributes,'
148 . '-umain,-uwarnings';
149 print "# [$a] vs [$b]\nnot " if $a ne $b;
152 print "ok $test # skipped: one or more static extensions\n"; $test++;
156 print "# use5005threads: test $test skipped\n";
159 $a = `$^X "-I../lib" "-MO=Showlex" -e "my %one"`;
162 $a = `$^X -I../lib -MO=Showlex -e "my %one" 2>&1`;
164 print "# [$a]\nnot " unless $a =~ /sv_undef.*PVNV.*%one.*sv_undef.*HV/s;