# New Ticket Created by J�rgen B�mmels
# Please include the string: [perl #16839]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt2/Ticket/Display.html?id=16839 >
Hi!
This MANIFEST things come up again and again. This time there are 5
missing files from 2 contributers.
There really need some automatic testing on this. There is already a
manicheck.pl in tools/dev, but the user has to run in manually. Ok
stop whining, just do it. Here is a "make test" test which will
compare the MANIFEST with the CVS/Entries files, a diffrence between
these are reported as failure.
Uncommitted cvs add/remove are recognised, so a make test just before
the commit should complete with no error.
tarballs without CVS-directories will skip the CVS/Entries parsing.
The icu/ directory is skipped and ignored.
I named this test manifest.t in t/src but don't have a strong opinion
on this. Put it were you like, but remember to update the MANIFEST :-)
-- attachment 1 ------------------------------------------------------
url: http://rt.perl.org/rt2/attach/35994/29117/8c8c3b/manifest.t
-- attachment 2 ------------------------------------------------------
url: http://rt.perl.org/rt2/attach/35994/29118/7c7c8f/manifest.diff
#! perl -w
use Test::More tests => 4;
use File::Find qw(find);
use ExtUtils::Manifest;
my $ignore_re = qr,(?: ^ icu/ )
|(?: \.cvsignore $ ),x;
ok (-e $ExtUtils::Manifest::MANIFEST, 'MANIFEST exists');
$ExtUtils::Manifest::Quiet = 1;
ok (!ExtUtils::Manifest::manicheck (), 'manicheck ()');
sub scan_cvs;
sub list_diff (\@\@);
sub read_manifest;
SKIP: {
skip ('No CVS version', 1) unless -e 'CVS';
local @cvs_entries;
find { wanted => \&scan_cvs }, '.';
@cvs_entries = grep { s,^./,, && !m/$ignore_re/ } @cvs_entries;
my @manifest = sort keys %{ExtUtils::Manifest::maniread()};
my ($cvs_miss, $mani_miss);
($cvs_miss, $mani_miss) = list_diff @cvs_entries, @manifest;
local $" = "\n\t";
ok (!@$cvs_miss, 'all files in MANIFEST are in CVS')
or diag ("Missing files in CVS:\n\t@$cvs_miss");
ok (!@$mani_miss, 'all files in CVS are in MANIFEST')
or diag ("Missing files in Manifest:\n\t@$mani_miss");
}
sub scan_cvs {
my $file = $_;
if ( $file eq 'CVS') {
local *CVS;
open CVS, 'CVS/Entries';
while (<CVS>) {
chop;
next if m/^D/; # directories are will be further scanned
my (undef, $entry, $rev) = split '/';
push @cvs_entries, "$File::Find::dir/$entry" if $rev !~ m/^-/;
}
close CVS;
$File::Find::prune = 1;
}
}
sub list_diff (\@\@) {
my ($a, $b) = @_;
my %elem;
grep { $elem{$_}++ } @$a;
grep { $elem{$_}-- } @$b;
return ( [ sort grep { $elem{$_} < 0 } keys %elem ],
[ sort grep { $elem{$_} > 0 } keys %elem ] );
}
Index: MANIFEST
===================================================================
RCS file: /cvs/public/parrot/MANIFEST,v
retrieving revision 1.205
diff -u -r1.205 MANIFEST
--- MANIFEST 27 Aug 2002 05:31:39 -0000 1.205
+++ MANIFEST 29 Aug 2002 09:31:18 -0000
@@ -58,6 +58,8 @@
config/gen/config_h/config_h.in
config/gen/config_pm.pl
config/gen/config_pm/Config_pm.in
+config/gen/libparrot_def.pl
+config/gen/libparrot_def/libparrot_def.in
config/gen/makefiles.pl
config/gen/makefiles/classes.in
config/gen/makefiles/docs.in
@@ -67,6 +69,7 @@
config/gen/makefiles/perl6.in
config/gen/makefiles/root.in
config/gen/makefiles/scheme.in
+config/gen/makefiles/imcc.in
config/gen/platform.pl
config/gen/platform/ansi.c
config/gen/platform/ansi.h
@@ -377,6 +380,7 @@
languages/perl6/examples/mandel.p6
languages/perl6/examples/qsort.p6
languages/perl6/mkdistro.sh
+languages/perl6/overview.pod
languages/perl6/pconfig.pl
languages/perl6/perl6
languages/perl6/perl6re/Perl6RE.bnf
@@ -433,6 +437,7 @@
languages/perl6/t/parser/speed_3.exp
languages/perl6/t/parser/speed_3.pl
languages/perl6/t/rx/basic.t
+languages/perl6/t/rx/call.t
languages/perl6/t/rx/special.t
languages/python/python.bnf
languages/python/python.prd
@@ -584,6 +589,7 @@
t/pmc/pmc.t
t/pmc/sub.t
t/src/basic.t
+t/src/manifest.t
test_main.c
tools/dev/check_source_standards.pl
tools/dev/lib_deps.pl
Index: MANIFEST.SKIP
===================================================================
RCS file: /cvs/public/parrot/MANIFEST.SKIP,v
retrieving revision 1.5
diff -u -r1.5 MANIFEST.SKIP
--- MANIFEST.SKIP 12 Jun 2002 22:12:15 -0000 1.5
+++ MANIFEST.SKIP 29 Aug 2002 09:31:18 -0000
@@ -19,6 +19,7 @@
^core_ops\.c$
^core_ops_prederef\.c$
+^core_ops_cg\.c$
^lib/Parrot/Jit\.pm$
^lib/Parrot/PMC\.pm$
@@ -33,4 +34,9 @@
^parrot$
^pdump$
+^pdb$
^blib/
+
+^icu/
+
+^t/.*/.*_\d+\.