"Fossies" - the Fresh Open Source Software Archive

Member "openssl-1.1.1b/external/perl/Text-Template-1.46/t/01-basic.t" (26 Feb 2019, 6172 Bytes) of package /linux/misc/openssl-1.1.1b.tar.gz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file.

    1 #!perl
    2 #
    3 # Tests of basic, essential functionality
    4 #
    5 
    6 use Text::Template;
    7 $X::v = $Y::v = 0;		# Suppress `var used only once'
    8 
    9 print "1..31\n";
   10 
   11 $n=1;
   12 
   13 $template_1 = <<EOM;
   14 We will put value of \$v (which is "abc") here -> {\$v}
   15 We will evaluate 1+1 here -> {1 + 1}
   16 EOM
   17 
   18 # (1) Construct temporary template file for testing
   19 # file operations
   20 $TEMPFILE = "tt$$";
   21 open(TMP, "> $TEMPFILE") or print "not ok $n\n" && &abort("Couldn\'t write tempfile $TEMPFILE: $!");
   22 print TMP $template_1;
   23 close TMP;
   24 print "ok $n\n"; $n++;
   25 
   26 # (2) Build template from file
   27 $template = new Text::Template ('type' => 'FILE', 'source' => $TEMPFILE);
   28 if (defined($template)) {
   29   print "ok $n\n";
   30 } else {
   31   print "not ok $n $Text::Template::ERROR\n";
   32 }
   33 $n++;
   34 
   35 # (3) Fill in template from file
   36 $X::v = "abc";	
   37 $resultX = <<EOM;
   38 We will put value of \$v (which is "abc") here -> abc
   39 We will evaluate 1+1 here -> 2
   40 EOM
   41 $Y::v = "ABC";	
   42 $resultY = <<EOM;
   43 We will put value of \$v (which is "abc") here -> ABC
   44 We will evaluate 1+1 here -> 2
   45 EOM
   46 
   47 $text = $template->fill_in('package' => X);
   48 if ($text eq $resultX) {
   49   print "ok $n\n";
   50 } else {
   51   print "not ok $n\n";
   52 }
   53 $n++;
   54 
   55 # (4) Fill in same template again
   56 $text = $template->fill_in('package' => Y);
   57 if ($text eq $resultY) {
   58   print "ok $n\n";
   59 } else {
   60   print "not ok $n\n";
   61 }
   62 $n++;
   63 
   64 
   65 
   66 # (5) Simple test of `fill_this_in'
   67 $text = Text::Template->fill_this_in( $template_1, 'package' => X);
   68 if ($text eq $resultX) {
   69   print "ok $n\n";
   70 } else {
   71   print "not ok $n\n";
   72 }
   73 $n++;
   74 
   75 # (6) test creation of template from filehandle
   76 if (open (TMPL, "< $TEMPFILE")) {
   77   $template = new Text::Template ('type' => 'FILEHANDLE', 
   78 				  'source' => *TMPL);
   79   if (defined($template)) {
   80     print "ok $n\n";
   81   } else {
   82     print "not ok $n $Text::Template::ERROR\n";
   83   }
   84   $n++;
   85 
   86 # (7) test filling in of template from filehandle
   87   $text = $template->fill_in('package' => X);
   88   if ($text eq $resultX) {
   89     print "ok $n\n";
   90   } else {
   91     print "not ok $n\n";
   92   }
   93   $n++;
   94 
   95 # (8) test second fill_in on same template object
   96   $text = $template->fill_in('package' => Y);
   97   if ($text eq $resultY) {
   98     print "ok $n\n";
   99   } else {
  100     print "not ok $n\n";
  101   }
  102   $n++;
  103   close TMPL;
  104 } else {
  105   print "not ok $n\n";  $n++;
  106   print "not ok $n\n";  $n++;
  107   print "not ok $n\n";  $n++;
  108 }
  109 
  110 
  111 # (9) test creation of template from array
  112 $template = new Text::Template 
  113     ('type' => 'ARRAY', 
  114      'source' => [ 
  115 		  'We will put value of $v (which is "abc") here -> {$v}',
  116 		  "\n",
  117 		  'We will evaluate 1+1 here -> {1+1}',
  118 		  "\n",
  119 		  ]);
  120 if (defined($template)) {
  121   print "ok $n\n";
  122 } else {
  123   print "not ok $n $Text::Template::ERROR\n";
  124 }
  125 $n++;
  126 
  127 # (10) test filling in of template from array
  128 $text = $template->fill_in('package' => X);
  129 if ($text eq $resultX) {
  130   print "ok $n\n";
  131 } else {
  132   print "not ok $n\n";
  133 }
  134 $n++;
  135 
  136 # (11) test second fill_in on same array template object
  137 $text = $template->fill_in('package' => Y);
  138 if ($text eq $resultY) {
  139   print "ok $n\n";
  140 } else {
  141   print "not ok $n\n";
  142   print STDERR "$resultX\n---\n$text";
  143   unless (!defined($text)) { print STDERR "ERROR: $Text::Template::ERROR\n"};
  144 }
  145 $n++;
  146 
  147 
  148 
  149 # (12) Make sure \ is working properly
  150 # Test added for version 1.11
  151 my $tmpl = Text::Template->new(TYPE => 'STRING',
  152 			       SOURCE => 'B{"\\}"}C{"\\{"}D',
  153 			       );
  154 # This should fail if the \ are not interpreted properly.
  155 my $text = $tmpl->fill_in();
  156 print +($text eq "B}C{D" ? '' : 'not '), "ok $n\n";
  157 $n++;
  158 
  159 # (13) Make sure \ is working properly
  160 # Test added for version 1.11
  161 $tmpl = Text::Template->new(TYPE => 'STRING',
  162 			    SOURCE => qq{A{"\t"}B},
  163 			   );
  164 # Symptom of old problem:  ALL \ were special in templates, so
  165 # The lexer would return (A, PROGTEXT("t"), B), and the
  166 # result text would be AtB instead of A(tab)B.
  167 $text = $tmpl->fill_in();
  168 
  169 print +($text eq "A\tB" ? '' : 'not '), "ok $n\n";
  170 $n++;
  171 
  172 # (14-27) Make sure \ is working properly
  173 # Test added for version 1.11
  174 # This is a sort of general test.
  175 my @tests = ('{""}' => '',	# (14)
  176 	     '{"}"}' => undef,  # (15)
  177 	     '{"\\}"}' => '}',	# One backslash
  178 	     '{"\\\\}"}' => undef, # Two backslashes
  179 	     '{"\\\\\\}"}' => '}', # Three backslashes
  180 	     '{"\\\\\\\\}"}' => undef, # Four backslashes
  181 	     '{"\\\\\\\\\\}"}' => '\}', # Five backslashes  (20)
  182 	     '{"x20"}' => 'x20',
  183 	     '{"\\x20"}' => ' ',	# One backslash
  184 	     '{"\\\\x20"}' => '\\x20', # Two backslashes
  185 	     '{"\\\\\\x20"}' => '\\ ', # Three backslashes
  186 	     '{"\\\\\\\\x20"}' => '\\\\x20', # Four backslashes  (25)
  187 	     '{"\\\\\\\\\\x20"}' => '\\\\ ', # Five backslashes
  188 	     '{"\\x20\\}"}' => ' }', # (27)
  189 	    );
  190 
  191 my $i;
  192 for ($i=0; $i<@tests; $i+=2) {
  193   my $tmpl = Text::Template->new(TYPE => 'STRING',
  194 				 SOURCE => $tests[$i],
  195 				);
  196   my $text = $tmpl->fill_in;
  197   my $result = $tests[$i+1];
  198   my $ok = (! defined $text && ! defined $result
  199 	    || $text eq $result);
  200   unless ($ok) {
  201     print STDERR "($n) expected .$result., got .$text.\n";
  202   }
  203   print +($ok ? '' : 'not '), "ok $n\n";
  204   $n++;
  205 }
  206 
  207 
  208 # (28-30) I discovered that you can't pass a glob ref as your filehandle.
  209 # MJD 20010827
  210 # (28) test creation of template from filehandle
  211 if (open (TMPL, "< $TEMPFILE")) {
  212   $template = new Text::Template ('type' => 'FILEHANDLE', 
  213 				  'source' => \*TMPL);
  214   if (defined($template)) {
  215     print "ok $n\n";
  216   } else {
  217     print "not ok $n $Text::Template::ERROR\n";
  218   }
  219   $n++;
  220 
  221 # (29) test filling in of template from filehandle
  222   $text = $template->fill_in('package' => X);
  223   if ($text eq $resultX) {
  224     print "ok $n\n";
  225   } else {
  226     print "not ok $n\n";
  227   }
  228   $n++;
  229 
  230 # (30) test second fill_in on same template object
  231   $text = $template->fill_in('package' => Y);
  232   if ($text eq $resultY) {
  233     print "ok $n\n";
  234   } else {
  235     print "not ok $n\n";
  236   }
  237   $n++;
  238   close TMPL;
  239 } else {
  240   print "not ok $n\n";  $n++;
  241   print "not ok $n\n";  $n++;
  242   print "not ok $n\n";  $n++;
  243 }
  244 
  245 # (31) Test _scrubpkg for leakiness
  246 $Text::Template::GEN0::test = 1;
  247 Text::Template::_scrubpkg('Text::Template::GEN0');
  248 if ($Text::Template::GEN0::test) {
  249   print "not ok $n\n";
  250 } else {
  251   print "ok $n\n";
  252 }
  253 $n++;
  254 
  255 
  256 END {unlink $TEMPFILE;}
  257 
  258 exit;
  259 
  260 
  261 
  262 
  263 sub abort {
  264   unlink $TEMPFILE;
  265   die $_[0];
  266 }