ruby-changes:55588
From: Benoit <ko1@a...>
Date: Sun, 28 Apr 2019 21:55:49 +0900 (JST)
Subject: [ruby-changes:55588] Benoit Daloze:9a0dbb3414 (trunk): Skip problematic Process.clock_getres specs on ARM
https://git.ruby-lang.org/ruby.git/commit/?id=9a0dbb3414 From 9a0dbb341442fc0d203a5cd6fb46250e429e9188 Mon Sep 17 00:00:00 2001 From: Benoit Daloze <eregontp@g...> Date: Sun, 28 Apr 2019 14:52:55 +0200 Subject: Skip problematic Process.clock_getres specs on ARM * https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-9d6766/ruby-trunk/log/20190428T051708Z.fail.html.gz * https://rubyci.org/logs/rubyci.s3.amazonaws.com/scw-ad7f67/ruby-trunk/log/20190428T045405Z.fail.html.gz diff --git a/spec/ruby/core/process/clock_getres_spec.rb b/spec/ruby/core/process/clock_getres_spec.rb index 5e5eb02..3ebd012 100644 --- a/spec/ruby/core/process/clock_getres_spec.rb +++ b/spec/ruby/core/process/clock_getres_spec.rb @@ -3,7 +3,7 @@ require_relative 'fixtures/clocks' https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/process/clock_getres_spec.rb#L3 describe "Process.clock_getres" do platform_is_not :freebsd do # clock_getres() seems incorrect on FreeBSD - ProcessSpecs.clock_constants.each do |name, value| + ProcessSpecs.clock_constants_for_resolution_checks.each do |name, value| it "matches the clock in practice for Process::#{name}" do times = [] 10_000.times do diff --git a/spec/ruby/core/process/fixtures/clocks.rb b/spec/ruby/core/process/fixtures/clocks.rb index 5d6edeb..c8f81fa 100644 --- a/spec/ruby/core/process/fixtures/clocks.rb +++ b/spec/ruby/core/process/fixtures/clocks.rb @@ -9,14 +9,28 @@ module ProcessSpecs https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/process/fixtures/clocks.rb#L9 # Process#clock_gettime. They return EINVAL if the permission # is not granted. clocks -= [:CLOCK_BOOTTIME_ALARM, :CLOCK_REALTIME_ALARM] - - # These clocks in practice on Linux do not seem to match - # their reported resolution. - clocks -= [:CLOCK_REALTIME_COARSE, :CLOCK_MONOTONIC_COARSE] end clocks.map { |c| [c, Process.const_get(c)] } end + + def self.clock_constants_for_resolution_checks + clocks = clock_constants + + # These clocks in practice on Linux do not seem to match their reported resolution. + clocks = clocks.reject { |clock, value| + [:CLOCK_REALTIME_COARSE, :CLOCK_MONOTONIC_COARSE].include?(clock) + } + + # These clocks in practice on ARM on Linux do not seem to match their reported resolution. + platform_is :armv7l, :aarch64 do + clocks = clocks.reject { |clock, value| + [:CLOCK_PROCESS_CPUTIME_ID, :CLOCK_THREAD_CPUTIME_ID, :CLOCK_MONOTONIC_RAW].include?(clock) + } + end + + clocks + end end -- cgit v0.10.2 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/