Add a test to verify that the MANIFEST file is well-formed.
authorNicholas Clark <nick@ccl4.org>
Wed, 29 Jul 2009 15:32:56 +0000 (16:32 +0100)
committerNicholas Clark <nick@ccl4.org>
Wed, 29 Jul 2009 15:33:22 +0000 (16:33 +0100)
MANIFEST
t/lib/manifest.t [new file with mode: 0644]

index b4e4af2..9d5370f 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -4052,6 +4052,7 @@ t/lib/MakeMaker/Test/Setup/Problem.pm     MakeMaker test utilities
 t/lib/MakeMaker/Test/Setup/Recurs.pm   MakeMaker test utilities
 t/lib/MakeMaker/Test/Setup/XS.pm       MakeMaker test utilities
 t/lib/MakeMaker/Test/Utils.pm  MakeMaker test utilities
+t/lib/manifest.t               Test that this MANIFEST file is well formed
 t/lib/Math/BigFloat/Subclass.pm        Empty subclass of BigFloat for test
 t/lib/Math/BigInt/BareCalc.pm  Bigint's simulation of Calc
 t/lib/Math/BigInt/Scalar.pm    Pure Perl module to support Math::BigInt
diff --git a/t/lib/manifest.t b/t/lib/manifest.t
new file mode 100644 (file)
index 0000000..a98e974
--- /dev/null
@@ -0,0 +1,44 @@
+#!./perl -w
+
+# Test the well formed-ness of the MANIFEST file.
+# For now, just test that it uses tabs not spaces after the name of the file.
+
+BEGIN {
+    chdir 't';
+    @INC = '../lib';
+}
+
+use strict;
+use File::Spec;
+require './test.pl';
+
+my $failed = 0;
+
+plan('no_plan');
+
+my $manifest = File::Spec->catfile(File::Spec->updir(), 'MANIFEST');
+
+open my $m, '<', $manifest or die "Can't open '$manifest': $!";
+
+while (<$m>) {
+    chomp;
+    next unless /\s/;
+    my ($file, $separator) = /^(\S+)(\s+)/;
+    isnt($file, undef, "Line $. doesn't start with a blank") or next;
+    if ($separator !~ tr/\t//c) {
+       # It's all tabs
+       next;
+    } elsif ($separator !~ tr/ //c) {
+       # It's all spaces
+       fail("Spaces in entry for $file");
+       next;
+    } elsif ($separator =~ tr/\t//) {
+       fail("Mixed tabs and spaces in entry for $file");
+    } else {
+       fail("Odd whitespace in entry for $file");
+    }
+}
+
+close $m or die $!;
+
+is($failed, 0, 'All lines are good');