# New Ticket Created by "John J. Trammell"
# Please include the string: [perl #39746]
# in the subject line of all future correspondence about this issue.
# <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=39746 >
New "technical debt" test to look for FIXME, TODO, and XXX markers in
C code and headers.
--
He's dead, Jim. You get his tricorder, I'll get his wallet.
--- MANIFEST 2006-07-06 15:37:58.000000000 -0500
+++ MANIFEST.new 2006-07-06 15:33:23.000000000 -0500
@@ -980,6 +980,7 @@
t/examples/subs.t []
t/examples/namespace.t []
t/codingstd/cppcomments.t []
+t/codingstd/fixme.t []
config/inter/shlibs.pm []
config/inter/types.pm []
config/inter/encoding.pm []
#! perl
# Copyright (C) 2001-2006, The Perl Foundation.
# $Id$
use strict;
use warnings;
use lib qw( . lib ../lib ../../lib );
use Test::More;
use Parrot::Distribution;
=head1 NAME
t/codingstd/fixme.t - checks for "FIXME" and similar notes in C source and
headers
=head1 SYNOPSIS
% prove t/codingstd/fixme.t
=head1 DESCRIPTION
Checks that no C source or header file in the distribution contains the
following strings:
FIXME
TODO
XXX
=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 @matches;
while (<FILE>) {
next unless /(FIXME|XXX|TODO)/;
push @matches, "file '$file', line $.: $1\n";
}
close FILE;
is(scalar(@matches), 0, "file '$file' has no FIXME strings")
or diag(@matches);
}
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),
);
}