Sys-Export
view release on metacpan or search on metacpan
lib/Sys/Export/Unix/UserDB.pm view on Meta::CPAN
sub user($self, $spec) {
length $spec or return undef;
my $u= isa_int $spec? $self->{uids}{$spec} : $self->{users}{$spec};
if (!$u && $self->auto_import) {
if (isa_userdb $self->auto_import) {
my $peer_u= $self->auto_import->user($spec) // return undef;
$u= eval { $self->import_user($peer_u) } or warn $@;
} else {
my $name= isa_int $spec? (getpwuid($spec) // return undef) : $spec;
$u= eval { $self->import_user($name) } or warn $@;
}
}
$u;
}
sub has_user($self, $spec) {
defined(isa_int $spec? $self->{uids}{$spec} : $self->{users}{$spec});
}
t/03-userdb.t view on Meta::CPAN
is( slurp(catfile($save_dir, 'passwd')), $passwd_data, 'passwd' );
is( slurp(catfile($save_dir, 'group')), $group_data, 'group' );
is( slurp(catfile($save_dir, 'shadow')), $shadow_data, 'shadow' );
};
subtest 'auto import from host' => sub {
my ($user0, $group0);
# presume every host has a 'root' user and group
# This always throws an exception on Win32 "The getpwman function is unimplemented"
unless (eval {
$user0= getpwuid 0;
$group0= getgrgid 0;
0 == (getpwnam($user0)//-1) && 0 == (getgrnam($group0)//-1)
}) {
note "error checking uid/gid 0: $@";
skip_all "This host doesn't have a root user?";
}
my $db = Sys::Export::Unix::UserDB->new(auto_import => 1);
is( $db->user($user0),
object {
( run in 0.456 second using v1.01-cache-2.11-cpan-4ee56698ea0 )