c_argv.t 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #! /usr/bin/env perl
  2. use strict;
  3. use Test::More tests => 4;
  4. my $runperl = $^X =~ m/\s/ ? qq{"$^X"} : $^X;
  5. my $Mblib = $^O eq 'MSWin32' ? '-Iblib\arch -Iblib\lib' : "-Iblib/arch -Iblib/lib";
  6. my $perlcc = $^O eq 'MSWin32' ? "blib\\script\\perlcc" : 'blib/script/perlcc';
  7. my $exe = $^O eq 'MSWin32' ? 'ccode_argv.exe' : './ccode_argv';
  8. my $pl = $^O eq 'MSWin32' ? "t\\c_argv.pl" : "t/c_argv.pl";
  9. my $plc = $pl . "c";
  10. my $d = <DATA>;
  11. open F, ">", $pl;
  12. print F $d;
  13. close F;
  14. is(`$runperl $Mblib $perlcc -O3 -o $exe -r $pl ok 1`, "ok 1\n",
  15. "perlcc -r file args");
  16. unlink($exe);
  17. open F, ">", $pl;
  18. my $d2 = $d;
  19. $d2 =~ s/ ok 1/ ok 2/;
  20. print F $d2;
  21. close F;
  22. {
  23. my $result = `$runperl $Mblib $perlcc -O -o $exe -r $pl ok 2`;
  24. my $expected = "ok 2\n";
  25. my $cmt = "perlcc -O -r file args";
  26. if ($result eq $expected) {
  27. is ($result, $expected, $cmt);
  28. } else {
  29. TODO: {
  30. local $TODO = "unreliable CC testcase";
  31. is($result, $expected, $cmt);
  32. }
  33. }
  34. }
  35. unlink($exe);
  36. open F, ">", $pl;
  37. my $d3 = $d;
  38. $d3 =~ s/ ok 1/ ok 3/;
  39. print F $d3;
  40. close F;
  41. is(`$runperl $Mblib $perlcc -B -r $pl ok 3`, "ok 3\n",
  42. "perlcc -B -r file args");
  43. # issue 30
  44. $d = '
  45. sub f1 {
  46. my($self) = @_;
  47. $self->f2;
  48. }
  49. sub f2 {}
  50. sub new {}
  51. print "@ARGV\n";';
  52. open F, ">", $pl;
  53. print F $d;
  54. close F;
  55. `$runperl $Mblib $perlcc -o $exe $pl`;
  56. is (`$exe a b c`, "a b c\n",
  57. "issue 30: perlcc -o $exe; $exe args");
  58. END {
  59. unlink($exe, $pl, $plc);
  60. }
  61. __DATA__
  62. print @ARGV?join(" ",@ARGV):"not ok 1 # empty \@ARGV","\n";