8 'spec|s:s' => \my $manifest,
13 newtests-perldelta.pl [FROM TO]
15 Output the added tests between the two last released versions of Perl
19 Output the added tests between the version tagged v5.11.1
22 newtests-perldelta.pl v5.11.1 HEAD
26 my $corelist = \%Module::CoreList::version;
27 my @versions = sort keys %$corelist;
29 # by default, compare latest two version in CoreList;
30 my ($from, $to) = @ARGV;
32 # Convert the numbers to git version tags
35 $num =~ /^(5)\.(\d\d\d)(\d\d\d)/
36 or die "Couldn't make sense of version number '$num'";
37 sprintf 'v%d.%d.%d', $1,$2,$3;
40 $from //= num2git($versions[-2]); # /
41 $to //= num2git($versions[-1]); # /
42 $manifest //= 'MANIFEST'; # /
44 warn "Finding newly added tests between $from..$to\n";
47 grep { m!^[-+](?:t|ext)/.*\.t\s+! } # only added/removed tests
48 `git diff $from..$to -- $manifest`;
51 die "No new tests found between $from and $to.";
54 # Now remove those files whose lines were just shuffled around
59 die "Weird diff line '$_' " unless /^([+-])(\S+\.t)(?:\s+(.*))?$/;
60 my ($mod,$file,$desc) = ($1,$2,$3);
61 $desc //= '<no description>'; # / to placate Padre highlighting
63 $removed{ $file } = $file;
65 $desc{ $file } = $desc;
72 Many modules updated from CPAN incorporate new tests.
78 for my $file (sort keys %desc) {
79 next if $removed{ $file };