@@ -, +, @@
- Apply the first patch [1/2] containg 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.
---
xt/tt_valid.t | 80 +++++++++++++++++++++++++++++++++++++----------------------
1 file changed, 50 insertions(+), 30 deletions(-)
--- a/xt/tt_valid.t
+++ a/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,56 @@ 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/;
+ $_ = $token->{_string};
+ push @{$self->{errors}->{$name}}, $token->{_lc}
+ if /^ {},
+ },
+];
+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}->($_, "$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();
--