12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #!perl
- #
- # test apparatus for Text::Template module
- # still incomplete.
- use strict;
- use warnings;
- use Test::More;
- unless (eval { require Safe; 1 }) {
- plan skip_all => 'Safe.pm is required for this test';
- }
- else {
- plan tests => 12;
- }
- use_ok 'Text::Template' or exit 1;
- my $c = Safe->new or die;
- # Test handling of packages and importing.
- $c->reval('$P = "safe root"');
- our $P = 'main';
- $Q::P = $Q::P = 'Q';
- # How to effectively test the gensymming?
- my $t = Text::Template->new(
- TYPE => 'STRING',
- SOURCE => 'package is {$P}') or die;
- # (1) Default behavior: Inherit from calling package, `main' in this case.
- my $text = $t->fill_in();
- is $text, 'package is main';
- # (2) When a package is specified, we should use that package instead.
- $text = $t->fill_in(PACKAGE => 'Q');
- is $text, 'package is Q';
- # (3) When no package is specified in safe mode, we should use the
- # default safe root.
- $text = $t->fill_in(SAFE => $c);
- is $text, 'package is safe root';
- # (4) When a package is specified in safe mode, we should use the
- # default safe root, after aliasing to the specified package
- TODO: {
- local $TODO = "test fails when tested with TAP/Devel::Cover" if defined $Devel::Cover::VERSION;
- $text = $t->fill_in(SAFE => $c, PACKAGE => 'Q');
- is $text, 'package is Q';
- }
- # Now let's see if hash vars are installed properly into safe templates
- $t = Text::Template->new(
- TYPE => 'STRING',
- SOURCE => 'hash is {$H}') or die;
- # (5) First in default mode
- $text = $t->fill_in(HASH => { H => 'good5' });
- is $text, 'hash is good5';
- # suppress "once" warnings
- $Q::H = $Q2::H = undef;
- # (6) Now in packages
- $text = $t->fill_in(HASH => { H => 'good6' }, PACKAGE => 'Q');
- is $text, 'hash is good6';
- # (7) Now in the default root of the safe compartment
- TODO: {
- local $TODO = "test fails when tested with TAP/Devel::Cover" if defined $Devel::Cover::VERSION;
- $text = $t->fill_in(HASH => { H => 'good7' }, SAFE => $c);
- is $text, 'hash is good7';
- }
- # (8) Now in the default root after aliasing to a package that
- # got the hash stuffed in
- our $H;
- TODO: {
- local $TODO = "test fails when tested with TAP/Devel::Cover" if defined $Devel::Cover::VERSION;
- $text = $t->fill_in(HASH => { H => 'good8' }, SAFE => $c, PACKAGE => 'Q2');
- is $text, 'hash is good8';
- }
- # 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
- ok !defined $H;
- $H = $H;
- # (11) this value overwrote the one from test 6.
- is $Q::H, 'good7';
- # (12)
- is $Q2::H, 'good8';
|