From d2657d7cf2808a055c1f4537caff5309d1f58efe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Demians?= Date: Tue, 14 Apr 2015 16:26:50 +0200 Subject: [PATCH] [PASSED QA] Bug 13941 [1/2] Test tag with id/class attributes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Test: - Apply the first patch [1/2] containing a new test checking tags in all templates - Run the test: prove xt/tt_valid.t - You get a list of templates with invalid tags. - Apply the second patch [2/2] fixing all invalid tags. - Re-run the test: It passes. Folowed test plan, works as expected Signed-off-by: Marc VĂ©ron Signed-off-by: Katrin Fischer --- xt/tt_valid.t | 86 ++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 55 insertions(+), 31 deletions(-) diff --git a/xt/tt_valid.t b/xt/tt_valid.t index 507210f..90da343 100755 --- a/xt/tt_valid.t +++ b/xt/tt_valid.t @@ -17,9 +17,8 @@ # 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; @@ -42,35 +41,57 @@ for my $theme ( grep { not /^\.|lib|js/ } readdir($dh) ) { } close $dh; -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 $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->{'[%'} or $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; - }, @themes - ); - @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; my $ttparser = C4::TTParser->new(); @@ -87,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: -- 1.9.1