Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[svn:parrot] r36148 - in trunk: docs/pdds t/codingstd

2 views
Skip to first unread message

fpe...@cvs.perl.org

unread,
Jan 29, 2009, 12:34:13 PM1/29/09
to svn-comm...@perl.org
Author: fperrad
Date: Thu Jan 29 09:34:12 2009
New Revision: 36148

Added:
trunk/t/codingstd/make_code_coda.t (contents, props changed)

Changes in other areas also in this revision:
Modified:
trunk/docs/pdds/pdd07_codingstd.pod

Log:
[codingstd] add check of Makefile coda

Added: trunk/t/codingstd/make_code_coda.t
==============================================================================
--- (empty file)
+++ trunk/t/codingstd/make_code_coda.t Thu Jan 29 09:34:12 2009
@@ -0,0 +1,76 @@
+#! perl
+# Copyright (C) 2009, The Perl Foundation.
+# $Id: $
+
+use strict;
+use warnings;
+
+use lib qw( . lib ../lib ../../lib );
+use Test::More tests => 2;
+use Parrot::Distribution;
+use Parrot::Test::Util::Runloop;
+
+=head1 NAME
+
+t/codingstd/make_code_coda.t - checks for editor hint coda in Make source
+
+=head1 SYNOPSIS
+
+ # test all files
+ % prove t/codingstd/make_code_coda.t
+
+ # test specific files
+ % perl t/codingstd/make_code_coda.t config/gen/makefiles/pge.in
+
+=head1 DESCRIPTION
+
+Checks that all Make language source files have the proper editor hints coda,
+as specified in PDD07.
+
+=head1 SEE ALSO
+
+L<docs/pdds/pdd07_codingstd.pod>
+
+=cut
+
+my $coda = <<'CODA';
+# Local variables:
+# mode: makefile
+# End:
+# vim: ft=make:
+CODA
+
+my $DIST = Parrot::Distribution->new;
+my @files = @ARGV ? @ARGV : $DIST->get_make_language_files();
+
+Parrot::Test::Util::Runloop->testloop(
+ name => 'every file has a coda',
+ files => [@files],
+ per_file => sub { shift =~ m{\Q$coda\E\n*\z} },
+ diag_prefix => 'No coda found'
+);
+
+Parrot::Test::Util::Runloop->testloop(
+ name => 'only one coda per file',
+ files => [@files],
+ per_file => \&check_duplicates,
+ diag_prefix => 'Duplicate coda found'
+);
+
+sub check_duplicates {
+ my $buf = shift;
+
+ # append to the extra_coda array if coda-like text appears more than once
+ my $vim_many = 0;
+ $vim_many++ while $buf =~ m{^ [* \t]* vim[:] }gmx;
+ my $emacs_many = 0;
+ $emacs_many++ while $buf =~ m{^ [* \t]* Local \s variables: }gmx;
+ return ($vim_many <= 1 && $emacs_many <= 1);
+}
+
+# Local Variables:
+# mode: cperl
+# cperl-indent-level: 4
+# fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4:

0 new messages