X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fop%2Fpwent.t;h=fc71f574ad07a76a3b60daf6384a7c5d05ba9459;hb=a4c04bdcc508b6a45f83e703d0f82401445aa55b;hp=bb4b500fb428ad47b37b8fe6e9eaf0e1c8092f75;hpb=765e9edb2de192ef033766d867f9bd290e9935e9;p=p5sagit%2Fp5-mst-13.2.git diff --git a/t/op/pwent.t b/t/op/pwent.t index bb4b500..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,10 +68,20 @@ my $tst = 1; my %perfect; my %seen; +print "# where $where\n"; + +setpwent(); + while () { chomp; - my @s = split /:/; - my ($name_s, $passwd_s, $uid_s, $gid_s, $gcos_s, $home_s, $shell_s) = @s; + # 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); + 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} }, $.; @@ -86,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; @@ -109,7 +119,11 @@ while () { $n++; } -if (keys %perfect == 0) { +endpwent(); + +print "# max = $max, n = $n, perfect = ", scalar keys %perfect, "\n"; + +if (keys %perfect == 0 && $n) { $max++; print <