The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

use File::Find;
use File::Basename;
use Test::More;

my $lib_path = dirname(__FILE__) . '/../lib';
my %LIST;
find(
    sub {
        if ( $File::Find::name =~
            m{ (lib [/] Hyper [/] [A-Za-z0-9_/-]+ [.]pm) $ }xms
        ) {
                $LIST{"../$1"} = 1;
            }
    },
    $lib_path,
);

plan ( tests => 4 * (scalar keys %LIST) );

for my $module (sort keys %LIST) {
    open( my $file, '<', "$lib_path/$module" ) or die "cannnot open file $module";
    local $/;
    my $text = <$file>;

    ok( 1 && $text !~ m{[\x0D]}g, "$module has no DOS line ending (CR)");
    ok( 1 && $text !~ m{[\x09]}g, "$module uses no TABs");
    ok( 1 && $text !~ m{[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\xFF]}g , "$module is free of shit");
    ok( 1 && $text !~ m{[ ][\x0D\x0A]}g , "$module has no trailing space");
}