@EXPORT_OK = qw(%Modules %Maintainers
get_module_files get_module_pat
show_results process_options files_to_modules
- finish_tap_output
+ finish_tap_output
reload_manifest);
$VERSION = 0.06;
}, $_);
@files;
}
+ # Not a glob, but doesn't exist
+ : $_ !~ /[*?{]/ ? $_
# The rest are globbable patterns; expand the glob, then
# recursively perform directory expansion on any results
- : expand_glob(grep -e $_,glob($_))
+ : expand_glob(glob($_))
} @_;
}
--opened | file ....
List the module ownership of modified or the listed files
- --tap-output
- Show results as valid TAP output. Currently only compatible
- with --check, --checkmani
-
Matching is case-ignoring regexp, author matching is both by
the short id and by the full name and email. A "module" may
not be just a module, it may be a file or files or a subdirectory.
my $Checkmani;
my $Opened;
my $TestCounter = 0;
-my $TapOutput;
sub process_options {
usage()
'check' => \$Check,
'checkmani' => \$Checkmani,
'opened' => \$Opened,
- 'tap-output' => \$TapOutput,
);
my @Files;
: sub { /\.(?:[chty]|p[lm]|xs)\z/msx },
@Files
);
- } else {
+ } else {
duplicated_maintainers();
+ superfluous_maintainers();
}
} elsif (@Files) {
my $ModuleByFile = files_to_modules(@Files);
sub duplicated_maintainers {
maintainers_files();
for my $f (keys %files) {
- if ($TapOutput) {
- if ($files{$f} > 1) {
- print "not ok ".++$TestCounter." - File $f appears $files{$f} times in Maintainers.pl\n";
- } else {
- print "ok ".++$TestCounter." - File $f appears $files{$f} times in Maintainers.pl\n";
- }
- } else {
- if ($files{$f} > 1) {
- warn "File $f appears $files{$f} times in Maintainers.pl\n";
- }
- }
+ if ($files{$f} > 1) {
+ print "not ok ".++$TestCounter." - File $f appears $files{$f} times in Maintainers.pl\n";
+ } else {
+ print "ok ".++$TestCounter." - File $f appears $files{$f} times in Maintainers.pl\n";
+ }
}
}
sub warn_maintainer {
my $name = shift;
- if ($TapOutput) {
- if ($files{$name}) {
- print "ok ".++$TestCounter." - $name has a maintainer\n";
- } else {
- print "not ok ".++$TestCounter." - $name has NO maintainer\n";
-
- }
-
+ if ($files{$name}) {
+ print "ok ".++$TestCounter." - $name has a maintainer\n";
} else {
- warn "File $name has no maintainer\n" if not $files{$name};
+ print "not ok ".++$TestCounter." - $name has NO maintainer\n";
}
}
find sub { warn_maintainer($File::Find::name) if $check->() }, @dir if @dir;
}
+sub superfluous_maintainers {
+ maintainers_files();
+ for my $f (keys %files) {
+ if ($MANIFEST{$f}) {
+ print "ok ".++$TestCounter." - Maintained file $f appears in MANIFEST\n";
+ } else {
+ print "not ok ".++$TestCounter." - File $f has has a maintainer but is not in MANIFEST\n";
+ }
+ }
+}
+
sub finish_tap_output {
print "1..".$TestCounter."\n";
}