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.407 second using v1.01-cache-2.11-cpan-4ee56698ea0 )