Integrate:
[p5sagit/p5-mst-13.2.git] / ext / B / t / debug.t
1 #!./perl
2
3 BEGIN {
4     chdir 't' if -d 't';
5     if ($^O eq 'MacOS') {
6         @INC = qw(: ::lib ::macos:lib);
7     } else {
8         @INC = '.';
9         push @INC, '../lib';
10     }
11     require Config;
12     if (($Config::Config{'extensions'} !~ /\bB\b/) ){
13         print "1..0 # Skip -- Perl configured without B module\n";
14         exit 0;
15     }
16 }
17
18 $|  = 1;
19 use warnings;
20 use strict;
21 use Config;
22
23 print "1..3\n";
24
25 my $test = 1;
26
27 sub ok { print "ok $test\n"; $test++ }
28
29
30 my $a;
31 my $Is_VMS = $^O eq 'VMS';
32 my $Is_MacOS = $^O eq 'MacOS';
33
34 my $path = join " ", map { qq["-I$_"] } @INC;
35 my $redir = $Is_MacOS ? "" : "2>&1";
36
37 $a = `$^X $path "-MO=Debug" -e 1 $redir`;
38 print "not " unless $a =~
39 /\bLISTOP\b.*\bOP\b.*\bCOP\b.*\bOP\b/s;
40 ok;
41
42
43 $a = `$^X $path "-MO=Terse" -e 1 $redir`;
44 print "not " unless $a =~
45 /\bLISTOP\b.*leave.*\n    OP\b.*enter.*\n    COP\b.*nextstate.*\n    OP\b.*null/s;
46 ok;
47
48 $a = `$^X $path "-MO=Terse" -ane "s/foo/bar/" $redir`;
49 $a =~ s/\(0x[^)]+\)//g;
50 $a =~ s/\[[^\]]+\]//g;
51 $a =~ s/-e syntax OK//;
52 $a =~ s/[^a-z ]+//g;
53 $a =~ s/\s+/ /g;
54 $a =~ s/\b(s|foo|bar|ullsv)\b\s?//g;
55 $a =~ s/^\s+//;
56 $a =~ s/\s+$//;
57 my $is_thread = $Config{use5005threads} && $Config{use5005threads} eq 'define';
58 if ($is_thread) {
59     $b=<<EOF;
60 leave enter nextstate label leaveloop enterloop null and defined null
61 threadsv readline gv lineseq nextstate aassign null pushmark split pushre
62 threadsv const null pushmark rvav gv nextstate subst const unstack
63 EOF
64 } else {
65     $b=<<EOF;
66 leave enter nextstate label leaveloop enterloop null and defined null
67 null gvsv readline gv lineseq nextstate aassign null pushmark split pushre
68 null gvsv const null pushmark rvav gv nextstate subst const unstack
69 EOF
70 }
71 $b=~s/\n/ /g;$b=~s/\s+/ /g;
72 $b =~ s/\s+$//;
73 print "# [$a]\n# vs\n# [$b]\nnot " if $a ne $b;
74 ok;
75