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