mirror of
https://github.com/Perl/perl5.git
synced 2026-01-26 16:39:36 +00:00
All these files used to be executable in the release tarballs. Apparently things also work without that in the repository, but I'd rather add this possibly unecessary change to blead instead of breaking the upcoming release. This should probably be looked into again afterwards.
93 lines
1.8 KiB
Perl
Executable File
93 lines
1.8 KiB
Perl
Executable File
#!perl -w
|
|
use 5.010;
|
|
use strict;
|
|
use Getopt::Long;
|
|
use Pod::Usage;
|
|
use Module::CoreList;
|
|
GetOptions(
|
|
'spec|s:s' => \my $manifest,
|
|
) or pod2usage();
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
newtests-perldelta.pl [FROM TO]
|
|
|
|
Output the added tests between the two last released versions of Perl
|
|
|
|
newtests-perldelta.pl
|
|
|
|
Output the added tests between the version tagged v5.11.1
|
|
and this version
|
|
|
|
newtests-perldelta.pl v5.11.1 HEAD
|
|
|
|
=cut
|
|
|
|
my $corelist = \%Module::CoreList::version;
|
|
my @versions = sort keys %$corelist;
|
|
|
|
# by default, compare latest two version in CoreList;
|
|
my ($from, $to) = @ARGV;
|
|
|
|
# Convert the numbers to git version tags
|
|
sub num2git {
|
|
my ($num) = @_;
|
|
$num =~ /^(5)\.(\d\d\d)(\d\d\d)/
|
|
or die "Couldn't make sense of version number '$num'";
|
|
sprintf 'v%d.%d.%d', $1,$2,$3;
|
|
};
|
|
|
|
$from //= num2git($versions[-2]); # /
|
|
$to //= num2git($versions[-1]); # /
|
|
$manifest //= 'MANIFEST'; # /
|
|
|
|
warn "Finding newly added tests between $from..$to\n";
|
|
|
|
my @new_tests =
|
|
grep { m!^[-+](?:t|ext)/.*\.t\s+! } # only added/removed tests
|
|
`git diff $from..$to -- $manifest`;
|
|
chomp @new_tests;
|
|
if (! @new_tests) {
|
|
die "No new tests found between $from and $to.";
|
|
};
|
|
|
|
# Now remove those files whose lines were just shuffled around
|
|
# within MANIFEST
|
|
my %desc;
|
|
my %removed;
|
|
for (@new_tests) {
|
|
die "Weird diff line '$_' " unless /^([+-])(\S+\.t)(?:\s+(.*))?$/;
|
|
my ($mod,$file,$desc) = ($1,$2,$3);
|
|
$desc //= '<no description>'; # / to placate Padre highlighting
|
|
if ($mod eq '-') {
|
|
$removed{ $file } = $file;
|
|
};
|
|
$desc{ $file } = $desc;
|
|
};
|
|
|
|
print <<HEAD;
|
|
|
|
=head1 New Tests
|
|
|
|
Many modules updated from CPAN incorporate new tests.
|
|
|
|
=over 4
|
|
|
|
HEAD
|
|
|
|
for my $file (sort keys %desc) {
|
|
next if $removed{ $file };
|
|
print <<ITEM;
|
|
=item $file
|
|
|
|
$desc{ $file }
|
|
|
|
ITEM
|
|
};
|
|
|
|
print <<TAIL
|
|
|
|
=back
|
|
|
|
TAIL
|