Bug 6458 Template Toolkit files test case
[koha.git] / xt / tt_valid.t
diff --git a/xt/tt_valid.t b/xt/tt_valid.t
new file mode 100755 (executable)
index 0000000..ae2e2e5
--- /dev/null
@@ -0,0 +1,84 @@
+#!/usr/bin/perl
+
+# Copyright (C) 2011 Tamil s.a.r.l.
+#
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with Koha; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+use warnings;
+use strict;
+use Test::More tests => 1;
+use File::Find;
+use Cwd;
+use C4::TTParser;
+
+
+my @files_with_directive_in_tag = do {
+    my @files;
+    find( sub {
+        my $dir = getcwd();
+        return if $dir =~ /blib/;
+        return unless /\.(tt|inc)$/;
+        my $name = $_;
+        my $parser = C4::TTParser->new;
+        $parser->build_tokens( $name );  
+        my @lines;
+        while ( my $token = $parser->next_token ) {
+            my $attr = $token->{_attr};
+            next unless $attr;
+            push @lines, $token->{_lc} if $attr->{'[%'};
+        }
+        ($dir) = $dir =~ /koha-tmpl\/(.*)$/;
+        push @files, { name => "$dir/$name", lines => \@lines } if @lines;
+      }, ( "./koha-tmpl/opac-tmpl/prog/en",
+           "./koha-tmpl/intranet-tmpl/prog/en" )
+    );
+    @files;
+};
+
+
+ok( !@files_with_directive_in_tag, "TT syntax: not using TT directive within HTML tag" )
+    or diag(
+          "Files list: \n",
+          join( "\n", map { $_->{name} . ': ' . join(', ', @{$_->{lines}})
+              } @files_with_directive_in_tag )
+       );
+
+
+
+=head1 NAME
+
+tt_valid.t
+
+=head1 DESCRIPTION
+
+This test validate Template Toolkit (TT) Koha files.
+
+For the time being an unique validation is done: Test if TT files contain TT
+directive within HTML tag. For example:
+
+  <li[% IF
+
+This kind of constuction MUST be avoided because it break Koha translation
+process.
+
+=head1 USAGE
+
+From Koha root directory:
+
+prove -v xt/tt_valid.t
+
+=cut
+