From: "kosaki (Motohiro KOSAKI)" Date: 2012-08-04T15:51:06+09:00 Subject: [ruby-core:46979] [ruby-trunk - Bug #6831] test_getpwuid() on Mountain Lion Issue #6831 has been updated by kosaki (Motohiro KOSAKI). Is this right way to skip? diff --git a/test/etc/test_etc.rb b/test/etc/test_etc.rb index c4db71c..dafcdbb 100644 --- a/test/etc/test_etc.rb +++ b/test/etc/test_etc.rb @@ -29,7 +29,15 @@ class TestEtc < Test::Unit::TestCase def test_getpwuid passwd = {} - Etc.passwd {|s| passwd[s.uid] ||= s } + Etc.passwd {|s| + + # skip if passwd database has duplicated entry + # especially getpwent(3) on Mac OS X often return duplicated entry by default. + if passwd.has_key?(s.uid) + return + end + passwd[s.uid] ||= s\ + } passwd.each_value do |s| assert_equal(s, Etc.getpwuid(s.uid)) assert_equal(s, Etc.getpwuid) if Process.euid == s.uid ---------------------------------------- Bug #6831: test_getpwuid() on Mountain Lion https://bugs.ruby-lang.org/issues/6831#change-28637 Author: kosaki (Motohiro KOSAKI) Status: Assigned Priority: Normal Assignee: mrkn (Kenta Murata) Category: ext Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2012-08-04 trunk 36617) [x86_64-darwin12.0.0] When using Mountain Lion, following test failure occur. 1) Failure: test_getpwuid(TestEtc) [/ruby/git/test/etc/test_etc.rb:34]: <#> expected but was <#>. ------------------------------------------ getpwent() of Mountain Lion seems buggy. see below: test_getpwent.c ----------------------------------------- #include #include #include #include #include int main(void) { struct passwd *ent; while((ent = getpwent()) != NULL) { if (ent->pw_uid == 55) printf("%s:%d:%s\n", ent->pw_name, ent->pw_uid, ent->pw_gecos); } return 0; } result ---------------- _appleevents:55:AppleEvents Daemon _pcastagent:55:Podcast Producer Agent mrkn, what do you think? -- http://bugs.ruby-lang.org/