X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fop%2Fpwent.t;h=fc71f574ad07a76a3b60daf6384a7c5d05ba9459;hb=a4c04bdcc508b6a45f83e703d0f82401445aa55b;hp=c09d7c240586089a258567f81f74f3b0400d7816;hpb=a941e390df32e52f20b358866941870e9b6bfc90;p=p5sagit%2Fp5-mst-13.2.git diff --git a/t/op/pwent.t b/t/op/pwent.t index c09d7c2..fc71f57 100755 --- a/t/op/pwent.t +++ b/t/op/pwent.t @@ -2,8 +2,8 @@ BEGIN { chdir 't' if -d 't'; - unshift @INC, "../lib" if -d "../lib"; - eval {my @n = getpwuid 0}; + @INC = '../lib'; + eval {my @n = getpwuid 0; setpwent()}; if ($@ && $@ =~ /(The \w+ function is unimplemented)/) { print "1..0 # Skip: $1\n"; exit 0; @@ -68,12 +68,20 @@ my $tst = 1; my %perfect; my %seen; +print "# where $where\n"; + setpwent(); + while () { chomp; # LIMIT -1 so that users with empty shells don't fall off my @s = split /:/, $_, -1; - my ($name_s, $passwd_s, $uid_s, $gid_s, $gcos_s, $home_s, $shell_s) = @s; + my ($name_s, $passwd_s, $uid_s, $gid_s, $gcos_s, $home_s, $shell_s); + if ($^O eq 'darwin') { + ($name_s, $passwd_s, $uid_s, $gid_s, $gcos_s, $home_s, $shell_s) = @s[0,1,2,3,7,8,9]; + } else { + ($name_s, $passwd_s, $uid_s, $gid_s, $gcos_s, $home_s, $shell_s) = @s; + } next if /^\+/; # ignore NIS includes if (@s) { push @{ $seen{$name_s} }, $.; @@ -88,7 +96,7 @@ while () { } # In principle we could whine if @s != 7 but do we know enough # of passwd file formats everywhere? - if (@s == 7) { + if (@s == 7 || ($^O eq 'darwin' && @s == 10)) { @n = getpwuid($uid_s); # 'nobody' et al. next unless @n; @@ -110,9 +118,12 @@ while () { } $n++; } + endpwent(); -if (keys %perfect == 0) { +print "# max = $max, n = $n, perfect = ", scalar keys %perfect, "\n"; + +if (keys %perfect == 0 && $n) { $max++; print <