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

ruby-changes:69971

From: Benoit <ko1@a...>
Date: Mon, 29 Nov 2021 23:51:10 +0900 (JST)
Subject: [ruby-changes:69971] 67a1e22589 (master): Update to ruby/spec@7f22a0b

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

From 67a1e2258974df4b597d019739595c18fbb9a7c1 Mon Sep 17 00:00:00 2001
From: Benoit Daloze <eregontp@g...>
Date: Mon, 29 Nov 2021 15:50:28 +0100
Subject: Update to ruby/spec@7f22a0b

---
 spec/ruby/core/array/shared/slice.rb               | 24 ++++++++
 spec/ruby/core/dir/shared/glob.rb                  | 22 ++++++--
 spec/ruby/core/encoding/compatible_spec.rb         |  2 +-
 spec/ruby/core/encoding/converter/putback_spec.rb  | 13 ++++-
 spec/ruby/core/enumerable/grep_spec.rb             | 12 ++++
 spec/ruby/core/enumerable/grep_v_spec.rb           | 12 ++++
 .../enumerator/arithmetic_sequence/begin_spec.rb   |  9 +++
 .../enumerator/arithmetic_sequence/end_spec.rb     |  7 +++
 spec/ruby/core/exception/errno_spec.rb             |  9 +++
 spec/ruby/core/gc/auto_compact_spec.rb             |  5 ++
 spec/ruby/core/gc/measure_total_time_spec.rb       | 19 +++++++
 spec/ruby/core/gc/stat_spec.rb                     | 18 ++++++
 spec/ruby/core/gc/total_time_spec.rb               | 15 +++++
 spec/ruby/core/integer/plus_spec.rb                | 15 +++++
 spec/ruby/core/kernel/clone_spec.rb                | 36 +++++++++++-
 spec/ruby/core/kernel/fixtures/classes.rb          |  7 ++-
 spec/ruby/core/kernel/initialize_clone_spec.rb     | 28 ++++++++++
 spec/ruby/core/kernel/initialize_dup_spec.rb       | 20 +++++++
 spec/ruby/core/kernel/instance_variables_spec.rb   | 11 ++++
 spec/ruby/core/kernel/print_spec.rb                | 12 ++++
 spec/ruby/core/kernel/warn_spec.rb                 | 64 ++++++++++++++++++++++
 spec/ruby/core/matchdata/captures_spec.rb          |  8 +++
 spec/ruby/core/matchdata/element_reference_spec.rb |  8 +++
 spec/ruby/core/matchdata/fixtures/classes.rb       |  3 +
 spec/ruby/core/matchdata/post_match_spec.rb        |  8 +++
 spec/ruby/core/matchdata/pre_match_spec.rb         |  8 +++
 spec/ruby/core/matchdata/to_a_spec.rb              |  8 +++
 spec/ruby/core/matchdata/to_s_spec.rb              |  8 +++
 spec/ruby/core/numeric/clone_spec.rb               |  7 +++
 spec/ruby/core/numeric/quo_spec.rb                 |  9 +++
 spec/ruby/core/range/step_spec.rb                  | 26 +++++++++
 .../ruby/core/string/each_grapheme_cluster_spec.rb |  8 +++
 spec/ruby/core/string/force_encoding_spec.rb       |  2 +-
 spec/ruby/core/string/scan_spec.rb                 |  8 +++
 spec/ruby/core/string/scrub_spec.rb                |  4 +-
 spec/ruby/core/string/shared/eql.rb                |  2 +-
 spec/ruby/core/string/shared/length.rb             | 16 ++++++
 spec/ruby/core/string/valid_encoding_spec.rb       |  8 +--
 spec/ruby/core/warning/element_reference_spec.rb   |  6 ++
 spec/ruby/core/warning/element_set_spec.rb         |  6 ++
 spec/ruby/core/warning/warn_spec.rb                |  3 +-
 spec/ruby/language/class_variable_spec.rb          |  6 ++
 spec/ruby/language/regexp/encoding_spec.rb         | 17 ++++++
 spec/ruby/library/fiber/resume_spec.rb             | 12 ++++
 .../element/each_element_with_attribute_spec.rb    | 18 +++---
 .../rexml/element/each_element_with_text_spec.rb   |  4 +-
 spec/ruby/library/rexml/element/has_text_spec.rb   |  2 +-
 spec/ruby/library/rexml/node/parent_spec.rb        |  2 +-
 spec/ruby/library/rexml/shared/elements_to_a.rb    |  2 +-
 spec/ruby/library/stringio/ungetbyte_spec.rb       |  2 +-
 .../ruby/library/stringscanner/check_until_spec.rb |  6 ++
 spec/ruby/library/stringscanner/exist_spec.rb      |  6 ++
 .../library/stringscanner/matched_size_spec.rb     | 21 ++++++-
 spec/ruby/library/stringscanner/scan_until_spec.rb |  6 ++
 .../ruby/library/stringscanner/search_full_spec.rb |  6 ++
 .../library/stringscanner/shared/matched_size.rb   | 21 -------
 spec/ruby/library/stringscanner/size_spec.rb       | 17 ++++++
 spec/ruby/library/stringscanner/skip_until_spec.rb |  6 ++
 spec/ruby/optional/capi/class_spec.rb              |  5 +-
 spec/ruby/optional/capi/ext/string_spec.c          | 10 ++++
 spec/ruby/optional/capi/fixtures/class.rb          |  3 +
 spec/ruby/optional/capi/string_spec.rb             | 27 +++++++++
 62 files changed, 656 insertions(+), 59 deletions(-)
 create mode 100644 spec/ruby/core/gc/measure_total_time_spec.rb
 create mode 100644 spec/ruby/core/gc/total_time_spec.rb
 create mode 100644 spec/ruby/core/kernel/initialize_clone_spec.rb
 create mode 100644 spec/ruby/core/kernel/initialize_dup_spec.rb
 create mode 100644 spec/ruby/core/matchdata/fixtures/classes.rb
 delete mode 100644 spec/ruby/library/stringscanner/shared/matched_size.rb
 create mode 100644 spec/ruby/library/stringscanner/size_spec.rb

diff --git a/spec/ruby/core/array/shared/slice.rb b/spec/ruby/core/array/shared/slice.rb
index cf195ad7a46..540a050130c 100644
--- a/spec/ruby/core/array/shared/slice.rb
+++ b/spec/ruby/core/array/shared/slice.rb
@@ -743,6 +743,30 @@ describe :array_slice, shared: true do https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/array/shared/slice.rb#L743
         @array.send(@method, eval("(-2..-4).step(10)")).should == []
         @array.send(@method, eval("(-2...-4).step(10)")).should == []
       end
+
+      it "has range with bounds outside of array" do
+        # end is equal to array's length
+        @array.send(@method, (0..6).step(1)).should == [0, 1, 2, 3, 4, 5]
+        -> { @array.send(@method, (0..6).step(2)) }.should raise_error(RangeError)
+
+        # end is greater than length with positive steps
+        @array.send(@method, (1..6).step(2)).should == [1, 3, 5]
+        @array.send(@method, (2..7).step(2)).should == [2, 4]
+        -> { @array.send(@method, (2..8).step(2)) }.should raise_error(RangeError)
+
+        # begin is greater than length with negative steps
+        @array.send(@method, (6..1).step(-2)).should == [5, 3, 1]
+        @array.send(@method, (7..2).step(-2)).should == [5, 3]
+        -> { @array.send(@method, (8..2).step(-2)) }.should raise_error(RangeError)
+      end
+
+      it "has endless range with start outside of array's bounds" do
+        @array.send(@method, eval("(6..).step(1)")).should == []
+        @array.send(@method, eval("(7..).step(1)")).should == nil
+
+        @array.send(@method, eval("(6..).step(2)")).should == []
+        -> { @array.send(@method, eval("(7..).step(2)")) }.should raise_error(RangeError)
+      end
     end
   end
 
diff --git a/spec/ruby/core/dir/shared/glob.rb b/spec/ruby/core/dir/shared/glob.rb
index 69fb0f0a012..a38ff8aa68b 100644
--- a/spec/ruby/core/dir/shared/glob.rb
+++ b/spec/ruby/core/dir/shared/glob.rb
@@ -55,12 +55,24 @@ describe :dir_glob, shared: true do https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/dir/shared/glob.rb#L55
     end
   end
 
+  ruby_version_is "3.0"..."3.1" do
+    it "result is sorted with any non false value of sort:" do
+      result = Dir.send(@method, '*', sort: 0)
+      result.should == result.sort
+
+      result = Dir.send(@method, '*', sort: nil)
+      result.should == result.sort
+
+      result = Dir.send(@method, '*', sort: 'false')
+      result.should == result.sort
+    end
+  end
+
   ruby_version_is "3.1" do
-    it "true or false is expected as sort:" do
-      -> {Dir.send(@method, '*', sort: nil)}.should raise_error ArgumentError, /true or false/
-      -> {Dir.send(@method, '*', sort: 0)}.should raise_error ArgumentError, /true or false/
-      -> {Dir.send(@method, '*', sort: "")}.should raise_error ArgumentError, /true or false/
-      -> {Dir.send(@method, '*', sort: Object.new)}.should raise_error ArgumentError, /true or false/
+    it "raises an ArgumentError if sort: is not true or false" do
+      -> { Dir.send(@method, '*', sort: 0) }.should raise_error ArgumentError, /expected true or false/
+      -> { Dir.send(@method, '*', sort: nil) }.should raise_error ArgumentError, /expected true or false/
+      -> { Dir.send(@method, '*', sort: 'false') }.should raise_error ArgumentError, /expected true or false/
     end
   end
 
diff --git a/spec/ruby/core/encoding/compatible_spec.rb b/spec/ruby/core/encoding/compatible_spec.rb
index dc47a6553a8..80ecab61558 100644
--- a/spec/ruby/core/encoding/compatible_spec.rb
+++ b/spec/ruby/core/encoding/compatible_spec.rb
@@ -54,7 +54,7 @@ describe "Encoding.compatible? String, String" do https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/encoding/compatible_spec.rb#L54
 
     it "returns nil if the second's Encoding is not ASCII compatible" do
       a = "abc".force_encoding("UTF-8")
-      b = "123".force_encoding("UTF-16LE")
+      b = "1234".force_encoding("UTF-16LE")
       Encoding.compatible?(a, b).should be_nil
     end
   end
diff --git a/spec/ruby/core/encoding/converter/putback_spec.rb b/spec/ruby/core/encoding/converter/putback_spec.rb
index 87495eaf3f1..c4e0a5da213 100644
--- a/spec/ruby/core/encoding/converter/putback_spec.rb
+++ b/spec/ruby/core/encoding/converter/putback_spec.rb
@@ -34,14 +34,23 @@ describe "Encoding::Converter#putback" do https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/encoding/converter/putback_spec.rb#L34
     @ec.putback.should == ""
   end
 
+  it "returns the problematic bytes for UTF-16LE" do
+    ec = Encoding::Converter.new("utf-16le", "iso-8859-1")
+    src = "\x00\xd8\x61\x00"
+    dst = ""
+    ec.primitive_convert(src, dst).should == :invalid_byte_sequence
+    ec.primitive_errinfo.should == [:invalid_byte_sequence, "UTF-16LE", "UTF-8", "\x00\xD8", "a\x00"]
+    ec.putback.should == "a\x00".force_encoding("utf-16le")
+    ec.putback.should == ""
+  end
+
   it "accepts an integer argument corresponding to the number of bytes to be put back" do
     ec = Encoding::Converter.new("utf-16le", "iso-8859-1")
     src = "\x00\xd8\x61\x00"
     dst = ""
     ec.primitive_convert(src, dst).should == :invalid_byte_sequence
     ec.primitive_errinfo.should == [:invalid_byte_sequence, "UTF-16LE", "UTF-8", "\x00\xD8", "a\x00"]
-    ec.putback(1).should == "\x00".force_encoding("utf-16le")
-    ec.putback.should == "a".force_encoding("utf-16le")
+    ec.putback(2).should == "a\x00".force_encoding("utf-16le")
     ec. (... truncated)

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

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