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

Improve reliability of the Process.times spec

This commit is contained in:
Benoit Daloze 2020-03-28 14:39:01 +01:00
parent 6413a26b6c
commit 5806c54447

View file

@ -16,13 +16,21 @@ describe "Process.times" do
ruby_version_is "2.5" do ruby_version_is "2.5" do
platform_is_not :windows do platform_is_not :windows do
it "uses getrusage when available to improve precision beyond milliseconds" do it "uses getrusage when available to improve precision beyond milliseconds" do
times = 1000.times.map { Process.clock_gettime(:GETRUSAGE_BASED_CLOCK_PROCESS_CPUTIME_ID) } max = 10_000
if times.count { |t| !('%.6f' % t).end_with?('000') } == 0 has_getrusage = max.times.find do
time = Process.clock_gettime(:GETRUSAGE_BASED_CLOCK_PROCESS_CPUTIME_ID)
('%.6f' % time).end_with?('000')
end
unless has_getrusage
skip "getrusage is not supported on this environment" skip "getrusage is not supported on this environment"
end end
times = 1000.times.map { Process.times } found = (max * 10).times.find do
times.count { |t| !('%.6f' % t.utime).end_with?('000') }.should > 0 time = Process.times.utime
('%.6f' % time).end_with?('000')
end
found.should_not == nil
end end
end end
end end