Re: [ PATCH ] module test fest
[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 }
12
13 $|  = 1;
14 use warnings;
15 use strict;
16 use Config;
17
18 print "1..3\n";
19
20 my $test = 1;
21
22 sub ok { print "ok $test\n"; $test++ }
23
24
25 my $a;
26 my $Is_VMS = $^O eq 'VMS';
27 my $Is_MacOS = $^O eq 'MacOS';
28
29 my $path = join " ", map { qq["-I$_"] } @INC;
30 my $redir = $Is_MacOS ? "" : "2>&1";
31
32 $a = `$^X $path "-MO=Debug" -e 1 $redir`;
33 print "not " unless $a =~
34 /\bLISTOP\b.*\bOP\b.*\bCOP\b.*\bOP\b/s;
35 ok;
36
37
38 $a = `$^X $path "-MO=Terse" -e 1 $redir`;
39 print "not " unless $a =~
40 /\bLISTOP\b.*leave.*\n    OP\b.*enter.*\n    COP\b.*nextstate.*\n    OP\b.*null/s;
41 ok;
42
43 $a = `$^X $path "-MO=Terse" -ane "s/foo/bar/" $redir`;
44 $a =~ s/\(0x[^)]+\)//g;
45 $a =~ s/\[[^\]]+\]//g;
46 $a =~ s/-e syntax OK//;
47 $a =~ s/[^a-z ]+//g;
48 $a =~ s/\s+/ /g;
49 $a =~ s/\b(s|foo|bar|ullsv)\b\s?//g;
50 $a =~ s/^\s+//;
51 $a =~ s/\s+$//;
52 my $is_thread = $Config{use5005threads} && $Config{use5005threads} eq 'define';
53 if ($is_thread) {
54     $b=<<EOF;
55 leave enter nextstate label leaveloop enterloop null and defined null
56 threadsv readline gv lineseq nextstate aassign null pushmark split pushre
57 threadsv const null pushmark rvav gv nextstate subst const unstack nextstate
58 EOF
59 } else {
60     $b=<<EOF;
61 leave enter nextstate label leaveloop enterloop null and defined null
62 null gvsv readline gv lineseq nextstate aassign null pushmark split pushre
63 null gvsv const null pushmark rvav gv nextstate subst const unstack nextstate
64 EOF
65 }
66 $b=~s/\n/ /g;$b=~s/\s+/ /g;
67 $b =~ s/\s+$//;
68 print "# [$a]\n# vs\n# [$b]\nnot " if $a ne $b;
69 ok;
70