issue54.t 1017 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #! /usr/bin/env perl
  2. # http://code.google.com/p/perl-compiler/issues/detail?id=54
  3. # pad_swipe error with package pmcs
  4. use strict;
  5. my $name = "ccode54p";
  6. use Test::More tests => 1;
  7. my $pkg = <<"EOF";
  8. package $name;
  9. sub test {
  10. \$abc='ok';
  11. print "\$abc\\n";
  12. }
  13. 1;
  14. EOF
  15. open F, ">", "$name.pm";
  16. print F $pkg;
  17. close F;
  18. my $expected = "ok";
  19. my $runperl = $^X =~ m/\s/ ? qq{"$^X"} : $^X;
  20. if ($] < 5.008) {
  21. system "$runperl -MO=Bytecode,-o$name.pmc $name.pm";
  22. } else {
  23. system "$runperl -Mblib -MO=-qq,Bytecode,-H,-o$name.pmc $name.pm";
  24. }
  25. unless (-e "$name.pmc") {
  26. print "not ok 1 #B::Bytecode failed.\n";
  27. exit;
  28. }
  29. my $runexe = "$runperl -Mblib -I. -M$name -e\"$name\::test\"";
  30. $runexe = "$runperl -MByteLoader -I. -M$name -e\"$name\::test\"" if $] < 5.008;
  31. my $result = `$runexe`;
  32. $result =~ s/\n$//;
  33. SKIP: {
  34. skip "no pmc on 5.6 (yet)", 1 if $] < 5.008;
  35. ok($result eq $expected, "issue54 - pad_swipe error with package pmcs");
  36. }
  37. END {
  38. unlink($name, "$name.pmc", "$name.pm")
  39. if $result eq $expected;
  40. }