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/