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 4-10 use Test::PerlTidy; Link Here
4
use Test::More;
4
use Test::More;
5
use Test::NoWarnings;
5
use Test::NoWarnings;
6
6
7
use Koha::Devel::Files;
7
use Koha::Devel::CI::IncrementalRuns;
8
8
9
my $codespell_version = qx{codespell --version};
9
my $codespell_version = qx{codespell --version};
10
chomp $codespell_version;
10
chomp $codespell_version;
Lines 12-27 $codespell_version =~ s/-.*$//; Link Here
12
if ( ( $codespell_version =~ s/\.//gr ) < 220 ) {    # if codespell < 2.2.0
12
if ( ( $codespell_version =~ s/\.//gr ) < 220 ) {    # if codespell < 2.2.0
13
    plan skip_all => "codespell version $codespell_version too low, need at least 2.2.0";
13
    plan skip_all => "codespell version $codespell_version too low, need at least 2.2.0";
14
}
14
}
15
my $dev_files = Koha::Devel::Files->new( { context => 'codespell' } );
15
16
my $ci = Koha::Devel::CI::IncrementalRuns->new( { context => 'codespell' } );
16
my @files;
17
my @files;
17
push @files, $dev_files->ls_perl_files;
18
push @files, $ci->get_files_to_test('pl');
18
push @files, $dev_files->ls_tt_files;
19
push @files, $ci->get_files_to_test('tt');
19
push @files, $dev_files->ls_js_files;
20
push @files, $ci->get_files_to_test('js');
20
21
21
plan tests => scalar(@files) + 1;
22
plan tests => scalar(@files) + 1;
22
23
24
my %results;
23
for my $file (@files) {
25
for my $file (@files) {
24
    my $output = qx{codespell -d --ignore-words .codespell-ignore $file};
26
    my $output = qx{codespell -d --ignore-words .codespell-ignore $file};
25
    chomp $output;
27
    chomp $output;
26
    is( $output, q{} );
28
    is( $output, q{} ) or $results{$file} = 1;
27
}
29
}
30
31
$ci->report_results( \%results );
(-)a/xt/perltidy.t (-5 / +7 lines)
Lines 4-16 use Test::PerlTidy; Link Here
4
use Test::More;
4
use Test::More;
5
use Test::NoWarnings;
5
use Test::NoWarnings;
6
6
7
use Koha::Devel::Files;
7
use Koha::Devel::CI::IncrementalRuns;
8
8
9
my $dev_files = Koha::Devel::Files->new( { context => 'tidy' } );
9
my $ci    = Koha::Devel::CI::IncrementalRuns->new( { context => 'tidy' } );
10
my @files     = $dev_files->ls_perl_files;
10
my @files = $ci->get_files_to_test('pl');
11
11
12
plan tests => scalar(@files) + 1;
12
plan tests => scalar(@files) + 1;
13
13
14
my %results;
14
for my $file (@files) {
15
for my $file (@files) {
15
    ok( Test::PerlTidy::is_file_tidy($file) );
16
    ok( Test::PerlTidy::is_file_tidy($file) ) or $results{$file} = 1;
16
}
17
}
17
- 
18
19
$ci->report_results( \%results );

Return to bug 39877