[前][次][番号順一覧][スレッド一覧]

ruby-changes:72325

From: Benoit <ko1@a...>
Date: Sun, 26 Jun 2022 21:51:22 +0900 (JST)
Subject: [ruby-changes:72325] d3d5ef0cca (master): Update to ruby/spec@ab32a1a

https://git.ruby-lang.org/ruby.git/commit/?id=d3d5ef0cca

From d3d5ef0cca160fca538c7f556c5a6e08df5847e6 Mon Sep 17 00:00:00 2001
From: Benoit Daloze <eregontp@g...>
Date: Sun, 26 Jun 2022 14:50:14 +0200
Subject: Update to ruby/spec@ab32a1a

---
 spec/ruby/.rubocop.yml                             |   3 +
 spec/ruby/.rubocop_todo.yml                        |  11 --
 spec/ruby/core/array/fill_spec.rb                  |   6 +
 spec/ruby/core/array/fixtures/classes.rb           |  62 +++++++++
 spec/ruby/core/array/sample_spec.rb                |  18 ++-
 spec/ruby/core/dir/foreach_spec.rb                 |  10 +-
 spec/ruby/core/exception/signal_exception_spec.rb  |   6 +-
 spec/ruby/core/file/open_spec.rb                   |   8 ++
 spec/ruby/core/float/divide_spec.rb                |   4 +
 spec/ruby/core/float/round_spec.rb                 |  64 +++++++++
 spec/ruby/core/integer/chr_spec.rb                 |  39 +++---
 spec/ruby/core/integer/fdiv_spec.rb                |   5 +
 spec/ruby/core/io/advise_spec.rb                   |  14 +-
 spec/ruby/core/io/fixtures/classes.rb              |  14 ++
 spec/ruby/core/io/gets_spec.rb                     |  14 ++
 spec/ruby/core/io/readline_spec.rb                 |  31 +++++
 spec/ruby/core/io/readlines_spec.rb                |  22 ++++
 spec/ruby/core/io/shared/each.rb                   |  48 +++++++
 spec/ruby/core/io/shared/readlines.rb              | 133 ++++++++++++-------
 .../ruby/core/kernel/instance_variable_get_spec.rb |   6 +
 .../ruby/core/kernel/instance_variable_set_spec.rb |   6 +
 .../core/kernel/remove_instance_variable_spec.rb   |  13 ++
 spec/ruby/core/kernel/shared/require.rb            |  19 +++
 spec/ruby/core/math/ldexp_spec.rb                  |   6 +
 spec/ruby/core/module/class_variables_spec.rb      |   8 ++
 spec/ruby/core/module/fixtures/classes.rb          |   4 +
 spec/ruby/core/process/clock_gettime_spec.rb       |  99 +++++++-------
 spec/ruby/core/process/egid_spec.rb                |  41 +++++-
 spec/ruby/core/process/euid_spec.rb                |  12 +-
 spec/ruby/core/process/spawn_spec.rb               |   2 +-
 spec/ruby/core/process/status/equal_value_spec.rb  |   2 +-
 spec/ruby/core/process/status/exited_spec.rb       |   2 +-
 spec/ruby/core/process/status/exitstatus_spec.rb   |   2 +-
 spec/ruby/core/process/status/signaled_spec.rb     |   2 +-
 spec/ruby/core/process/status/success_spec.rb      |   2 +-
 spec/ruby/core/process/status/termsig_spec.rb      |   4 +-
 spec/ruby/core/process/status/to_i_spec.rb         |   2 +-
 spec/ruby/core/regexp/shared/quote.rb              |   5 +
 spec/ruby/core/signal/trap_spec.rb                 |   4 +-
 spec/ruby/core/string/capitalize_spec.rb           |   4 +
 spec/ruby/core/string/dup_spec.rb                  |   9 ++
 spec/ruby/core/string/insert_spec.rb               |   9 ++
 spec/ruby/core/string/lstrip_spec.rb               |   6 +
 spec/ruby/core/string/rstrip_spec.rb               |   6 +
 spec/ruby/core/string/scrub_spec.rb                |   5 +
 spec/ruby/core/string/shared/slice.rb              |  14 +-
 spec/ruby/core/string/split_spec.rb                |  19 ++-
 spec/ruby/core/string/unpack/z_spec.rb             |   5 +
 spec/ruby/core/thread/raise_spec.rb                |  24 ++++
 spec/ruby/fixtures/code/c/load_fixture.rb          |   1 +
 spec/ruby/language/optional_assignments_spec.rb    |  38 ++++++
 spec/ruby/language/predefined_spec.rb              |  66 +++++++++-
 spec/ruby/language/variables_spec.rb               |  18 +++
 spec/ruby/language/yield_spec.rb                   |  10 ++
 .../objectspace/trace_object_allocations_spec.rb   |  18 +++
 spec/ruby/library/openssl/x509/name/verify_spec.rb |  78 +++++++++++
 spec/ruby/library/stringio/each_line_spec.rb       |   4 +
 spec/ruby/library/stringio/each_spec.rb            |   8 ++
 spec/ruby/library/stringio/gets_spec.rb            |   4 +
 spec/ruby/library/stringio/readline_spec.rb        |  20 +++
 spec/ruby/library/stringio/readlines_spec.rb       |  18 +++
 spec/ruby/library/stringio/shared/each.rb          |  37 ++++++
 spec/ruby/library/zlib/crc_table_spec.rb           | 143 +++++++++++----------
 spec/ruby/optional/capi/class_spec.rb              |  10 --
 spec/ruby/optional/capi/encoding_spec.rb           |  16 +--
 spec/ruby/optional/capi/ext/class_spec.c           |  15 ---
 spec/ruby/optional/capi/ext/encoding_spec.c        |   4 +-
 spec/ruby/optional/capi/ext/module_spec.c          |  56 ++++----
 spec/ruby/optional/capi/ext/object_spec.c          |   8 ++
 spec/ruby/optional/capi/ext/regexp_spec.c          |   7 +
 spec/ruby/optional/capi/module_spec.rb             |  30 +++--
 spec/ruby/optional/capi/object_spec.rb             |  25 ++++
 spec/ruby/optional/capi/regexp_spec.rb             |  16 +++
 spec/ruby/spec_helper.rb                           |   9 +-
 74 files changed, 1195 insertions(+), 318 deletions(-)
 create mode 100644 spec/ruby/fixtures/code/c/load_fixture.rb
 create mode 100644 spec/ruby/library/openssl/x509/name/verify_spec.rb

diff --git a/spec/ruby/.rubocop.yml b/spec/ruby/.rubocop.yml
index e807b59321..1200e9d7ce 100644
--- a/spec/ruby/.rubocop.yml
+++ b/spec/ruby/.rubocop.yml
@@ -99,6 +99,9 @@ Lint/DuplicateElsifCondition: https://github.com/ruby/ruby/blob/trunk/spec/ruby/.rubocop.yml#L99
 Lint/OutOfRangeRegexpRef:
   Enabled: false
 
+Lint/InheritException:
+  Enabled: false
+
 Lint/ElseLayout:
   Exclude:
     - 'language/if_spec.rb'
diff --git a/spec/ruby/.rubocop_todo.yml b/spec/ruby/.rubocop_todo.yml
index a469213841..ac9cfae2bf 100644
--- a/spec/ruby/.rubocop_todo.yml
+++ b/spec/ruby/.rubocop_todo.yml
@@ -50,17 +50,6 @@ Lint/IneffectiveAccessModifier: https://github.com/ruby/ruby/blob/trunk/spec/ruby/.rubocop_todo.yml#L50
     - 'core/module/fixtures/classes.rb'
     - 'language/fixtures/private.rb'
 
-# Offense count: 6
-# Cop supports --auto-correct.
-# Configuration parameters: EnforcedStyle.
-# SupportedStyles: runtime_error, standard_error
-Lint/InheritException:
-  Exclude:
-    - 'core/enumerator/lazy/fixtures/classes.rb'
-    - 'core/exception/fixtures/common.rb'
-    - 'core/module/fixtures/autoload_ex1.rb'
-    - 'shared/kernel/raise.rb'
-
 # Offense count: 72
 # Cop supports --auto-correct.
 Lint/LiteralInInterpolation:
diff --git a/spec/ruby/core/array/fill_spec.rb b/spec/ruby/core/array/fill_spec.rb
index 6369f23544..23728414be 100644
--- a/spec/ruby/core/array/fill_spec.rb
+++ b/spec/ruby/core/array/fill_spec.rb
@@ -205,6 +205,12 @@ describe "Array#fill with (filler, index, length)" do https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/array/fill_spec.rb#L205
     -> { [].fill('a', obj) }.should raise_error(TypeError)
   end
 
+  it "raises a TypeError when the length is not numeric" do
+    -> { [1, 2, 3].fill("x", 1, "foo") }.should raise_error(TypeError, /no implicit conversion of String into Integer/)
+    -> { [1, 2, 3].fill("x", 1, :"foo") }.should raise_error(TypeError, /no implicit conversion of Symbol into Integer/)
+    -> { [1, 2, 3].fill("x", 1, Object.new) }.should raise_error(TypeError, /no implicit conversion of Object into Integer/)
+  end
+
   not_supported_on :opal do
     it "raises an ArgumentError or RangeError for too-large sizes" do
       error_types = [RangeError, ArgumentError]
diff --git a/spec/ruby/core/array/fixtures/classes.rb b/spec/ruby/core/array/fixtures/classes.rb
index affb3b49e6..aa5fecd96b 100644
--- a/spec/ruby/core/array/fixtures/classes.rb
+++ b/spec/ruby/core/array/fixtures/classes.rb
@@ -40,6 +40,68 @@ module ArraySpecs https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/array/fixtures/classes.rb#L40
     a
   end
 
+  # Chi squared critical values for tests with n degrees of freedom at 99% confidence.
+  # Values obtained from NIST Engineering Statistic Handbook at
+  # https://www.itl.nist.gov/div898/handbook/eda/section3/eda3674.htm
+
+  CHI_SQUARED_CRITICAL_VALUES = [
+    0,
+    6.635, 9.210, 11.345, 13.277, 15.086, 16.812, 18.475, 20.090, 21.666, 23.209,
+    24.725, 26.217, 27.688, 29.141, 30.578, 32.000, 33.409, 34.805, 36.191, 37.566,
+    38.932, 40.289, 41.638, 42.980, 44.314, 45.642, 46.963, 48.278, 49.588, 50.892,
+    52.191, 53.486, 54.776, 56.061, 57.342, 58.619, 59.893, 61.162, 62.428, 63.691,
+    64.950, 66.206, 67.459, 68.710, 69.957, 71.201, 72.443, 73.683, 74.919, 76.154,
+    77.386, 78.616, 79.843, 81.069, 82.292, 83.513, 84.733, 85.950, 87.166, 88.379,
+    89.591, 90.802, 92.010, 93.217, 94.422, 95.626, 96.828, 98.028, 99.228, 100.425,
+    101.621, 102.816, 104.010, 105.202, 106.393, 107.583, 108.771, 109.958, 111.144, 112.329,
+    113.512, 114.695, 115.876, 117.057, 118.236, 119.414, 120.591, 121.767, 122.942, 124.116,
+    125.289, 126.462, 127.633, 128.803, 129.973, 131.141, 132.309, 133.476, 134.642, 135.807,
+      ]
+
+  def self.measure_sample_fairness(size, samples, iters)
+    ary = Array.new(size) { |x| x }
+    (samples).times do |i|
+      chi_results = []
+      3.times do
+        counts = Array.new(size) { 0 }
+        expected = iters / size
+        iters.times do
+          x = ary.sample(samples)[i]
+          counts[x] += 1
+        end
+        chi_squared = 0.0
+        counts.each do |count|
+          chi_squared += (((count - expected) ** 2) * 1.0 / expected)
+        end
+        chi_results << chi_squared
+        break if chi_squared <= CHI_SQUARED_CRITICAL_VALUES[size]
+      end
+
+      chi_results.min.should <= CHI_SQUARED_CRITICAL_VALUES[size]
+    end
+  end
+
+  def self.measure_sample_fairness_large_sample_size(size, samples, iters)
+    ary = Array.new(size) { |x| x }
+    counts = Array.new(size) { 0 }
+    expected = iters * samples / size
+    iters.times do
+      ary.sample(samples).each do |sample|
+        counts[sample] += 1
+      end
+    end
+    chi_squared = 0.0
+    counts.each do |count|
+      chi_squared += (((count - expected) ** 2) * 1.0 / expected)
+    end
+
+    # Chi squared critical values for tests with 4 degrees of freedom
+    # Values obtained from NIST Engine (... truncated)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]