NAME

Test::Dist::Zilla::BuiltFiles - Check files built by your Dist::Zilla plugin

VERSION

Version v0.4.4, released on 2016-12-28 19:48 UTC.

SYNOPSIS

    # Let's test Manifest Dist::Zilla plugin:

    use strict;
    use warnings;

    use Test::Deep qw{ re };
    use Test::More;
    use Test::Routine;
    use Test::Routine::Util;

    with 'Test::Dist::Zilla::Build';
    with 'Test::Dist::Zilla::BuiltFiles';

    run_me 'A test' => {
        plugins => [
            'GatherDir',
            'Manifest',
            'MetaJSON',
        ],
        files => {
            'lib/Dummy.pm' => 'package Dummy; 1;',
        },
        expected => {
            files => {
                'MANIFEST' => [
                    re( qr{^# This file was } ),
                    'MANIFEST',
                    'META.json',
                    'dist.ini',
                    'lib/Dummy.pm',
                ],
            },
        },
    };

    done_testing;

DESCRIPTION

This is a Test::Routine-based role for testing Dist::Zilla and its plugins. It is intended to be used in cooperation with Test::Dist::Zilla::Build role. Test::Dist::Zilla::Build builds the distribution and checks exception and build messages, while Test::Dist::Zilla::BuiltFiles checks built files.

OBJECT METHODS

BuiltFiles

It is a test routine. It checks built files. Names of files to check should be be enlisted in files key of expected hash. Value should be HashRef, keys are filenames, values are file content. For every file the test routine checks the file exists and its actual content matches the expected content. If expected content is undef, the file should not exist.

File content may be specified either by Str or by ArrayRef:

    run_me {
        …
        expected => {
            files => {
                'filename1' => "line1\nline2\n",
                'filename2' => [
                    'line1',            # Should not include newline character.
                    'line2',
                    re( '^#' ),         # See "Special Comparisons" in Test::Deep.
                ],
                'filename3' => undef,   # This file should not exist.
            },
        },
    };

Actual file content is compared with expected file content by cmp_deeply routine from Test::Deep.

BuiltFiles assumes successful build. If an exception occurred, BuiltFiles skips all the checks.

SEE ALSO

Test::Dist::Zilla
Test::Dist::Zilla::Build
"$ok = cmp_deeply($got, $expected, $name)" in Test::Deep
Test::Routine

AUTHOR

Van de Bugger <van.de.bugger@gmail.com>

COPYRIGHT AND LICENSE

Copyright (C) 2015, 2016 Van de Bugger

License GPLv3+: The GNU General Public License version 3 or later <http://www.gnu.org/licenses/gpl-3.0.txt>.

This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.