diff --git a/spec/ruby/core/process/clock_gettime_spec.rb b/spec/ruby/core/process/clock_gettime_spec.rb index b690186ac3..56d75a04c9 100644 --- a/spec/ruby/core/process/clock_gettime_spec.rb +++ b/spec/ruby/core/process/clock_gettime_spec.rb @@ -2,13 +2,19 @@ require_relative '../../spec_helper' describe "Process.clock_gettime" do platform_is_not :windows do - Process.constants.select { |c| - c.to_s.start_with?('CLOCK_') && + invalid_clocks = [ # These require CAP_WAKE_ALARM and are not documented in clock_gettime(), # they return EINVAL if the permission is not granted. - c != :CLOCK_BOOTTIME_ALARM && - c != :CLOCK_REALTIME_ALARM - }.each do |c| + :CLOCK_BOOTTIME_ALARM, + :CLOCK_REALTIME_ALARM, + # These don't work on Solaris + :CLOCK_PROCESS_CPUTIME_ID, + :CLOCK_THREAD_CPUTIME_ID, + :CLOCK_VIRTUAL, + :CLOCK_PROF, + ] + + Process.constants.select { |c| c.to_s.start_with?('CLOCK_') && !invalid_clocks.include?(c) }.each do |c| it "can be called with Process::#{c}" do value = Process.const_get(c) Process.clock_gettime(value).should be_an_instance_of(Float)