Blame external/perl/Text-Template-1.46/t/05-safe2.t

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