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.
- checksums.yaml +4 -4
- data/COPYING +56 -0
- data/ChangeLog +4 -4
- data/README.md +1 -0
- data/ext/etc/etc.c +62 -35
- data/ext/etc/extconf.rb +25 -24
- data/logs/ChangeLog-1.0.0 +65 -0
- data/logs/ChangeLog-1.0.1 +63 -0
- data/logs/ChangeLog-1.1.0 +143 -0
- data/logs/ChangeLog-1.2.0 +124 -0
- data/logs/ChangeLog-1.3.0 +83 -0
- data/logs/ChangeLog-1.3.1 +137 -0
- data/logs/ChangeLog-1.4.0 +65 -0
- data/logs/ChangeLog-1.4.1 +97 -0
- data/logs/ChangeLog-1.4.2 +22 -0
- data/logs/ChangeLog-1.4.3 +145 -0
- data/logs/ChangeLog-1.4.4 +149 -0
- data/logs/ChangeLog-1.4.5 +92 -0
- data/logs/ChangeLog-1.4.6 +396 -0
- data/test/etc/test_etc.rb +74 -9
- metadata +34 -9
- /data/{LICENSE.txt → BSDL} +0 -0
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
184
|
-
|
|
234
|
+
port << :sync
|
|
235
|
+
port << s.name
|
|
185
236
|
break :done
|
|
186
237
|
end
|
|
187
238
|
end
|
|
188
|
-
|
|
239
|
+
port.receive # => :sync
|
|
189
240
|
assert_raise RuntimeError, /parallel/ do
|
|
190
241
|
Etc.passwd {}
|
|
191
242
|
end
|
|
192
|
-
name =
|
|
193
|
-
ractor.
|
|
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
|
+
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:
|
|
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.
|
|
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.
|
|
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: []
|
/data/{LICENSE.txt → BSDL}
RENAMED
|
File without changes
|