From c2a5e0fd45fb0f9810e1a328ccb598929428f2cd Mon Sep 17 00:00:00 2001 From: Chris Cormack Date: Fri, 29 Apr 2011 11:33:19 +1200 Subject: [PATCH] Rewriting the valid templates test to test template toolkit --- xt/author/valid-templates.t | 62 ++++++++++++------------------------- 1 file changed, 19 insertions(+), 43 deletions(-) diff --git a/xt/author/valid-templates.t b/xt/author/valid-templates.t index df7c515918..a4fa71efd0 100644 --- a/xt/author/valid-templates.t +++ b/xt/author/valid-templates.t @@ -1,6 +1,6 @@ #!/usr/bin/perl -# Copyright (C) 2009 LibLime +# Copyright 2011 Catalyst IT # # This file is part of Koha. # @@ -27,67 +27,43 @@ valid-templates.t =head1 DESCRIPTION This test checks all staff and OPAC templates and includes for syntax errors -by running a helper script that loads each template into a HTML::Template::Pro -object and calls the output() method, which forces the template to be parsed. -HTML::Template::Pro currently reports any syntax errors to STDERR. - -This test currently ignores error messages of the form - -EXPR:at pos n: non-initialized variable foo - -However, note that TMPL_IF EXPR is currently discouraged for use in Koha -templates. =cut -use Test::More qw/no_plan/; + use File::Find; use File::Spec; -use FindBin; -use IPC::Open3; +use Template; +use Test::More; +# use FindBin; +# use IPC::Open3; foreach my $type qw(intranet opac) { my $template_dir = File::Spec->rel2abs("koha-tmpl/$type-tmpl/prog/en/modules"); my $include_dir = File::Spec->rel2abs("koha-tmpl/$type-tmpl/prog/en/includes"); - - my $template_test = gen_template_test($include_dir); + my $template_test = create_template_test($include_dir); find({ wanted => $template_test, no_chdir => 1 }, $template_dir, $include_dir); } -sub gen_template_test { - my $include_dir = shift; +done_testing(); + +sub create_template_test { + my $includes = shift; return sub { - return unless -f $File::Find::name; - - # We're starting a seprate process to test the template - # because some of the error messages we're interested in - # are written directly to STDERR in HTML::Template::Pro's - # XS code. I haven't found any other way to capture - # those messages. --gmc - local *CHILD_IN; - local *CHILD_OUT; - my $pid = open3(\*CHILD_IN, \*CHILD_OUT, \*CHILD_ERR, - "$FindBin::Bin/test_template.pl", $File::Find::name, $include_dir); - my @errors = (); - while () { - #FIXME: This is here just to ensure that STDOUT is read which avoids a deadlock in some instances, but probably not all - #FIXME: The real solution probably lies within the information found here: http://www.perlmonks.org/?node_id=150748 - } - while () { - push @errors, $_; - } - waitpid($pid, 0); - @errors = grep { ! /^EXPR:.*non-initialized variable/ } @errors; # ignoring EXPR errors for now - my $rel_filename = File::Spec->abs2rel($File::Find::name); - ok(@errors == 0, "no errors in $rel_filename") or diag(join("", @errors) ); + my $tt = Template->new({ABSOLUTE => 1, + INCLUDE_PATH => $includes }); + my $vars; + my $output; + if ( ! ok($tt->process($_,$vars,\$output), $_) ){ + diag($tt->error); + } } - } =head1 AUTHOR Koha Developement Team -Galen Charlton +Chris Cormack =cut -- 2.20.1