App-LXC-Container

 view release on metacpan or  search on metacpan

t/02-init.t  view on Meta::CPAN

my @input = qw(1 3 lxc 0 2 2 2 2);
my $dummy_obj = { MAIN_UI => UI::Various::Main->new() };
$dummy_obj = bless $dummy_obj, "App::LXC::Container::Setup";
stdout_like
{   _call_with_stdin
	(\@input,
	 sub { App::LXC::Container::Setup::_init_config_dir($dummy_obj); });
}
    qr{$re_dialog}ms,
    'initialisation of configuration directory did not fail';

my $root_dir = TMP_PATH . '/lxc';
is(-d  $root_dir . '/conf', 1, 'configuration directories exist');
is(-l  HOME_PATH . '/.lxc-configuration', 1,
   'symbolic link to configuration directory exists');
check_config_file('network list',
		  $root_dir . '/.networks.lst',
		  70,
		  \&App::LXC::Container::Data::initial_network_list,
		  '1 is the LXC bridge');
check_config_file('LXC root file-system',
		  $root_dir . '/.root_fs',
		  12,
		  undef,
		  '^/var/lib/lxc\n$');
check_config_file('default network configuration',
		  $root_dir . '/conf/10-NET-default.conf',
		  200,
		  \&App::LXC::Container::Data::content_network_default,
		  '^lxc\.net\.0\.ipv4\.address = ');
check_config_file('default device configuration',
		  $root_dir . '/conf/20-DEV-default.conf',
		  120,
		  \&App::LXC::Container::Data::content_device_default,
		  '^lxc\.mount\.auto =( cgroup:ro| proc:mixed| sys:ro){3}$');
check_config_file('minimal default package configuration',
		  $root_dir . '/conf/30-PKG-default.packages',
		  160,
		  \&App::LXC::Container::Data::content_default_packages,
		  '^libc\b');
check_config_file('minimal network package configuration',
		  $root_dir . '/conf/31-PKG-network.packages',
		  100,
		  \&App::LXC::Container::Data::content_network_packages,
		  '^iproute2\b');
check_config_file('minimal default mount configuration',
		  $root_dir . '/conf/40-MNT-default.mounts',
		  300,
		  \&App::LXC::Container::Data::content_default_mounts,
		  '^/var/tmp\s+create=dir,rw\s+tmpfs$');
check_config_file('minimal network mount configuration',
		  $root_dir . '/conf/41-MNT-network.mounts',
		  120,
		  \&App::LXC::Container::Data::content_network_mounts,
		  '^/usr/share/ca-certificates\b');
check_config_file('minimal default filter configuration',
		  $root_dir . '/conf/50-NOT-default.filter',
		  600,
		  \&App::LXC::Container::Data::content_default_filter,
		  '^# common:$.*^/usr/lib\s+nomerge$.*'
		  . '^/var/backups\s+ignore$.*^/var/log\s+empty$');
check_config_file('minimal X11 package configuration',
		  $root_dir . '/conf/60-PKG-X11.packages',
		  100,
		  \&App::LXC::Container::Data::content_x11_packages,
		  '^fontconfig-config$');
check_config_file('minimal X11 mount configuration',
		  $root_dir . '/conf/61-MNT-X11.mounts',
		  200,
		  \&App::LXC::Container::Data::content_x11_mounts,
		  '^/usr/share/icons$');
check_config_file('minimal audio package configuration',
		  $root_dir . '/conf/70-PKG-audio.packages',
		  100,
		  \&App::LXC::Container::Data::content_audio_packages,
		  '^# list of mandatory packages needed for audio$');

#########################################################################
# re-runs:
stdout_like
{   _call_with_stdin
	(\@input,
	 sub { App::LXC::Container::Setup::_init_config_dir($dummy_obj); });
}
    qr{$re_dialog}ms,
    're-run with same directory did not fail';

$_ = fail_in_sub_perl(HOME_PATH, TMP_PATH, '1 3 home 0 2 2 2 2', 0);
like($_,
     qr{^can't link '.*/t/tmp/home/.lxc-configuration' to '.*/t/tmp/home': File exists at }m,
     'existing link should fail');

#########################################################################
# missing branches run during initialisation:
stderr_like
{
    my @output = ('');
    App::LXC::Container::Setup::_create_or_compare
	    ($root_dir . '/conf/20-DEV-default.conf', @output);
}
    qr{/conf/20-DEV-default.conf differs from the standard configuration:\n\@\@},
    'differences from standard are reported as errors';



( run in 1.165 second using v1.01-cache-2.11-cpan-5a3173703d6 )