View | Details | Raw Unified | Return to bug 13941
Collapse All | Expand All

(-)a/xt/tt_valid.t (-31 / +50 lines)
Lines 17-25 Link Here
17
# You should have received a copy of the GNU General Public License
17
# You should have received a copy of the GNU General Public License
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
19
19
20
use warnings;
20
use Modern::Perl;
21
use strict;
21
use Test::More tests => 3;
22
use Test::More tests => 2;
23
use File::Find;
22
use File::Find;
24
use Cwd;
23
use Cwd;
25
use C4::TTParser;
24
use C4::TTParser;
Lines 42-76 for my $theme ( grep { not /^\.|lib|js/ } readdir($dh) ) { Link Here
42
}
41
}
43
close $dh;
42
close $dh;
44
43
45
my @files_with_directive_in_tag = do {
44
my $checkers = [
46
    my @files;
45
    {
47
    find( sub {
46
        description => 'TT syntax: not using TT directive within HTML tag',
48
        my $dir = getcwd();
47
        check => sub {
49
        return if $dir =~ /blib/;
48
            my ($self, $name, $token) = @_;
50
        return unless /\.(tt|inc)$/;
51
        my $name = $_;
52
        my $parser = C4::TTParser->new;
53
        $parser->build_tokens( $name );  
54
        my @lines;
55
        while ( my $token = $parser->next_token ) {
56
            my $attr = $token->{_attr};
49
            my $attr = $token->{_attr};
57
            next unless $attr;
50
            push @{$self->{errors}->{$name}}, $token->{_lc} if $attr->{'[%'} or $attr->{'[%-'};
58
            push @lines, $token->{_lc} if $attr->{'[%'} or $attr->{'[%-'};
51
        },
52
        errors => {},
53
    },
54
    {
55
        description => '<body> tag with id and class attributes',
56
        check => sub {
57
            my ($self, $name, $token) = @_;
58
            return if $name =~ /bodytag\.inc/;
59
            $_ = $token->{_string};
60
            push @{$self->{errors}->{$name}}, $token->{_lc}
61
              if /^<body/ && ! /id=".+"/ && ! /class=".+"/;
62
63
        },
64
        errors => {},
65
    },
66
];
67
find( sub {
68
    my $dir = getcwd();
69
    return if $dir =~ /blib/;
70
    return unless /\.(tt|inc)$/;
71
    ($dir) = $dir =~ /koha-tmpl\/(.*)$/;
72
    my $name = $_;
73
    my $parser = C4::TTParser->new;
74
    $parser->build_tokens( $name );
75
    while ( my $token = $parser->next_token ) {
76
        my $attr = $token->{_attr};
77
        next unless $attr;
78
        for my $checker (@$checkers) {
79
            $checker->{check}->($_, "$dir/$name", $token);
59
        }
80
        }
60
        ($dir) = $dir =~ /koha-tmpl\/(.*)$/;
81
    }
61
        push @files, { name => "$dir/$name", lines => \@lines } if @lines;
82
  }, @themes
62
      }, @themes
83
);
63
    );
84
64
    @files;
85
for my $check (@$checkers) {
65
};
86
  my @files = sort keys %{$check->{errors}};
66
87
  ok( !@files, $check->{description} )
67
88
      or diag(
68
ok( !@files_with_directive_in_tag, "TT syntax: not using TT directive within HTML tag" )
89
            "Files list: \n",
69
    or diag(
90
            join( "\n", map { "$_: " . join(', ', @{$check->{errors}->{$_}})
70
          "Files list: \n",
91
                } @files )
71
          join( "\n", map { $_->{name} . ': ' . join(', ', @{$_->{lines}})
92
         );
72
              } @files_with_directive_in_tag )
93
}
73
       );
74
94
75
my $testtoken = 0;
95
my $testtoken = 0;
76
my $ttparser = C4::TTParser->new();
96
my $ttparser = C4::TTParser->new();
77
- 

Return to bug 13941