8ff2af5483
Because we're using Text::Template and we know it's a non core Perl module, we choose to bundle it into our source, for convenience. external/perl/Downloaded.txt document what modules we choose to bundle this way and exactly where we downloaded it from. With this changes comes the transfer module for with_fallback. Reviewed-by: Rich Salz <rsalz@openssl.org>
111 lines
3.1 KiB
Perl
111 lines
3.1 KiB
Perl
#!perl
|
|
#
|
|
# test apparatus for Text::Template module
|
|
# still incomplete.
|
|
|
|
use Text::Template;
|
|
|
|
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;
|
|
|
|
$template = 'We will put value of $v (which is "good") here -> {$v}';
|
|
|
|
$v = 'oops (main)';
|
|
$Q::v = 'oops (Q)';
|
|
|
|
$vars = { 'v' => \'good' };
|
|
|
|
# (1) Build template from string
|
|
$template = new Text::Template ('type' => 'STRING', 'source' => $template);
|
|
print +($template ? '' : 'not '), "ok $n\n";
|
|
$n++;
|
|
|
|
# (2) Fill in template in anonymous package
|
|
$result2 = 'We will put value of $v (which is "good") here -> good';
|
|
$text = $template->fill_in(HASH => $vars);
|
|
print +($text eq $result2 ? '' : 'not '), "ok $n\n";
|
|
$n++;
|
|
|
|
# (3) Did we clobber the main variable?
|
|
print +($v eq 'oops (main)' ? '' : 'not '), "ok $n\n";
|
|
$n++;
|
|
|
|
# (4) Fill in same template again
|
|
$result4 = 'We will put value of $v (which is "good") here -> good';
|
|
$text = $template->fill_in(HASH => $vars);
|
|
print +($text eq $result4 ? '' : 'not '), "ok $n\n";
|
|
$n++;
|
|
|
|
# (5) Now with a package
|
|
$result5 = 'We will put value of $v (which is "good") here -> good';
|
|
$text = $template->fill_in(HASH => $vars, PACKAGE => 'Q');
|
|
print +($text eq $result5 ? '' : 'not '), "ok $n\n";
|
|
$n++;
|
|
|
|
# (6) We expect to have clobbered the Q variable.
|
|
print +($Q::v eq 'good' ? '' : 'not '), "ok $n\n";
|
|
$n++;
|
|
|
|
# (7) Now let's try it without a package
|
|
$result7 = 'We will put value of $v (which is "good") here -> good';
|
|
$text = $template->fill_in(HASH => $vars);
|
|
print +($text eq $result7 ? '' : 'not '), "ok $n\n";
|
|
$n++;
|
|
|
|
# (8-11) Now what does it do when we pass a hash with undefined values?
|
|
# Roy says it does something bad. (Added for 1.20.)
|
|
my $WARNINGS = 0;
|
|
{
|
|
local $SIG{__WARN__} = sub {$WARNINGS++};
|
|
local $^W = 1; # Make sure this is on for this test
|
|
$template8 = 'We will put value of $v (which is "good") here -> {defined $v ? "bad" : "good"}';
|
|
$result8 = 'We will put value of $v (which is "good") here -> good';
|
|
my $template =
|
|
new Text::Template ('type' => 'STRING', 'source' => $template8);
|
|
my $text = $template->fill_in(HASH => {'v' => undef});
|
|
# (8) Did we generate a warning?
|
|
print +($WARNINGS == 0 ? '' : 'not '), "ok $n\n";
|
|
$n++;
|
|
|
|
# (9) Was the output correct?
|
|
print +($text eq $result8 ? '' : 'not '), "ok $n\n";
|
|
$n++;
|
|
|
|
# (10-11) Let's try that again, with a twist this time
|
|
$WARNINGS = 0;
|
|
$text = $template->fill_in(HASH => [{'v' => 17}, {'v' => undef}]);
|
|
# (10) Did we generate a warning?
|
|
print +($WARNINGS == 0 ? '' : 'not '), "ok $n\n";
|
|
$n++;
|
|
|
|
# (11) Was the output correct?
|
|
if ($] < 5.005) {
|
|
print "ok $n # skipped -- not supported before 5.005\n";
|
|
} else {
|
|
print +($text eq $result8 ? '' : 'not '), "ok $n\n";
|
|
}
|
|
$n++;
|
|
}
|
|
|
|
|
|
# (12) Now we'll test the multiple-hash option (Added for 1.20.)
|
|
$text = Text::Template::fill_in_string(q{$v: {$v}. @v: [{"@v"}].},
|
|
HASH => [{'v' => 17},
|
|
{'v' => ['a', 'b', 'c']},
|
|
{'v' => \23},
|
|
]);
|
|
$result = q{$v: 23. @v: [a b c].};
|
|
print +($text eq $result ? '' : 'not '), "ok $n\n";
|
|
$n++;
|
|
|
|
|
|
exit;
|
|
|