Koha/xt/tt_valid.t
Frédéric Demians a41100a445 Bug 6458 Template Toolkit files test case
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.

This patch transform also translation specific modules into C4 modules
in order to be able to use them in test case:

  C4::TTPaser
  C4::TmplToken
  C4::TmplTokenType

This patch is a Perl adaptation of a Haskell script from Frère Sébastien
Marie.

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Notes on testing:
- translate install de-DE - worked ok
- translate update de-DE > translate install de-DE - worked ok
- running the test xt/tt_valid.t - worked ok and pointed out lots of problems.
Found no problems.

Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
2011-08-18 21:11:50 +12:00

84 lines
2.2 KiB
Perl
Executable file

#!/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