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

NAME

Test::Compiles - tests if perl can compile a string of code

SYNOPSIS

 use Test::More;
 use Test::Compiles;
 
 compiles_ok    q{ print "hello world" };
 doesnt_compile q{ print "hello world  };   # missing end of quote
 
 done_testing;

DESCRIPTION

Test::Compiles exports two functions to allow you to check whether a string of code can be compiled by perl without errors. It doesn't check whether it can be executed.

Note that Perl code can execute arbitrary instructions as part of its compilation (e.g. in a BEGIN { ... } block), so don't pass untrusted strings to these test functions.

compiles $code, $message, %options
compiles $code, %options
compiles $code, $message
compiles $code

This test passes if $code can be compiled.

Valid options are:

  • strict: boolean to indicate whether code should be compiled with use strict. Enabled by default.

  • warnings: boolean to indicate whether code should be compiled with use warnings FATAL => 'all'. Disabled by default.

  • package: package that the code should be compiled in. Defaults to the caller.

  • prelude: a string of Perl code to prepend to $code. Defaults to $Test::Compiles::PRELUDE, which is (by default) an empty string.

  • message: an alternative to specifying $message.

doesnt_compile $code, $message, %options
doesnt_compile $code, %options
doesnt_compile $code, $message
doesnt_compile $code

This test passes if $code cannot be compiled. It accepts the same options.

This module defines a package variable $Test::Compiles::PRELUDE which can be used to, for example, load pragmata like indirect or bareword::filehandles.

BUGS

Please report any bugs to http://rt.cpan.org/Dist/Display.html?Queue=Test-Compiles.

SEE ALSO

Test::Fatal — checks for runtime errors.

Test::More — the test framework.

AUTHOR

Toby Inkster <tobyink@cpan.org>.

COPYRIGHT AND LICENCE

This software is copyright (c) 2017 by Toby Inkster.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

DISCLAIMER OF WARRANTIES

THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.