3 # This file is part of Koha.
5 # Copyright 2011 Catalyst IT
7 # Koha is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
12 # Koha is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with Koha; if not, see <http://www.gnu.org/licenses>.
22 use threads
; # used for parallel
23 use Parallel
::ForkManager
;
32 This test checks all staff and OPAC templates and includes for syntax errors
45 my $opac_dir = 'koha-tmpl/opac-tmpl';
46 opendir ( my $dh, $opac_dir ) or die "can't opendir $opac_dir: $!";
47 for my $theme ( grep { not /^\.|lib|js|xslt/ } readdir($dh) ) {
51 modules
=> "$opac_dir/$theme/en/modules",
52 includes
=> "$opac_dir/$theme/en/includes",
58 my $staff_dir = 'koha-tmpl/intranet-tmpl';
59 opendir ( $dh, $staff_dir ) or die "can't opendir $staff_dir: $!";
60 for my $theme ( grep { not /^\.|lib|js/ } readdir($dh) ) {
64 modules
=> "$staff_dir/$theme/en/modules",
65 includes
=> "$staff_dir/$theme/en/includes",
71 if ( $ENV{KOHA_PROVE_CPUS
} ) {
72 $ncpu = $ENV{KOHA_PROVE_CPUS
} ; # set number of cpus to use
74 $ncpu = Sys
::CPU
::cpu_count
();
77 my $pm = Parallel
::ForkManager
->new($ncpu);
80 foreach my $theme ( @themes ) {
81 $pm->start and next; # do the fork
82 print "Testing $theme->{'type'} $theme->{'theme'} templates\n";
83 if ( $theme->{'theme'} eq 'bootstrap' ) {
87 # templates to exclude from testing because
88 # they cannot stand alone
102 $pm->wait_all_children;
106 sub run_template_test
{
107 my $template_path = shift;
108 my $include_path = shift;
110 my $template_dir = File
::Spec
->rel2abs($template_path);
111 my $include_dir = File
::Spec
->rel2abs($include_path);
112 my $template_test = create_template_test
($include_dir, @exclusions);
113 find
( { wanted
=> $template_test, no_chdir
=> 1 },
114 $template_dir, $include_dir );
117 sub create_template_test
{
118 my $includes = shift;
121 my $interface = $includes =~ s
|^.*/([^/]*-tmpl
).*$|$1|r
;
122 my $theme = ($interface =~ /opac/) ?
'bootstrap' : 'prog';
125 my $tt = Template
->new(
128 INCLUDE_PATH
=> $includes,
129 PLUGIN_BASE
=> 'Koha::Template::Plugin',
132 foreach my $exclusion (@exclusions) {
133 if ($_ =~ /${exclusion}$/) {
134 diag
("excluding template $_ because it cannot stand on its own");
138 my $vars = { interface
=> $interface, theme
=> $theme };
140 if ( ! -d
$_ ) { # skip dirs
141 if ( !ok
( $tt->process( $_, $vars, \
$output ), $_ ) ) {
150 Koha Development Team <http://koha-community.org>
152 Chris Cormack <chrisc@catalyst.net.nz>