initial checkin
[gitmo/MooseX-Attribute-ENV.git] / t-author / newlines.t
CommitLineData
650d6350 1use strict;
2use warnings;
3
4BEGIN {
5
6 use Test::More;
7 use File::Find;
8}
9
10
11=head1 NAME
12
13t/newlines.t - test to make sure all text files are in unix linefeed format
14
15=head1 DESCRIPTION
16
17Descends through the distribution directory and verifies that all text files
18(files with an extention matching a pattern, such as *.txt) are in unix
19linefeed format.
20
21=head1 TESTS
22
23This module defines the following tests.
24
25=head2 Descend Distribution
26
27Starting at the Distribution root, look at all files in all subdirections and
28if the file matches a text type (according to a particular regex for it's
29extension) add it to a files of files to test.
30
31=cut
32
33my @files;
34
35 find({
36 wanted => \&process,
37 follow => 0
38 }, '.');
39
40sub process
41{
42 my $file = $_;
43
44 return if $File::Find::dir =~m/\.svn/;
45 return if $File::Find::dir =~m/archive/;
46
47 push @files, $File::Find::name
48 if $file =~m/\.yml$|\.pm$|\.pod$|\.tt$|\.txt$|\.js$|\.css$|\.sql$|\.html$/;
49}
50
51
52=head2 test linefeedtype
53
54Check if the generated files are correctly unix linefeeds
55
56=cut
57
58my $CR = "\015"; # Apple II family, Mac OS thru version 9
59my $CRLF = "\015\012"; # CP/M, MP/M, DOS, Microsoft Windows
60my $FF = "\014"; # printer form feed
61my $LF = "\012"; # Unix, Linux, Xenix, Mac OS X, BeOS, Amiga
62
63my $test_builder = Test::More->builder;
64
65if( $#files )
66{
67 $test_builder->plan(tests => ($#files+1)*2);
68
69 foreach my $file (@files)
70 {
71 ## Get a good filehandle
72 open( my $fh, '<', $file)
73 or fail "Can't open $file, can't finish testing";
74
75 ## Only need to test the first line.
76 my ($first, $second) = <$fh>;
77
78 ## Don't need this anymore
79 close($fh);
80
81 SKIP: {
82
83 skip "$file is Empty!", 2 unless $first;
84
85 ## Are we DOS or MACOS/APPLE?
86 ok $first!~m/$CRLF$|$CR$|$FF$/, "$file isn't in a forbidden format";
87
88 ## If there is more than one line, we HAVE to be UNIX
89
90 SKIP: {
91
92 skip "$file only has a single line", 1 unless $second;
93 ok $first=~m/$LF$/, "$file Is unix linefeed";
94 }
95 }
96 }
97}
98else
99{
100 $test_builder->plan(skip_all => 'No Text Files Found! (This is probably BIG Trouble...');
101}
102
103=head1 AUTHOR
104
105John Napiorkowski, C<< <jjn1056 at yahoo.com> >>
106
107=head1 COPYRIGHT & LICENSE
108
109Copyright 2008 John Napiorkowski.
110
111This program is free software; you can redistribute it and/or modify it
112under the same terms as Perl itself.
113
114=cut
115
116
1171;