App-perlimports
view release on metacpan or search on metacpan
#!perl
use strict;
use warnings;
use lib 'test-data/lib', 't/lib';
use App::perlimports::CLI ();
use Capture::Tiny qw( capture );
use Cpanel::JSON::XS qw( decode_json );
use File::pushd qw( pushd );
use Path::Tiny ();
use TestHelper qw( logger );
use Test::Differences qw( eq_or_diff );
use Test::Fatal qw( exception );
use Test::More import => [qw( done_testing is like ok subtest )];
use Test::Needs qw( Perl::Critic::Utils );
subtest 'bad path to config file' => sub {
local @ARGV = (
'--config-file',
'test-data/XXX',
'test-data/a.pl',
);
ok( App::perlimports::CLI->new, '_config_file builder is lazy' );
like(
exception { App::perlimports::CLI->new->run }, qr{XXX not found},
'not found'
);
};
# Emulate a user with no local or global config file
subtest 'no config files' => sub {
my $dir = Path::Tiny->tempdir('testconfigXXXXXXXX');
local $ENV{XDG_CONFIG_HOME} = "$dir";
local @ARGV = ('--version');
my $pushd = pushd("$dir");
my $cli = App::perlimports::CLI->new;
my ($stdout) = capture { $cli->run };
like( $stdout, qr{$App::perlimports::CLI::VERSION}, 'prints version' );
};
# Emulate a user with only a global config file
subtest 'no local config file' => sub {
my $xdg_config_home = Path::Tiny->tempdir('testconfigXXXXXXXX');
local $ENV{XDG_CONFIG_HOME} = $xdg_config_home->stringify;
my $global_config_dir = $xdg_config_home->child('perlimports');
$global_config_dir->mkpath;
my $global_config = $global_config_dir->child('perlimports.toml');
local @ARGV = ( '--create-config-file', $global_config );
is( App::perlimports::CLI->new->run, '0', 'clean exit code' );
ok( -e $global_config, 'file created' );
my $project_dir = Path::Tiny->tempdir('testconfigXXXXXXXX');
my $pushd = pushd("$project_dir");
my $cli = App::perlimports::CLI->new;
is( $cli->_config_file, $global_config, 'config file found' );
# Try to recreate config file
local @ARGV = ( '--create-config-file', $global_config );
my $exit_code;
my ( undef, $stderr )
= capture { $exit_code = App::perlimports::CLI->new->run };
like(
( run in 0.695 second using v1.01-cache-2.11-cpan-d8267643d1d )