home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl560.zip / t / comp / require.t < prev    next >
Text File  |  2000-03-08  |  3KB  |  132 lines

  1. #!./perl
  2.  
  3. BEGIN {
  4.     chdir 't' if -d 't';
  5.     unshift @INC, ('.', '../lib');
  6. }
  7.  
  8. # don't make this lexical
  9. $i = 1;
  10. print "1..20\n";
  11.  
  12. sub do_require {
  13.     %INC = ();
  14.     write_file('bleah.pm',@_);
  15.     eval { require "bleah.pm" };
  16.     my @a; # magic guard for scope violations (must be first lexical in file)
  17. }
  18.  
  19. sub write_file {
  20.     my $f = shift;
  21.     open(REQ,">$f") or die "Can't write '$f': $!";
  22.     print REQ @_;
  23.     close REQ;
  24. }
  25.  
  26. eval {require 5.005};
  27. print "# $@\nnot " if $@;
  28. print "ok ",$i++,"\n";
  29.  
  30. eval { require 5.005 };
  31. print "# $@\nnot " if $@;
  32. print "ok ",$i++,"\n";
  33.  
  34. eval { require 5.005; };
  35. print "# $@\nnot " if $@;
  36. print "ok ",$i++,"\n";
  37.  
  38. eval {
  39.     require 5.005
  40. };
  41. print "# $@\nnot " if $@;
  42. print "ok ",$i++,"\n";
  43.  
  44. # new style version numbers
  45.  
  46. eval { require v5.5.630; };
  47. print "# $@\nnot " if $@;
  48. print "ok ",$i++,"\n";
  49.  
  50. eval { require 10.0.2; };
  51. print "# $@\nnot " unless $@ =~ /^Perl v10\.0\.2 required/;
  52. print "ok ",$i++,"\n";
  53.  
  54. eval q{ use v5.5.630; };
  55. print "# $@\nnot " if $@;
  56. print "ok ",$i++,"\n";
  57.  
  58. eval q{ use 10.0.2; };
  59. print "# $@\nnot " unless $@ =~ /^Perl v10\.0\.2 required/;
  60. print "ok ",$i++,"\n";
  61.  
  62. my $ver = 5.005_63;
  63. eval { require $ver; };
  64. print "# $@\nnot " if $@;
  65. print "ok ",$i++,"\n";
  66.  
  67. # check inaccurate fp
  68. $ver = 10.2;
  69. eval { require $ver; };
  70. print "# $@\nnot " unless $@ =~ /^Perl v10\.200\.0 required/;
  71. print "ok ",$i++,"\n";
  72.  
  73. $ver = 10.000_02;
  74. eval { require $ver; };
  75. print "# $@\nnot " unless $@ =~ /^Perl v10\.0\.20 required/;
  76. print "ok ",$i++,"\n";
  77.  
  78. print "not " unless 5.5.1 gt v5.5;
  79. print "ok ",$i++,"\n";
  80.  
  81. {
  82.     use utf8;
  83.     print "not " unless v5.5.640 eq "\x{5}\x{5}\x{280}";
  84.     print "ok ",$i++,"\n";
  85.  
  86.     print "not " unless v7.15 eq "\x{7}\x{f}";
  87.     print "ok ",$i++,"\n";
  88.  
  89.     print "not "
  90.       unless v1.20.300.4000.50000.600000 eq "\x{1}\x{14}\x{12c}\x{fa0}\x{c350}\x{927c0}";
  91.     print "ok ",$i++,"\n";
  92. }
  93.  
  94. # interaction with pod (see the eof)
  95. write_file('bleah.pm', "print 'ok $i\n'; 1;\n");
  96. require "bleah.pm";
  97. $i++;
  98.  
  99. # run-time failure in require
  100. do_require "0;\n";
  101. print "# $@\nnot " unless $@ =~ /did not return a true/;
  102. print "ok ",$i++,"\n";
  103.  
  104. # compile-time failure in require
  105. do_require "1)\n";
  106. # bison says 'parse error' instead of 'syntax error',
  107. # various yaccs may or may not capitalize 'syntax'.
  108. print "# $@\nnot " unless $@ =~ /(syntax|parse) error/mi;
  109. print "ok ",$i++,"\n";
  110.  
  111. # successful require
  112. do_require "1";
  113. print "# $@\nnot " if $@;
  114. print "ok ",$i++,"\n";
  115.  
  116. # do FILE shouldn't see any outside lexicals
  117. my $x = "ok $i\n";
  118. write_file("bleah.do", <<EOT);
  119. \$x = "not ok $i\\n";
  120. EOT
  121. do "bleah.do";
  122. dofile();
  123. sub dofile { do "bleah.do"; };
  124. print $x;
  125. $i++;
  126.  
  127. END { 1 while unlink 'bleah.pm'; 1 while unlink 'bleah.do'; }
  128.  
  129. # ***interaction with pod (don't put any thing after here)***
  130.  
  131. =pod
  132.