File: writelist.t

package info (click to toggle)
libcpan-mini-inject-perl 1.012-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 352 kB
  • sloc: perl: 732; makefile: 4
file content (96 lines) | stat: -rw-r--r-- 2,409 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
use strict;
use warnings;

use Test::More;

use File::Path qw(make_path);
use File::Spec::Functions qw(catfile);
use File::Temp ();

use lib qw(t/lib);
use Local::utils;

my $class = 'CPAN::Mini::Inject';

$SIG{'INT'} = sub { print "\nCleaning up before exiting\n"; exit 1 };
my $temp_dir = File::Temp::tempdir(CLEANUP=>1);

subtest 'sanity' => sub {
	use_ok $class or BAIL_OUT( "Could not load $class: $@" );
	isa_ok $class->new, $class;
	};

subtest 'setup directories in temp dir' => sub {
	my @dirs = (
		[ qw(modules) ],
		[ qw(authors) ],
		[ qw(injects) ],
		);

	foreach my $dir ( @dirs ) {
		my $path = catfile $temp_dir, @$dir;
		make_path( $path );
		ok -d $path, "Path for <@$dir> exists";
		}
	};

my $modulelist;
subtest 'make modulelist' => sub {
	my $injects_dir = catfile $temp_dir, 'injects';
	ok -e $injects_dir, 'injects directory exists';

	$modulelist = catfile $injects_dir, 'modulelist';

	my $fh;
	if( open $fh, '>', catfile $modulelist ) {
		print {$fh} <<'HERE';
CPAN::Checksums                   1.016  A/AN/ANDK/CPAN-Checksums-1.016.tar.gz
CPAN::Mini                         0.18  R/RJ/RJBS/CPAN-Mini-0.18.tar.gz
CPANPLUS                         0.0499  A/AU/AUTRIJUS/CPANPLUS-0.0499.tar.gz
HERE

		close $fh;
		}
	else {
		fail( "Could not open <$modulelist>: $!" );
		}
	};

subtest 'add to modulelist' => sub {
	my $tmp_config_file;
	subtest 'make config' => sub {
		$tmp_config_file = write_config(
			local      => $temp_dir,
			repository => catfile( $temp_dir, 'injects' ),
			);
		ok -e $tmp_config_file, 'configuration file exists';
		};

	my $mcpi = $class->new;
	isa_ok $mcpi, $class;

	$mcpi->loadcfg( $tmp_config_file )->parsecfg->readlist;

	my $module_line = "CPAN::Mini::Inject                 0.01  S/SS/SSORICHE/CPAN-Mini-Inject-0.01.tar.gz";

	subtest 'modify modulelist' => sub {
		ok -e $modulelist, "modulelist file exists";
		push( @{ $mcpi->{modulelist} }, $module_line );
		is( @{ $mcpi->{modulelist} }, 4, 'Updated memory modulelist' );
		ok( $mcpi->writelist, 'Write modulelist' );
		};

	subtest 'check modulelist' => sub {
		my $other_mcpi = $class->new;
		isa_ok $other_mcpi, $class;
		$mcpi->loadcfg( $tmp_config_file )->parsecfg->readlist;

		is( @{ $mcpi->{modulelist} }, 4, 'Updated memory modulelist' );
		my $found = grep { $_ eq $module_line } @{ $mcpi->{modulelist} };
		ok $found, "target line is in modulelist";
		};

	};

done_testing();