issue68.t 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #! /usr/bin/env perl
  2. # http://code.google.com/p/perl-compiler/issues/detail?id=68
  3. # newPMOP assertion >=5.10 threaded
  4. use strict;
  5. my $name = "ccode68i";
  6. use Test::More tests => 1;
  7. use Config;
  8. my $source = <<'EOF';
  9. package A;
  10. sub test {
  11. use Data::Dumper ();
  12. $_ =~ /^(.*?)\d+$/;
  13. "Some::Package"->new();
  14. }
  15. print q(ok);
  16. EOF
  17. open F, ">", "$name.pl";
  18. print F $source;
  19. close F;
  20. my $expected = "ok";
  21. my $runperl = $^X =~ m/\s/ ? qq{"$^X"} : $^X;
  22. my $Mblib = "-Iblib/arch -Iblib/lib";
  23. if ($] < 5.008) {
  24. system "$runperl -MO=Bytecode,-o$name.plc $name.pl";
  25. } else {
  26. system "$runperl $Mblib -MO=-qq,Bytecode,-H,-o$name.plc $name.pl";
  27. }
  28. unless (-e "$name.plc") {
  29. print "not ok 1 #B::Bytecode failed.\n";
  30. exit;
  31. }
  32. my $runexe = $] < 5.008
  33. ? "$runperl -MByteLoader $name.plc"
  34. : "$runperl $Mblib $name.plc";
  35. my $result = `$runexe`;
  36. $result =~ s/\n$//;
  37. TODO: {
  38. use B::Bytecode;
  39. local $TODO = "threaded >= 5.010" if $] >= 5.010 and $Config{useithreads}; # and $B::Bytecode::VERSION lt "1.14";
  40. ok($result eq $expected, "issue68 - newPMOP assert");
  41. }
  42. END {
  43. unlink($name, "$name.plc", "$name.pl")
  44. if $result eq $expected;
  45. }