/proc now works and tests properly

This commit is contained in:
Ryan Voots 2017-05-04 15:28:42 -07:00
parent 7447ddb7ff
commit 0b18ba9613
3 changed files with 9 additions and 5 deletions

View file

@ -50,12 +50,12 @@ our %EXPORT_TAGS = (
sub mount { sub mount {
my ($source, $target, $filesystem, $flags, $options_hr) = @_; my ($source, $target, $filesystem, $flags, $options_hr) = @_;
my $options_str; my $options_str = "";
if ($options_hr) { if ($options_hr) {
$options_str = join ',', map {"$_=".$options_hr->{$_}} keys %$options_hr; $options_str = join ',', map {"$_=".$options_hr->{$_}} keys %$options_hr;
} }
my $ret = _mount_sys($source, $target, $filesystem, $flags//0xc0ed0000, $options_str); my $ret = _mount_sys($source//"", $target//"", $filesystem//"", $flags//0xc0ed0000, $options_str);
if ($ret != 0) { if ($ret != 0) {
croak "mount failed: $ret $!"; croak "mount failed: $ret $!";

View file

@ -72,7 +72,7 @@ sub post_setup {
my $data = undef; my $data = undef;
$data = $self->private_tmp if (ref $self->private_tmp eq 'HASH'); $data = $self->private_tmp if (ref $self->private_tmp eq 'HASH');
mount("none", "/tmp", "tmpfs", 0, undef); mount("none", "/tmp", "tmpfs", MS_MGC_VAL, undef);
mount("none", "/tmp", "tmpfs", MS_PRIVATE, $data); mount("none", "/tmp", "tmpfs", MS_PRIVATE, $data);
} }
@ -104,14 +104,18 @@ sub run {
croak "Run must be given a codref to run" unless ref $code eq "CODE"; croak "Run must be given a codref to run" unless ref $code eq "CODE";
$self->_subprocess(sub { $self->_subprocess(sub {
$self->setup(%args); $self->pre_setup(%args);
my $uflags = $self->_uflags;
unshare($uflags);
# We've just unshared, if we wanted a private pid space we MUST fork again. # We've just unshared, if we wanted a private pid space we MUST fork again.
if ($self->private_pid) { if ($self->private_pid) {
$self->_subprocess(sub { $self->_subprocess(sub {
$self->post_setup(%args);
$code->(%args); $code->(%args);
}, %args); }, %args);
} else { } else {
$self->setup(%args);
$code->(%args); $code->(%args);
} }
}, %args); }, %args);

View file

@ -6,7 +6,7 @@ use Test::More;
use Test::SharedFork; use Test::SharedFork;
# test 1 # test 1
use_ok("Sys::Linux::Namespace"); use Sys::Linux::Namespace;
# test 2 # test 2
SKIP: { SKIP: {