| #!perl |
| # |
| # test apparatus for Text::Template module |
| # still incomplete. |
| |
| use Text::Template; |
| |
| BEGIN { |
| eval "use Safe"; |
| if ($@) { |
| print "1..0\n"; |
| exit 0; |
| } |
| } |
| |
| die "This is the test program for Text::Template version 1.46. |
| You are using version $Text::Template::VERSION instead. |
| That does not make sense.\n |
| Aborting" |
| unless $Text::Template::VERSION == 1.46; |
| |
| print "1..12\n"; |
| $n = 1; |
| |
| $c = new Safe or die; |
| |
| # Test handling of packages and importing. |
| $c->reval('$P = "safe root"'); |
| $P = $P = 'main'; |
| $Q::P = $Q::P = 'Q'; |
| |
| # How to effectively test the gensymming? |
| |
| $t = new Text::Template TYPE => 'STRING', SOURCE => 'package is {$P}' |
| or die; |
| |
| # (1) Default behavior: Inherit from calling package, `main' in this case. |
| $text = $t->fill_in(); |
| print +($text eq 'package is main' ? '' : 'not '), "ok $n\n"; |
| $n++; |
| |
| # (2) When a package is specified, we should use that package instead. |
| $text = $t->fill_in(PACKAGE => 'Q'); |
| print +($text eq 'package is Q' ? '' : 'not '), "ok $n\n"; |
| $n++; |
| |
| # (3) When no package is specified in safe mode, we should use the |
| # default safe root. |
| $text = $t->fill_in(SAFE => $c); |
| print +($text eq 'package is safe root' ? '' : 'not '), "ok $n\n"; |
| $n++; |
| |
| # (4) When a package is specified in safe mode, we should use the |
| # default safe root, after aliasing to the specified package |
| $text = $t->fill_in(SAFE => $c, PACKAGE => Q); |
| print +($text eq 'package is Q' ? '' : 'not '), "ok $n\n"; |
| $n++; |
| |
| # Now let's see if hash vars are installed properly into safe templates |
| $t = new Text::Template TYPE => 'STRING', SOURCE => 'hash is {$H}' |
| or die; |
| |
| # (5) First in default mode |
| $text = $t->fill_in(HASH => {H => 'good5'} ); |
| print +($text eq 'hash is good5' ? '' : 'not '), "ok $n\n"; |
| $n++; |
| |
| # (6) Now in packages |
| $text = $t->fill_in(HASH => {H => 'good6'}, PACKAGE => 'Q' ); |
| print +($text eq 'hash is good6' ? '' : 'not '), "ok $n\n"; |
| $n++; |
| |
| # (7) Now in the default root of the safe compartment |
| $text = $t->fill_in(HASH => {H => 'good7'}, SAFE => $c ); |
| print +($text eq 'hash is good7' ? '' : 'not '), "ok $n\n"; |
| $n++; |
| |
| # (8) Now in the default root after aliasing to a package that |
| # got the hash stuffed in |
| $text = $t->fill_in(HASH => {H => 'good8'}, SAFE => $c, PACKAGE => 'Q2' ); |
| print +($text eq 'hash is good8' ? '' : 'not '), "ok $n\n"; |
| $n++; |
| |
| # Now let's make sure that none of the packages leaked on each other. |
| # (9) This var should NOT have been installed into the main package |
| print +(defined $H ? 'not ' : ''), "ok $n\n"; |
| $H=$H; |
| $n++; |
| |
| # (10) good6 was overwritten in test 7, so there's nothing to test for here. |
| print "ok $n\n"; |
| $n++; |
| |
| # (11) this value overwrote the one from test 6. |
| print +($Q::H eq 'good7' ? '' : 'not '), "ok $n\n"; |
| $Q::H = $Q::H; |
| $n++; |
| |
| # (12) |
| print +($Q2::H eq 'good8' ? '' : 'not '), "ok $n\n"; |
| $Q2::H = $Q2::H; |
| $n++; |
| |
| |
| |