diff tests/no-tabs.t @ 1:bc8961a81af6 release

2007-08-13 22:53:14 by steve Initial revision
author steve
date Mon, 13 Aug 2007 22:53:14 +0000
parents
children 8503c495b169
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/no-tabs.t	Mon Aug 13 22:53:14 2007 +0000
@@ -0,0 +1,100 @@
+#!/usr/bin/perl -w
+#
+#  Test that none of our scripts contain any literal TAB characters.
+#
+# Steve
+# --
+# $Id: no-tabs.t,v 1.1.1.1 2007-08-13 22:53:14 steve Exp $
+
+
+use strict;
+use File::Find;
+use Test::More qw( no_plan );
+
+
+#
+#  Find all the files beneath the current directory,
+# and call 'checkFile' with the name.
+#
+find( { wanted => \&checkFile, no_chdir => 1 }, '.' );
+
+
+
+#
+#  Check a file.
+#
+#
+sub checkFile
+{
+    # The file.
+    my $file = $File::Find::name;
+
+    # We don't care about directories
+    return if ( ! -f $file );
+
+    # Nor about backup files.
+    return if ( $file =~ /~$/ );
+
+    # Nor about files which start with ./debian/
+    return if ( $file =~ /^\.\/debian\// );
+
+    # See if it is a shell/perl file.
+    my $isShell = 0;
+    my $isPerl  = 0;
+
+    # Read the file.
+    open( INPUT, "<", $file );
+    foreach my $line ( <INPUT> )
+    {
+        if ( ( $line =~ /\/bin\/sh/ ) ||
+             ( $line =~ /\/bin\/bash/ ) )
+        {
+            $isShell = 1;
+        }
+        if ( $line =~ /\/usr\/bin\/perl/ )
+        {
+            $isPerl = 1;
+        }
+    }
+    close( INPUT );
+
+    #
+    #  We don't care about files which are neither perl nor shell.
+    #
+    if ( $isShell || $isPerl )
+    {
+        #
+        #  Count TAB characters
+        #
+        my $count = countTabCharacters( $file );
+
+        is( $count, 0, "Script has no tab characters: $file" );
+    }
+}
+
+
+
+#
+#  Count and return the number of literal TAB characters contained
+# in the specified file.
+#
+sub countTabCharacters
+{
+    my ( $file ) = (@_);
+    my $count = 0;
+
+    open( FILE, "<", $file )
+      or die "Cannot open $file - $!";
+    foreach my $line ( <FILE> )
+    {
+        # We will count multiple tab characters in a single line.
+        while( $line =~ /(.*)\t(.*)/ )
+        {
+            $count += 1;
+            $line = $1 . $2;
+        }
+    }
+    close( FILE );
+
+    return( $count );
+}