issue29.t 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #! /usr/bin/env perl
  2. # http://code.google.com/p/perl-compiler/issues/detail?id=29
  3. use strict;
  4. BEGIN {
  5. if ($] < 5.008) {
  6. print "1..1\nok 1 #skip 5.6 has no IO discipline\n"; exit;
  7. }
  8. }
  9. use Test::More tests => 2;
  10. use Config;
  11. my $DEBUGGING = ($Config{ccflags} =~ m/-DDEBUGGING/);
  12. my $ITHREADS = ($Config{useithreads});
  13. my $name = "ccode29i";
  14. my $script = <<'EOF';
  15. use open qw(:std :utf8);
  16. $_ = <>;
  17. print unpack('U*', $_), " ";
  18. print $_ if /\w/;
  19. EOF
  20. open F, ">", "$name.pl";
  21. print F $script;
  22. close F;
  23. #$ENV{LC_ALL} = 'C.UTF-8'; $ENV{LANGUAGE} = $ENV{LANG} = 'en';
  24. my $expected = "24610 ö";
  25. my $runperl = $^X =~ m/\s/ ? qq{"$^X" -Iblib/arch -Iblib/lib} : "$^X -Iblib/arch -Iblib/lib";
  26. system "$runperl blib/script/perlcc -o $name $name.pl";
  27. unless (-e $name or -e "$name.exe") {
  28. print "ok 1 #skip perlcc failed. Try -Bdynamic or -Bstatic or fix your ldopts.\n";
  29. print "ok 2 #skip\n";
  30. exit;
  31. }
  32. my $runexe = $^O eq 'MSWin32' ? "$name.exe" : "./$name";
  33. my $result = `echo "ö" | $runexe`;
  34. $result =~ s/\n$//;
  35. TODO: {
  36. local $TODO = "B::C issue 29 utf8 perlio";
  37. ok($result eq $expected, "'$result' ne '$expected'");
  38. }
  39. system "$runperl -MO=-qq,Bytecode,-o$name.plc $name.pl";
  40. unless (-e "$name.plc") {
  41. print "ok 2 #skip perlcc -B failed.\n";
  42. exit;
  43. }
  44. $runexe = "$runperl -MByteLoader $name.plc";
  45. $result = `echo "ö" | $runexe`;
  46. $result =~ s/\n$//;
  47. TODO: {
  48. local $TODO = "B::Bytecode issue 29 utf8 perlio"
  49. if $] >= 5.011004 and $ITHREADS;
  50. ok($result eq $expected, "'$result' eq '$expected'");
  51. }
  52. END {
  53. unlink($name, "$name.plc", "$name.pl", "$name.exe")
  54. if $result eq $expected;
  55. }