The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Test::PureASCII - Test that only ASCII characteres are used in your code

SYNOPSIS

  use Test::PureASCII;
  all_perl_files_are_pure_ascii();

or

  use Test::PureASCII tests => $how_many;
  file_is_pure_ascii($filename1, "only ASCII in $filaname1");
  file_is_pure_ascii({ skip_data => 1 }, $filename2, "only ASCII in $filaname2");
  ...

The usual pure-ASCII test looks like:

  use Test::More;
  eval "use Test::PureASCII";
  plan skip_all => "Test::PureASCII required" if $@;
  all_perl_files_are_pure_ascii();

DESCRIPTION

This module allows to create tests to ensure that only 7-bit ASCII characters are used on Perl source files.

EXPORT

The functions available from this module are described next.

All of them accept as first argument a reference to a hash containing optional parameters. The usage of those parameters is explained on the Options subchapter.

file_is_pure_ascii([\%opts,] $filename [, $test_name])

checks that $filename contains only ASCII characters.

The optional argument $test_name will be included on the output when reporting errors.

all_perl_files_are_pure_ascii([\%opts,] @dirs)

find all the Perl source files contained in directories @dirs recursively and check that they only contain ASCII characters.

blib is used as the default directory if none is given.

all_files_are_pure_ascii([\%opts,] @dirs)

find all the files (Perl and non-Perl) contained in directories @dirs recursively and check that they only contain ASCII characters.

The current directory is used as the default directory if none is given.

Options

All the functions from this module accept the following options:

skip => \@list_of_files

@list_of_files can contain any combination of string and references to regular expressions. Files matching any of the entries will be skipped.

For instance:

  all_files_are_pure_ascii({ skip => [qr/\.dat$/] });
skip_data => 1

On Perl files, skip any __DATA__ section found at the end.

forbid_control => 1

Tests fail when any control character that is not tab, CR neither LF is found.

forbid_tab => 1

Tests fail when tab characters are found.

forbid_cr => 1

Tests fail when carriage return (CR) characters are found. That can be useful when you want to force people working on your project to use the Unix conventions for line endings.

require_crlf => 1

Test fail when any CR or LF not being part of a CRLF sequence is found. That can be useful when you want to stick to Windows line ending conventions.

HINTS

The module recognizes some sequences or hints on the tested files that allow to skip specific exceptions. Usually you would include them as Perl comments.

pa_test_ignore

the line where this token is found is not checked for pure-ascii

pa_test_skip_lines($n)

the line where this token is found and the following $n are skipped

pa_test_end

the test for this file ends when this token is found

SEE ALSO

A nice table containing Unicode and Latin1 codes for common (at least in Europe) non-ASCII characters is available from http://www.alanwood.net/demos/ansi.html.

AUTHOR

Salvador Fañdino, <sfandino@yahoo.com>

COPYRIGHT AND LICENSE

Copyright (C) 2008 by Qindel Formacion y Servicios S.L.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.

This module contains code copied from Test::Pod Copyright (C) 2006 by Andy Lester.