1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

process.c: fix rubyspec of Process.groups

getgroups(2) may return a GID list that includes duplicated GIDs.
The behavior is totaly depends on what OS is used.

This commit fixes the example of Process.groups so that the example
is independent of this OS-dependent features.

Additonaly, this commit adds the description of such system-dependent
characteristics of Process.groups.

[ruby-dev:50603] [Bug #14969]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64265 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
mrkn 2018-08-10 05:18:03 +00:00
parent 6c70fede0c
commit c0d1a46fc3
2 changed files with 15 additions and 2 deletions

View file

@ -6136,6 +6136,19 @@ maxgroups(void)
*
* Process.groups #=> [27, 6, 10, 11]
*
* Note that this method is just a wrapper of getgroups(2).
* This means that the following characteristics of
* the results are completely depends on your system:
*
* - the result is sorted
* - the result includes effective GIDs
* - the result does not include duplicated GIDs
*
* You can certainly get a sorted unique GID list of
* the current process by this expression:
*
* Process.groups.unique.sort
*
*/
static VALUE

View file

@ -6,8 +6,8 @@ describe "Process.groups" do
groups = `id -G`.scan(/\d+/).map { |i| i.to_i }
gid = Process.gid
expected = (groups.sort - [gid]).sort
actual = (Process.groups - [gid]).sort
expected = (groups.sort - [gid]).uniq.sort
actual = (Process.groups - [gid]).uniq.sort
actual.should == expected
end
end