etc 1.4.5 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/test/etc/test_etc.rb CHANGED
@@ -21,7 +21,7 @@ class TestEtc < Test::Unit::TestCase
21
21
  assert_instance_of(String, s.shell)
22
22
  assert_kind_of(Integer, s.change) if s.respond_to?(:change)
23
23
  assert_kind_of(Integer, s.quota) if s.respond_to?(:quota)
24
- assert(s.age.is_a?(Integer) || s.age.is_a?(String)) if s.respond_to?(:age)
24
+ assert(s.age.is_a?(Integer) || s.age.is_a?(String), s.age) if s.respond_to?(:age)
25
25
  assert_instance_of(String, s.uclass) if s.respond_to?(:uclass)
26
26
  assert_instance_of(String, s.comment) if s.respond_to?(:comment)
27
27
  assert_kind_of(Integer, s.expire) if s.respond_to?(:expire)
@@ -131,6 +131,11 @@ class TestEtc < Test::Unit::TestCase
131
131
  }
132
132
  end
133
133
 
134
+ def test_uname_release_on_windows
135
+ release = IO.popen(%w[cmd.exe /c ver], "rb", &:read)[/\d+\.\d+\.\d+/]
136
+ assert_equal(release, Etc.uname[:release])
137
+ end if /mswin|mingw/ =~ RUBY_PLATFORM
138
+
134
139
  def test_sysconf
135
140
  begin
136
141
  Etc.sysconf
@@ -160,41 +165,101 @@ class TestEtc < Test::Unit::TestCase
160
165
  end
161
166
  IO.pipe {|r, w|
162
167
  val = w.pathconf(Etc::PC_PIPE_BUF)
163
- assert(val.nil? || val.kind_of?(Integer))
168
+ assert_kind_of(Integer, val) if val
164
169
  }
165
170
  end if defined?(Etc::PC_PIPE_BUF)
166
171
 
167
172
  def test_nprocessors
168
173
  n = Etc.nprocessors
169
174
  assert_operator(1, :<=, n)
175
+ if /mswin|mingw/ =~ RUBY_PLATFORM
176
+ assert_operator(Integer(ENV.fetch("NUMBER_OF_PROCESSORS")), :<=, n)
177
+ end
170
178
  end
171
179
 
172
180
  def test_sysconfdir
173
181
  assert_operator(File, :absolute_path?, Etc.sysconfdir)
174
182
  end if File.method_defined?(:absolute_path?)
175
183
 
176
- def test_ractor
184
+ # All Ractor-safe methods should be tested here
185
+ def test_ractor_parallel
186
+ omit "This test is flaky and intermittently failing now on ModGC workflow" if ENV['GITHUB_WORKFLOW'] == 'ModGC'
187
+
188
+ assert_ractor(<<~RUBY, require: 'etc', timeout: 60)
189
+ 10.times.map do
190
+ Ractor.new do
191
+ 100.times do
192
+ raise unless String === Etc.systmpdir
193
+ raise unless Hash === Etc.uname
194
+ if defined?(Etc::SC_CLK_TCK)
195
+ raise unless Integer === Etc.sysconf(Etc::SC_CLK_TCK)
196
+ end
197
+ if defined?(Etc::CS_PATH)
198
+ raise unless String === Etc.confstr(Etc::CS_PATH)
199
+ end
200
+ if defined?(Etc::PC_PIPE_BUF)
201
+ IO.pipe { |r, w|
202
+ val = w.pathconf(Etc::PC_PIPE_BUF)
203
+ raise unless val.nil? || val.kind_of?(Integer)
204
+ }
205
+ end
206
+ raise unless Integer === Etc.nprocessors
207
+ end
208
+ end
209
+ end.each(&:join)
210
+ RUBY
211
+ end
212
+
213
+ def test_ractor_unsafe
214
+ assert_ractor(<<~RUBY, require: 'etc')
215
+ r = Ractor.new do
216
+ begin
217
+ Etc.passwd
218
+ rescue => e
219
+ e.class
220
+ end
221
+ end.value
222
+ assert_equal Ractor::UnsafeError, r
223
+ RUBY
224
+ end
225
+
226
+ def test_ractor_passwd
227
+ omit("https://bugs.ruby-lang.org/issues/21115")
177
228
  return unless Etc.passwd # => skip test if no platform support
178
229
  Etc.endpwent
179
230
 
180
231
  assert_ractor(<<~RUBY, require: 'etc')
181
- ractor = Ractor.new do
232
+ ractor = Ractor.new port = Ractor::Port.new do |port|
182
233
  Etc.passwd do |s|
183
- Ractor.yield :sync
184
- Ractor.yield s.name
234
+ port << :sync
235
+ port << s.name
185
236
  break :done
186
237
  end
187
238
  end
188
- ractor.take # => :sync
239
+ port.receive # => :sync
189
240
  assert_raise RuntimeError, /parallel/ do
190
241
  Etc.passwd {}
191
242
  end
192
- name = ractor.take # => first name
193
- ractor.take # => :done
243
+ name = port.receive # => first name
244
+ ractor.join # => :done
194
245
  name2 = Etc.passwd do |s|
195
246
  break s.name
196
247
  end
197
248
  assert_equal(name2, name)
198
249
  RUBY
199
250
  end
251
+
252
+ def test_ractor_getgrgid
253
+ omit("https://bugs.ruby-lang.org/issues/21115")
254
+
255
+ assert_ractor(<<~RUBY, require: 'etc')
256
+ 20.times.map do
257
+ Ractor.new do
258
+ 1000.times do
259
+ raise unless Etc.getgrgid(Process.gid).gid == Process.gid
260
+ end
261
+ end
262
+ end.each(&:join)
263
+ RUBY
264
+ end
200
265
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: etc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.5
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yukihiro Matsumoto
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-12-03 00:00:00.000000000 Z
10
+ date: 2026-10-08 00:00:00.000000000 Z
12
11
  dependencies: []
13
12
  description: Provides access to information typically stored in UNIX /etc directory.
14
13
  email:
@@ -17,29 +16,56 @@ executables: []
17
16
  extensions:
18
17
  - ext/etc/extconf.rb
19
18
  extra_rdoc_files:
19
+ - BSDL
20
+ - COPYING
20
21
  - ChangeLog
21
- - LICENSE.txt
22
22
  - README.md
23
23
  - ext/etc/constdefs.h
24
24
  - ext/etc/etc.c
25
25
  - ext/etc/extconf.rb
26
26
  - ext/etc/mkconstants.rb
27
+ - logs/ChangeLog-1.0.0
28
+ - logs/ChangeLog-1.0.1
29
+ - logs/ChangeLog-1.1.0
30
+ - logs/ChangeLog-1.2.0
31
+ - logs/ChangeLog-1.3.0
32
+ - logs/ChangeLog-1.3.1
33
+ - logs/ChangeLog-1.4.0
34
+ - logs/ChangeLog-1.4.1
35
+ - logs/ChangeLog-1.4.2
36
+ - logs/ChangeLog-1.4.3
37
+ - logs/ChangeLog-1.4.4
38
+ - logs/ChangeLog-1.4.5
39
+ - logs/ChangeLog-1.4.6
27
40
  - test/etc/test_etc.rb
28
41
  files:
42
+ - BSDL
43
+ - COPYING
29
44
  - ChangeLog
30
- - LICENSE.txt
31
45
  - README.md
32
46
  - ext/etc/constdefs.h
33
47
  - ext/etc/etc.c
34
48
  - ext/etc/extconf.rb
35
49
  - ext/etc/mkconstants.rb
50
+ - logs/ChangeLog-1.0.0
51
+ - logs/ChangeLog-1.0.1
52
+ - logs/ChangeLog-1.1.0
53
+ - logs/ChangeLog-1.2.0
54
+ - logs/ChangeLog-1.3.0
55
+ - logs/ChangeLog-1.3.1
56
+ - logs/ChangeLog-1.4.0
57
+ - logs/ChangeLog-1.4.1
58
+ - logs/ChangeLog-1.4.2
59
+ - logs/ChangeLog-1.4.3
60
+ - logs/ChangeLog-1.4.4
61
+ - logs/ChangeLog-1.4.5
62
+ - logs/ChangeLog-1.4.6
36
63
  - test/etc/test_etc.rb
37
64
  homepage: https://github.com/ruby/etc
38
65
  licenses:
39
66
  - Ruby
40
67
  - BSD-2-Clause
41
68
  metadata: {}
42
- post_install_message:
43
69
  rdoc_options:
44
70
  - "--main"
45
71
  - README.md
@@ -49,15 +75,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
49
75
  requirements:
50
76
  - - ">="
51
77
  - !ruby/object:Gem::Version
52
- version: 2.6.0
78
+ version: 2.7.0
53
79
  required_rubygems_version: !ruby/object:Gem::Requirement
54
80
  requirements:
55
81
  - - ">="
56
82
  - !ruby/object:Gem::Version
57
83
  version: '0'
58
84
  requirements: []
59
- rubygems_version: 3.5.11
60
- signing_key:
85
+ rubygems_version: 3.6.9
61
86
  specification_version: 4
62
87
  summary: Provides access to information typically stored in UNIX /etc directory.
63
88
  test_files: []
File without changes