This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
test for B::Bytecode/ByteLoader
[perl5.git] / ext / B / t / bytecode.t
CommitLineData
46983aad
AE
1#!./perl
2
3BEGIN {
4 chdir 't' if -d 't';
5 @INC = qw(../lib);
6 require './test.pl'; # for run_perl()
7}
8use strict;
9
10my $test = 'bytecode.pl';
11END { 1 while unlink $test }
12
13undef $/;
14my @tests = split /\n###+\n/, <DATA>;
15
16print "1..".($#tests+1)."\n";
17
18my $cnt = 1;
19
20for (@tests) {
21 my $got;
22 my ($script, $expect) = split />>>+\n/;
23 $expect =~ s/\n$//;
24 open T, ">$test"; print T $script; close T;
25 $got = run_perl(switches => "-MO=Bytecode,-H,-o$test",
26 progfile => $test);
27 unless ($?) {
28 $got = run_perl(progfile => $test);
29 unless ($?) {
30 if ($got =~ /^$expect$/) {
31 print "ok $cnt\n";
32 next;
33 } else {
34 print <<"EOT"; next;
35not ok $cnt
36--------- SCRIPT
37$script
38--------- GOT
39$got
40--------- EXPECT
41$expect
42----------------
43
44EOT
45 }
46 }
47 }
48 print <<"EOT";
49--------- SCRIPT
50$script
51--------- $?
52$got
53EOT
54} continue {
55 $cnt++;
56}
57
58__DATA__
59
60print 'hi'
61>>>>
62hi
63############################################################
64for (1,2,3) { print if /\d/ }
65>>>>
66123
67############################################################
68$_ = "xyxyx"; %j=(1,2); s/x/$j{print('z')}/ge; print $_
69>>>>
70zzz2y2y2
71############################################################
72$_ = "xyxyx"; %j=(1,2); s/x/$j{print('z')}/g; print $_
73>>>>
74z2y2y2
75############################################################
76split /a/,"bananarama"; print @_
77>>>>
78bnnrm
79############################################################
80{ package P; sub x { print 'ya' } x }
81>>>>
82ya
83############################################################
84@z = split /:/,"b:r:n:f:g"; print @z
85>>>>
86brnfg
87############################################################
88sub AUTOLOAD { print 1 } &{"a"}()
89>>>>
901
91############################################################
92my $l = 3; $x = sub { print $l }; &$x
93>>>>
943
95############################################################
96my $i = 1;
97my $foo = sub {$i = shift if @_};
98&$foo(3);
99############################################################
100print <.*>
101>>>>
102..*
103############################################################
104$_="\xff\xff"; use utf8; utf8::encode $_; print $_
105>>>>
106\xc3\xbf\xc3\xbf
107############################################################
108$x="Cannot use"; print index $x, "Can"
109>>>>
1100
111############################################################
112my $i=6; eval "print \$i\n"
113>>>>
1146
115############################################################
116BEGIN { %h=(1=>2,3=>4) } print $h{3}
117>>>>
1184
119############################################################
120open our $T,"a"
121############################################################
122print <DATA>
123__DATA__
124a
125b
126>>>>
127a
128b
129############################################################
130BEGIN { tie @a, __PACKAGE__; sub TIEARRAY { bless{} } sub FETCH { 1 } }
131print $a[1]
132>>>>
1331
134############################################################
135my $i=3; print 1 .. $i
136>>>>
137123
138############################################################
139my $h = { a=>3, b=>1 }; print sort {$h->{$a} <=> $h->{$b}} keys %$h
140>>>>
141ba
142############################################################
143print sort { my $p; $b <=> $a } 1,4,3
144>>>>
145431