Bug 7143: Fixed link to Athens County Koha Opac
[koha.git] / xt / author / valid-templates.t
1 #!/usr/bin/perl
2
3 # Copyright 2011 Catalyst IT
4
5 # This file is part of Koha.
6 #
7 # Koha is free software; you can redistribute it and/or modify it under the
8 # terms of the GNU General Public License as published by the Free Software
9 # Foundation; either version 2 of the License, or (at your option) any later
10 # version.
11 #
12 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License along
17 # with Koha; if not, write to the Free Software Foundation, Inc.,
18 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19
20 use strict;
21 use warnings;
22
23 =head1 NAME
24
25 valid-templates.t
26
27 =head1 DESCRIPTION
28
29 This test checks all staff and OPAC templates and includes for syntax errors 
30
31 =cut
32
33
34 use File::Find;
35 use File::Spec;
36 use Template;
37 use Test::More;
38 # use FindBin;
39 # use IPC::Open3;
40
41 print "Testing intranet prog templates\n";
42 run_template_test(
43     'koha-tmpl/intranet-tmpl/prog/en/modules',
44     'koha-tmpl/intranet-tmpl/prog/en/includes'
45 );
46
47 print "Testing opac bootstrap templates\n";
48 run_template_test(
49     'koha-tmpl/opac-tmpl/bootstrap/en/modules',
50     'koha-tmpl/opac-tmpl/bootstrap/en/includes',
51     # templates to exclude from testing because
52     # they cannot stand alone
53     'doc-head-close.inc',
54     'opac-bottom.inc',
55 );
56
57 print "Testing opac prog templates\n";
58 run_template_test(
59     'koha-tmpl/opac-tmpl/prog/en/modules',
60     'koha-tmpl/opac-tmpl/prog/en/includes'
61 );
62
63 # TODO add test of opac ccsr templates
64
65 done_testing();
66
67 sub run_template_test {
68     my $template_path = shift;
69     my $include_path  = shift;
70     my @exclusions = @_;
71     my $template_dir  = File::Spec->rel2abs($template_path);
72     my $include_dir   = File::Spec->rel2abs($include_path);
73     my $template_test = create_template_test($include_dir, @exclusions);
74     find( { wanted => $template_test, no_chdir => 1 },
75         $template_dir, $include_dir );
76 }
77
78 sub create_template_test {
79     my $includes = shift;
80     my @exclusions = @_;
81     return sub {
82         my $tt = Template->new(
83             {
84                 ABSOLUTE     => 1,
85                 INCLUDE_PATH => $includes,
86                 PLUGIN_BASE  => 'Koha::Template::Plugin',
87             }
88         );
89         foreach my $exclusion (@exclusions) {
90             if ($_ =~ /${exclusion}$/) {
91                 diag("excluding template $_ because it cannot stand on its own");
92                 return;
93             }
94         }
95         my $vars;
96         my $output;
97         if ( !ok( $tt->process( $_, $vars, \$output ), $_ ) ) {
98             diag( $tt->error );
99         }
100     }
101 }
102
103 =head1 AUTHOR
104
105 Koha Developement Team <http://koha-community.org>
106
107 Chris Cormack <chrisc@catalyst.net.nz>
108
109 =cut