# New Ticket Created by "John J. Trammell"
# Please include the string: [perl #39761]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=39761 >
Found in docs/pdds/pdd07_codingstd.pod:
All indentation must consist of spaces, no tabs (for ease of
patching).
This test looks for tabbed indents in source code and header files.
#! perl
# Copyright (C) 2001-2006, The Perl Foundation.
use strict;
use warnings;
use lib qw( . lib ../lib ../../lib );
use Test::More;
use Parrot::Distribution;
=head1 NAME
t/codingstd/tabs.t - checks for tab indents in C source and headers
=head1 SYNOPSIS
% prove t/codingstd/tabs.t [file ...]
=head1 DESCRIPTION
Checks that the indicated file(s) do not use tabs to indent.
If no file(s) are specified, checks the Parrot C source and header files for
tab indents.
=head1 SEE ALSO
L<docs/pdds/pdd07_codingstd.pod>
=cut
my @files = @ARGV ? @ARGV : source_files();
plan tests => scalar @files;
foreach my $file (@files) {
open FILE, "<$file" or die "Unable to open '$file' for reading: $!";
my @tabs;
LINE:
while (<FILE>) {
next unless /^ *\t/;
push @tabs, "tab in leading whitespace, file '$file', line $.\n";
if (@tabs >= 5) {
push @tabs, "skipping remaining lines (you get the idea)\n";
last LINE;
}
}
close FILE;
is(scalar(@tabs), 0, "file '$file' does not use tabs")
or diag(@tabs);
}
sub source_files {
my $dist = Parrot::Distribution->new;
return map { $_->path } (
map($_->files_of_type('C code'), $dist->c_source_file_directories),
map($_->files_of_type('C header'), $dist->c_header_file_directories),
);
}
## vim: expandtab sw=4
Index: MANIFEST
===================================================================
--- MANIFEST (revision 13197)
+++ MANIFEST (working copy)
@@ -981,6 +981,7 @@
t/examples/namespace.t []
t/codingstd/cppcomments.t []
t/codingstd/fixme.t []
+t/codingstd/tabs.t []
config/inter/shlibs.pm []
config/inter/types.pm []
config/inter/encoding.pm []