diff options
Diffstat (limited to 't/004template.t')
-rw-r--r-- | t/004template.t | 180 |
1 files changed, 103 insertions, 77 deletions
diff --git a/t/004template.t b/t/004template.t index 0a6f0e0aa..938ee8b18 100644 --- a/t/004template.t +++ b/t/004template.t @@ -22,20 +22,22 @@ use CGI qw(-no_debug); use File::Spec; use Template; -use Test::More tests => ( scalar(@referenced_files) + 2 * $num_actual_files ); +use Test::More tests => (scalar(@referenced_files) + 2 * $num_actual_files); # Capture the TESTOUT from Test::More or Test::Builder for printing errors. # This will handle verbosity for us automatically. my $fh; { - no warnings qw(unopened); # Don't complain about non-existent filehandles - if (-e \*Test::More::TESTOUT) { - $fh = \*Test::More::TESTOUT; - } elsif (-e \*Test::Builder::TESTOUT) { - $fh = \*Test::Builder::TESTOUT; - } else { - $fh = \*STDOUT; - } + no warnings qw(unopened); # Don't complain about non-existent filehandles + if (-e \*Test::More::TESTOUT) { + $fh = \*Test::More::TESTOUT; + } + elsif (-e \*Test::Builder::TESTOUT) { + $fh = \*Test::Builder::TESTOUT; + } + else { + $fh = \*STDOUT; + } } # Check to make sure all templates that are referenced in Bugzilla @@ -44,82 +46,106 @@ my $fh; # fall back to English if necessary. foreach my $file (@referenced_files) { - my $found = 0; - foreach my $path (@english_default_include_paths) { - my $pathfile = File::Spec->catfile($path, $file); - if (-e $pathfile) { - $found = 1; - last; - } + my $found = 0; + foreach my $path (@english_default_include_paths) { + my $pathfile = File::Spec->catfile($path, $file); + if (-e $pathfile) { + $found = 1; + last; } + } - ok($found, "$file found"); + ok($found, "$file found"); } foreach my $include_path (@include_paths) { - # Processes all the templates to make sure they have good syntax - my $provider = Template::Provider->new( - { - INCLUDE_PATH => $include_path , - # Need to define filters used in the codebase, they don't - # actually have to function in this test, just be defined. - # See Template.pm for the actual codebase definitions. - - # Initialize templates (f.e. by loading plugins like Hook). - PRE_PROCESS => "global/variables.none.tmpl", - - FILTERS => - { - html_linebreak => sub { return $_; }, - js => sub { return $_ } , - base64 => sub { return $_ } , - inactive => [ sub { return sub { return $_; } }, 1] , - closed => [ sub { return sub { return $_; } }, 1] , - obsolete => [ sub { return sub { return $_; } }, 1] , - url_quote => sub { return $_ } , - css_class_quote => sub { return $_ } , - xml => sub { return $_ } , - quoteUrls => sub { return $_ } , - bug_link => [ sub { return sub { return $_; } }, 1] , - csv => sub { return $_ } , - unitconvert => sub { return $_ }, - time => sub { return $_ } , - wrap_comment => sub { return $_ }, - none => sub { return $_ } , - ics => [ sub { return sub { return $_; } }, 1] , + + # Processes all the templates to make sure they have good syntax + my $provider = Template::Provider->new({ + INCLUDE_PATH => $include_path, + + # Need to define filters used in the codebase, they don't + # actually have to function in this test, just be defined. + # See Template.pm for the actual codebase definitions. + + # Initialize templates (f.e. by loading plugins like Hook). + PRE_PROCESS => "global/variables.none.tmpl", + + FILTERS => { + html_linebreak => sub { return $_; }, + js => sub { return $_ }, + base64 => sub { return $_ }, + inactive => [ + sub { + return sub { return $_; } + }, + 1 + ], + closed => [ + sub { + return sub { return $_; } + }, + 1 + ], + obsolete => [ + sub { + return sub { return $_; } + }, + 1 + ], + url_quote => sub { return $_ }, + css_class_quote => sub { return $_ }, + xml => sub { return $_ }, + quoteUrls => sub { return $_ }, + bug_link => [ + sub { + return sub { return $_; } + }, + 1 + ], + csv => sub { return $_ }, + unitconvert => sub { return $_ }, + time => sub { return $_ }, + wrap_comment => sub { return $_ }, + none => sub { return $_ }, + ics => [ + sub { + return sub { return $_; } }, + 1 + ], + }, + }); + + foreach my $file (@{$actual_files{$include_path}}) { + my $path = File::Spec->catfile($include_path, $file); + + # These are actual files, so there's no need to check for existence. + + my ($data, $err) = $provider->fetch($file); + + if (!$err) { + ok(1, "$path syntax ok"); + } + else { + ok(0, "$path has bad syntax --ERROR"); + print $fh $data . "\n"; + } + + # Make sure no forbidden constructs are present. + local $/; + open(FILE, '<', $path) or die "Can't open $file: $!\n"; + $data = <FILE>; + close(FILE); + + # Forbid single quotes to delimit URLs, see bug 926085. + if ($data =~ /href=\\?'/) { + ok(0, "$path contains blacklisted constructs: href='...'"); } - ); - - foreach my $file (@{$actual_files{$include_path}}) { - my $path = File::Spec->catfile($include_path, $file); - - # These are actual files, so there's no need to check for existence. - - my ($data, $err) = $provider->fetch($file); - - if (!$err) { - ok(1, "$path syntax ok"); - } - else { - ok(0, "$path has bad syntax --ERROR"); - print $fh $data . "\n"; - } - - # Make sure no forbidden constructs are present. - local $/; - open(FILE, '<', $path) or die "Can't open $file: $!\n"; - $data = <FILE>; - close (FILE); - - # Forbid single quotes to delimit URLs, see bug 926085. - if ($data =~ /href=\\?'/) { - ok(0, "$path contains blacklisted constructs: href='...'"); - } - else { - ok(1, "$path contains no blacklisted constructs"); - } + else { + ok(1, "$path contains no blacklisted constructs"); } + } } exit 0; |