App-perlimports

 view release on metacpan or  search on metacpan

t/perlimports.t  view on Meta::CPAN

#!/usr/bin/env perl

use strict;
use warnings;

use Path::Tiny        ();
use Test::Differences qw( eq_or_diff );
use Test::More import => [qw( done_testing subtest )];
use Test::Needs qw( Moose );
use Test::Script 1.27 qw(
    script_compiles
    script_fails
    script_runs
    script_stderr_is
    script_stderr_like
    script_stdout_like
);
use TOML::Tiny qw( from_toml );

my $script   = 'script/perlimports';
my @filename = ( '--filename', 'test-data/carp.pl' );

script_compiles($script);

sub tmp_perl_file {
    my $file = Path::Tiny->tempfile('testXXXX');
    $file->spew('use strict;use warnings;');
    return $file;
}

subtest 'provide config file' => sub {
    my $file = tmp_perl_file();
    script_runs(
        [ $script, '--config-file', 'test-data/perlimports.toml', "$file" ] );
    script_stderr_is( q{}, 'no errors' );
};

subtest 'config file not found' => sub {
    my $file = tmp_perl_file();
    script_fails(
        [ $script, '--config-file', 'test-data/Xperlimports.toml', "$file" ],
        { exit => 1 }
    );

    script_stderr_like( qr{Xperlimports.toml not found}, 'not found error' );
};

subtest 'create config file' => sub {
    my $dir  = Path::Tiny->tempdir('testconfigXXXXXXXX');
    my $file = $dir->child('perlimports.toml');

    script_runs( [ $script, '--create-config-file', "$file" ] );
    script_stderr_is( q{}, 'no errors' );

    my $config = from_toml( $file->slurp );
    eq_or_diff( $config->{libs}, [ 'lib', 't/lib' ], 'default libs' );
    script_fails(
        [ $script, '--create-config-file', "$file" ],
        { exit => 1 },
    );
    script_stderr_like( qr{already exists}, 'error clobbering file' );
};

subtest 'filename' => sub {
    script_runs( [ $script, @filename ] );
    script_stderr_is( q{}, 'no errors' );
};



( run in 1.787 second using v1.01-cache-2.11-cpan-b16cb0d3907 )