Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

test_etc.rb: fix for non unique GID

* test/etc/test_etc.rb (TestEtc#test_getgrgid): fix for non unique GID.
  No unixen systems guarantee that GID is unique. Etc.getgrgid would
  not return the first entry in the order of Etc.group for shared GID.
  [ruby-core:47312] [Bug #6935]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36833 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  • Loading branch information...
commit a5849245c6ffb31053ab75ab2e36163674ca7c81 1 parent 0b89d6d
@shirosaki shirosaki authored
Showing with 18 additions and 6 deletions.
  1. +7 −0 ChangeLog
  2. +11 −6 test/etc/test_etc.rb
View
7 ChangeLog
@@ -1,3 +1,10 @@
+Mon Aug 27 20:19:49 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
+
+ * test/etc/test_etc.rb (TestEtc#test_getgrgid): fix for non unique GID.
+ No unixen systems guarantee that GID is unique. Etc.getgrgid would
+ not return the first entry in the order of Etc.group for shared GID.
+ [ruby-core:47312] [Bug #6935]
+
Mon Aug 27 18:19:36 2012 Koichi Sasada <ko1@atdot.net>
* include/ruby/ruby.h (rb_float_value): optimize it.
View
17 test/etc/test_etc.rb
@@ -76,13 +76,18 @@ def test_group
end
def test_getgrgid
- groups = {}
- Etc.group do |s|
- groups[s.gid] ||= s
+ # group database is not unique on GID, and which entry will be
+ # returned by getgrgid() is not specified.
+ groups = Hash.new {[]}
+ # on MacOSX, same entries are returned from /etc/group and Open
+ # Directory.
+ Etc.group {|s| groups[s.gid] |= [s]}
+ groups.each_pair do |gid, s|
+ assert_include(s, Etc.getgrgid(gid))
end
- groups.each_value do |s|
- assert_equal(s, Etc.getgrgid(s.gid))
- assert_equal(s, Etc.getgrgid) if Process.egid == s.gid
+ s = groups[Process.egid]
+ unless s.empty?
+ assert_include(s, Etc.getgrgid)
end
end
Please sign in to comment.
Something went wrong with that request. Please try again.