NAME

Test::MetaSyntactic - Common tests for Acme::MetaSyntactic themes

SYNOPSIS

# add this as t/meta.t
use Test::MetaSyntatic;
all_themes_ok();

DESCRIPTION

This module provides the minimum set of tests that any Acme::MetaSyntactic theme should pass.

The goal is to make is easier for theme creators build a distribution and ensure theirs themes will work as expected when installed.

EXPORTED FUNCTIONS

all_themes_ok( @lib )

Will find all themes under the directories listed in @lib, and run theme_ok() on them.

@lib is optional (it will try to find themes in blib/lib or lib if not provided).

theme_ok( $theme, $source )

Will run all tests on the given $theme. Some tests require access to the source, but they will be skipped if $source is not provided.

If the subtest_load() test fails, no further test will be run.

SUBTESTS

The individual tests are run as subtests. All substests but subtest_load() assume that the module can be successfully loaded.

subtest_fixme( $theme, $source )

Checks that the theme source file does not contain the word "FIXME".

subtest_encoding( $theme, $source )

Checks that the theme source files contains an =encoding line if it contains some non us-ascii characters.

subtest_load( $theme )

Tries to load the theme module.

First in the currently running process, and then in isolation inside its own environment.

subtest_version( $theme )

Checks that the theme has a $VERSION.

subtest_format( $theme )

Checks that each metasyntactic name in the theme is a valid Perl variable name.

subtest_length( $theme )

Checks that each name in the theme has valid length.

subtest_data( $theme, $source )

Checks that the __DATA__ section (if any) of the theme source is properly formatted.

subtest_import( $theme )

Checks that the exported meta$theme function returns an item from $theme.

subtest_noimport( $theme )

Checks that use Acme::MetaSyntactic::$theme () does not export the meta$theme function.

subtest_theme( $theme )

Checks that the theme() function returns the theme name.

subtest_remote( $theme )

For themes with a remote list, checks that the remote list (if any) is identical to the current list of items in the theme.

This subtest will only be run if RELEASE_TESTING (or AUTHOR_TESTING, for backward compatibility reasons) is true and AUTOMATED_TESTING is false. Requires LWP::UserAgent.

AUTHOR

Philippe Bruhat (BooK), <book@cpan.org>

COPYRIGHT

Copyright 2012-2017 Philippe Bruhat (BooK), All Rights Reserved.

LICENSE

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