X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=xt%2Ftt_valid.t;h=7285019e0abce60ae522134571ff980ee8ac1ca4;hb=17575dfccb2688995ae1e4460a7e0f2fa8aa5fe6;hp=97725ee37046f6e6afccef8921327862f9e491ab;hpb=8c687edb664387b04edd30ee9a472353aabb3d6b;p=koha.git diff --git a/xt/tt_valid.t b/xt/tt_valid.t index 97725ee370..7285019e0a 100755 --- a/xt/tt_valid.t +++ b/xt/tt_valid.t @@ -1,63 +1,101 @@ #!/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. +# Copyright (C) 2011 Tamil s.a.r.l. +# +# 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 3 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. +# 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. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . -use warnings; -use strict; -use Test::More tests => 2; +use Modern::Perl; +use Test::More tests => 3; 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 @themes; + +# OPAC themes +my $opac_dir = 'koha-tmpl/opac-tmpl'; +opendir ( my $dh, $opac_dir ) or die "can't opendir $opac_dir: $!"; +for my $theme ( grep { not /^\.|lib|js|xslt/ } readdir($dh) ) { + push @themes, "$opac_dir/$theme/en"; +} +close $dh; + +# STAFF themes +my $staff_dir = 'koha-tmpl/intranet-tmpl'; +opendir ( $dh, $staff_dir ) or die "can't opendir $staff_dir: $!"; +for my $theme ( grep { not /^\.|lib|js/ } readdir($dh) ) { + push @themes, "$staff_dir/$theme/en"; +} +close $dh; + +my $checkers = [ + { + description => 'TT syntax: not using TT directive within HTML tag', + check => sub { + my ($self, $name, $token) = @_; my $attr = $token->{_attr}; next unless $attr; - push @lines, $token->{_lc} if $attr->{'[%'}; + push @{$self->{errors}->{$name}}, $token->{_lc} if $attr->{'[%'} or $attr->{'[%-'}; + }, + errors => {}, + }, + { + description => ' tag with id and class attributes', + check => sub { + my ($self, $name, $token) = @_; + return if $name =~ /bodytag\.inc/; + my $tag = $token->{_string}; + push @{$self->{errors}->{$name}}, $token->{_lc} + if $tag =~ /^ {}, + }, +]; +find( sub { + my $dir = getcwd(); + return if $dir =~ /blib/; + return unless /\.(tt|inc)$/; + ($dir) = $dir =~ /koha-tmpl\/(.*)$/; + my $name = $_; + my $parser = C4::TTParser->new; + $parser->build_tokens( $name ); + while ( my $token = $parser->next_token ) { + my $attr = $token->{_attr}; + next unless $attr; + for my $checker (@$checkers) { + $checker->{check}->($checker, "$dir/$name", $token); } - ($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 ) - ); + } + }, @themes +); + +for my $check (@$checkers) { + my @files = sort keys %{$check->{errors}}; + ok( !@files, $check->{description} ) + or diag( + "Files list: \n", + join( "\n", map { "$_: " . join(', ', @{$check->{errors}->{$_}}) + } @files ) + ); +} my $testtoken = 0; -C4::TTParser::unshift_token($testtoken); +my $ttparser = C4::TTParser->new(); +$ttparser->unshift_token($testtoken); my $testtokenagain = C4::TTParser::next_token(); is( $testtoken, $testtokenagain, "Token received same as original put on stack"); @@ -70,14 +108,17 @@ tt_valid.t 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: +For the time being, two validations are done: + +[1] Test if TT files contain TT directive within HTML tag. For example: tags have both attibutes 'id' and 'class' + =head1 USAGE From Koha root directory: