From: Max Maischein Date: Sun, 20 Dec 2009 19:48:08 +0000 (+0100) Subject: Generate a stub for newly added tests since the last release (2nd try, with fixed... X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=a27ed3b8870954559045bbc9e35d9aec37ab9d6c;p=p5sagit%2Fp5-mst-13.2.git Generate a stub for newly added tests since the last release (2nd try, with fixed pod) --- diff --git a/MANIFEST b/MANIFEST index 2d79cbc..8312e8d 100644 --- a/MANIFEST +++ b/MANIFEST @@ -4033,6 +4033,7 @@ Porting/makerel Release making utility Porting/make_snapshot.pl Make a tgz snapshot of our tree with a .patch file in it Porting/manicheck Check against MANIFEST Porting/manisort Sort the MANIFEST +Porting/newtests-perldelta.pl Generate Perldelta stub for newly added tests Porting/perldelta_template.pod Template for creating new perldelta.pod files Porting/podtidy Reformat pod using Pod::Tidy Porting/pumpkin.pod Guidelines and hints for Perl maintainers diff --git a/Porting/newtests-perldelta.pl b/Porting/newtests-perldelta.pl new file mode 100644 index 0000000..33fe0bc --- /dev/null +++ b/Porting/newtests-perldelta.pl @@ -0,0 +1,88 @@ +#!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 //= ''; # / to placate Padre highlighting + if ($mod eq '-') { + $removed{ $file } = $file; + }; + $desc{ $file } = $desc; +}; + +print <