The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
$WriteRepo = catfile( qw(t local WRITEREPO) );

%MYCPAN => ( dir => catfile( qw(t read MYCPAN) ), );

my @files = qw(modulelist test-0.01.tar.gz);
$MYCPAN{@files} = map { catfile( $MYCPAN{dir}, $_ ) } @files;

return 1 if ( -r '/usr/local/etc/mcpani' );
return 1 if ( -r '/etc/mcpani' );

# parsecfg()
dies_ok { $mcpi->parsecfg( catfile( qw(t .mcpani config_bad) ) ); }
'Missing config option';

mkdir catfile( qw(t local MYCPAN) );
$mcpi->parsecfg( catfile( qw(t .mcpani config_noread) ) );
dies_ok { $mcpi->readlist } 'unreadable file';

$mcpi->parsecfg( catfile( qw(t .mcpani config) ) );

$mcpi->parsecfg( catfile( qw(t .mcpani config_norepo) ) );

dies_ok {
  $mcpi->add(
    module   => 'CPAN::Mini::Inject',
    authorid => 'SSORICHE',
    version  => '0.01',
    file     => 'test-0.01.tar.gz'
  );
}
'Missing config repository';

$mcpi->parsecfg( catfile( qw(t .mcpani config_read) ) );

$mcpi->parsecfg( catfile( qw(t .mcpani config_nowrite) ) );
dies_ok { $mcpi->writelist } 'fail write file';

mkdir catfile( qw(t local WRITEREPO) );
open WRITEFILE, '>', catfile( qw(t local WRITEREPO modulelist) );
close WRITEFILE;
chmod 0222, catfile( qw(t local WRITEREPO modulelist) );

chmod 0555, catfile( qw(t read MYCPAN) );
chmod 0444, catfile( qw(t read MYCPAN modulelist) );
chmod 0444, catfile( qw(t read MYCPAN test-0.01.tar.gz) );