issue34.t 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #! /usr/bin/env perl
  2. # http://code.google.com/p/perl-compiler/issues/detail?id=34
  3. # B::C -O4 ignores $/ = undef
  4. use Test::More tests => 2;
  5. use strict;
  6. my $base = "ccode34i";
  7. sub test {
  8. my ($num, $script, $expected, $todo) = @_;
  9. my $name = $base."_$num";
  10. unlink($name, "$name.c", "$name.pl", "$name.exe");
  11. open F, ">", "$name.pl";
  12. print F $script;
  13. close F;
  14. my $runperl = $^X =~ m/\s/ ? qq{"$^X"} : $^X;
  15. $runperl .= " -Iblib/arch -Iblib/lib";
  16. my $b = $] > 5.008 ? "-qq,CC" : "CC";
  17. system "$runperl -MO=$b,-o$name.c $name.pl";
  18. unless (-e "$name.c") {
  19. print "not ok 1 #B::CC failed\n";
  20. exit;
  21. }
  22. system "$runperl blib/script/cc_harness -q -o $name $name.c";
  23. my $runexe = $^O eq 'MSWin32' ? "$name.exe" : "./$name";
  24. ok(-e $runexe, "$runexe exists");
  25. my $result = `$runexe`;
  26. my $ok = $result eq $expected;
  27. if ($todo) {
  28. TODO: {
  29. local $TODO = $todo;
  30. ok($ok);
  31. }
  32. } else {
  33. ok($ok);
  34. }
  35. if ($ok) {
  36. unlink($runexe, "$name.c", "$name.pl", "$name.dat");
  37. }
  38. }
  39. my $script = <<'EOF';
  40. $/ = undef;
  41. open FILE, 'ccode34i.dat';
  42. my $first = <FILE>;
  43. my $rest = <FILE>;
  44. print "1:\n$first";
  45. print "2:\n$rest";
  46. EOF
  47. open F, ">", "ccode34i.dat";
  48. print F "line1\n";
  49. print F "line2\n";
  50. close F;
  51. my $expected = <<'EOF1';
  52. 1:
  53. line1
  54. line2
  55. 2:
  56. EOF1
  57. test(1, $script, $expected, 'B::CC issue 34 $/=undef ignored');