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

(-)a/Koha/Devel/CI/IncrementalRuns.pm (-2 / +2 lines)
Lines 129-135 sub get_files_to_test { Link Here
129
            @koha_commit_history;
129
            @koha_commit_history;
130
            if ($last_build_commit) {
130
            if ($last_build_commit) {
131
                @files = @{ from_json( read_file("$self->{git_repo_dir}/$self->{test_name}/$last_build_commit") ) };
131
                @files = @{ from_json( read_file("$self->{git_repo_dir}/$self->{test_name}/$last_build_commit") ) };
132
                push @files, $dev_files->ls_perl_files("$last_build_commit HEAD");
132
                push @files, $dev_files->ls_files( $filetype, "$last_build_commit HEAD" );
133
            } else {
133
            } else {
134
134
135
                # In case we run on a branch that does not have ancestor commits in the history
135
                # In case we run on a branch that does not have ancestor commits in the history
Lines 140-146 sub get_files_to_test { Link Here
140
            $no_history = 1;
140
            $no_history = 1;
141
        }
141
        }
142
    }
142
    }
143
    @files = $dev_files->ls_perl_files if !$self->{incremental_run} || $no_history;
143
    @files = $dev_files->ls_files($filetype) if !$self->{incremental_run} || $no_history;
144
144
145
    return @files;
145
    return @files;
146
}
146
}
(-)a/Koha/Devel/Files.pm (+38 lines)
Lines 118-123 sub build_git_exclude { Link Here
118
        : q{};
118
        : q{};
119
}
119
}
120
120
121
=head2 ls_files
122
123
    my @files = $file_manager->ls_files($filetype, $git_range);
124
125
Lists files that have been modified within a specified Git range. If no range is provided, it lists all Perl files, excluding those specified in the exceptions.
126
127
=cut
128
129
sub ls_files {
130
    my ( $self, $filetype, $git_range ) = @_;
131
    my @files;
132
    if ($git_range) {
133
        $git_range =~ s|\.\.| |;
134
        my @modified_files = qx{git diff --name-only $git_range};
135
        chomp @modified_files;
136
        if ( $filetype eq 'pl' ) {
137
            push @files, grep { -e && /\.(pl|PL|pm|t)$/ } @modified_files;
138
            push @files, grep { -e && /^(svc|opac\/svc)/ } @modified_files;
139
        } elsif ( $filetype eq 'js' ) {
140
            push @files, grep { -e && /\.(js|ts|vue)$/ } @modified_files;
141
        } elsif ( $filetype eq 'tt' ) {
142
            push @files, grep { -e && /\.(tt|inc)$/ } @modified_files;
143
        }
144
145
        my @exception_files = $exceptions->{$filetype}->{ $self->{context} };
146
        @files = array_minus( @files, @exception_files );
147
    } else {
148
        if ( $filetype eq 'pl' ) {
149
            @files = $self->ls_perl_files;
150
        } elsif ( $filetype eq 'js' ) {
151
            @files = $self->ls_js_files;
152
        } elsif ( $filetype eq 'tt' ) {
153
            @files = $self->ls_tt_files;
154
        }
155
    }
156
    return @files;
157
}
158
121
=head2 ls_perl_files
159
=head2 ls_perl_files
122
160
123
    my @perl_files = $file_manager->ls_perl_files($git_range);
161
    my @perl_files = $file_manager->ls_perl_files($git_range);
(-)a/xt/author/codespell.t (-6 / +10 lines)
Lines 3-9 use Modern::Perl; Link Here
3
use Test::PerlTidy;
3
use Test::PerlTidy;
4
use Test::More;
4
use Test::More;
5
5
6
use Koha::Devel::Files;
6
use Koha::Devel::CI::IncrementalRuns;
7
7
8
my $codespell_version = qx{codespell --version};
8
my $codespell_version = qx{codespell --version};
9
chomp $codespell_version;
9
chomp $codespell_version;
Lines 11-26 $codespell_version =~ s/-.*$//; Link Here
11
if ( ( $codespell_version =~ s/\.//gr ) < 220 ) {    # if codespell < 2.2.0
11
if ( ( $codespell_version =~ s/\.//gr ) < 220 ) {    # if codespell < 2.2.0
12
    plan skip_all => "codespell version $codespell_version too low, need at least 2.2.0";
12
    plan skip_all => "codespell version $codespell_version too low, need at least 2.2.0";
13
}
13
}
14
my $dev_files = Koha::Devel::Files->new( { context => 'codespell' } );
14
15
my $ci = Koha::Devel::CI::IncrementalRuns->new( { context => 'codespell' } );
15
my @files;
16
my @files;
16
push @files, $dev_files->ls_perl_files;
17
push @files, $ci->get_files_to_test('pl');
17
push @files, $dev_files->ls_tt_files;
18
push @files, $ci->get_files_to_test('tt');
18
push @files, $dev_files->ls_js_files;
19
push @files, $ci->get_files_to_test('js');
19
20
20
plan tests => scalar @files;
21
plan tests => scalar @files;
21
22
23
my %results;
22
for my $file (@files) {
24
for my $file (@files) {
23
    my $output = qx{codespell -d --ignore-words .codespell-ignore $file};
25
    my $output = qx{codespell -d --ignore-words .codespell-ignore $file};
24
    chomp $output;
26
    chomp $output;
25
    is( $output, q{} );
27
    is( $output, q{} ) or $results{$file} = 1;
26
}
28
}
29
30
$ci->report_results( \%results );
(-)a/xt/perltidy.t (-6 / +9 lines)
Lines 2-15 Link Here
2
use Modern::Perl;
2
use Modern::Perl;
3
use Test::PerlTidy;
3
use Test::PerlTidy;
4
use Test::More;
4
use Test::More;
5
use Test::NoWarnings;
5
6
6
use Koha::Devel::Files;
7
use Koha::Devel::CI::IncrementalRuns;
7
8
8
my $dev_files = Koha::Devel::Files->new( { context => 'tidy' } );
9
my $ci    = Koha::Devel::CI::IncrementalRuns->new( { context => 'tidy' } );
9
my @files     = $dev_files->ls_perl_files;
10
my @files = $ci->get_files_to_test('pl');
10
11
11
plan tests => scalar @files;
12
plan tests => scalar @files + 1;
12
13
14
my %results;
13
for my $file (@files) {
15
for my $file (@files) {
14
    ok( Test::PerlTidy::is_file_tidy($file) );
16
    ok( Test::PerlTidy::is_file_tidy($file) ) or $results{$file} = 1;
15
}
17
}
16
- 
18
19
$ci->report_results( \%results );

Return to bug 39877