Template-Alloy
view release on metacpan or search on metacpan
t/20_html_template.t view on Meta::CPAN
# -*- Mode: Perl; -*-
=head1 NAME
03_html_template.t - Test the ability to parse and play html template
=cut
our ($module, $is_ht, $is_hte, $is_ta, $compile_perl);
BEGIN {
$module = 'Template::Alloy';
if (grep {/hte/i} @ARGV) {
$module = 'HTML::Template::Expr';
} elsif (grep {/ht/i} @ARGV) {
$module = 'HTML::Template';
}
$is_hte = $module eq 'HTML::Template::Expr';
$is_ht = $module eq 'HTML::Template';
$is_ta = $module eq 'Template::Alloy';
};
use strict;
use Test::More tests => ($is_ta) ? 250 : ($is_ht) ? 75 : 82;
use constant test_taint => 0 && eval { require Taint::Runtime };
use_ok($module);
Taint::Runtime::taint_start() if test_taint;
### find a place to allow for testing
my $test_dir = $0 .'.test_dir';
END { rmdir $test_dir }
mkdir $test_dir, 0755;
ok(-d $test_dir, "Got a test dir up and running");
sub process_ok { # process the value and say if it was ok
my $str = shift;
my $test = shift;
my $vars = shift || {};
my $conf = local $vars->{'tt_config'} = $vars->{'tt_config'} || [];
push @$conf, (COMPILE_PERL => $compile_perl) if $compile_perl;
my $line = (caller)[2];
delete $vars->{'tt_config'};
Taint::Runtime::taint(\$str) if test_taint;
my $obj;
my $out;
eval {
$obj = shift || $module->new(scalarref => \$str, die_on_bad_params => 0, path => $test_dir, @$conf); # new object each time
$obj->param($vars);
$out = $obj->output;
};
my $err = $@;
$out = '' if ! defined $out;
my $ok = ref($test) ? $out =~ $test : $out eq $test;
if ($ok) {
ok(1, "Line $line \"$str\" => \"$out\"");
return $obj;
} else {
ok(0, "Line $line \"$str\"");
warn "# Was:\n$out\n# Should've been:\n$test\n";
print "$err\n";
if ($obj && $obj->can('dump_parse_tree')) {
local $obj->{'SYNTAX'} = 'hte';
print $obj->dump_parse_tree(\$str);
print $err;
}
exit;
}
}
### create some files to include
my $foo_template = "$test_dir/foo.ht";
END { unlink $foo_template };
open(my $fh, ">$foo_template") || die "Couldn't open $foo_template: $!";
print $fh "Good Day!";
close $fh;
### create some files to include
my $bar_template = "$test_dir/bar.ht";
END { unlink $bar_template };
open($fh, ">$bar_template") || die "Couldn't open $bar_template: $!";
print $fh "(<TMPL_VAR bar>)";
close $fh;
for $compile_perl ((! $is_ta) ? (0) : (0, 1)) {
my $is_compile_perl = "compile perl ($compile_perl)";
###----------------------------------------------------------------###
print "### VAR ############################################# $is_compile_perl\n";
process_ok("Foo" => "Foo");
process_ok("<TMPL_VAR foo>" => "FOO", {foo => "FOO"});
process_ok("<TMPL_VAR foo>" => "FOO", {foo => "FOO"});
process_ok("<TMPL_VAR name=foo>" => "FOO", {foo => "FOO"});
process_ok("<TMPL_VAR NAME=foo>" => "FOO", {foo => "FOO"});
process_ok("<TMPL_VAR NAME=\"foo\">" => "FOO", {foo => "FOO"});
process_ok("<TMPL_VAR NAME='foo'>" => "FOO", {foo => "FOO"});
process_ok("<TMPL_VAR NAME='foo' >" => "FOO", {foo => "FOO"});
( run in 2.606 seconds using v1.01-cache-2.11-cpan-b16cb0d3907 )