blob: e4d6c11e1d784414b65988fd7585baa8c5b2f7b1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
# Copyright (C) 2017 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
package QtQA::PerlChecks;
use strict;
use warnings;
use Exporter;
our @ISA = qw( Exporter );
our @EXPORT_OK = qw( all_files_in_git all_perl_files_in_git );
use File::chdir;
use File::Spec::Functions;
use File::Find;
use List::MoreUtils qw( apply );
use Perl::Critic::Utils qw( all_perl_files );
use Test::More;
# Helper for tests in this directory to find perl files for testing.
# Returns a list of all files known to git under the given $path (or '.' if unset)
# It is considered a failure if there are no files known to git.
sub all_files_in_git
{
my ($path) = @_;
if (!$path) {
$path = '.';
}
# Do everything from $path, so we get filenames relative to that
local $CWD = $path;
my $QT_MODULE_TO_TEST=$ENV{QT_MODULE_TO_TEST};
# Find all the files known to git
my @out;
if (-d $QT_MODULE_TO_TEST . '/.git') {
@out =
apply { $_ = canonpath($_) } # make paths canonical ...
apply { chomp } # strip all newlines ...
qx( git ls-files );
} else {
find(sub{ push @out, canonpath($File::Find::name); }, ".");
}
foreach (@out) {
print "$_\n";
}
# Get files in a reliable order
@out = sort @out;
is( $?, 0, 'git ls-files ran ok' );
ok( @out, 'git ls-files found some files' );
return @out;
}
# Returns a list of all perl files known to git under the given $path.
# See Perl::Critic::Utils all_perl_files for documentation on what
# "perl files" means.
# May return an empty list if there are no perl files.
sub all_perl_files_in_git
{
my ($path) = @_;
if (!$path) {
$path = '.';
}
# Do everything from $path, so we get filenames relative to that
local $CWD = $path;
# Find all the git files ...
my %all_git_files = map { $_ => 1 } all_files_in_git( '.' );
# Then return only those perl files which are also in git
my @out = grep { $all_git_files{ $_ } } all_perl_files( '.' );
# Get files in a reliable order
@out = sort @out;
return @out;
}
1;
|