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

ruby-changes:63599

From: Benoit <ko1@a...>
Date: Fri, 13 Nov 2020 21:18:29 +0900 (JST)
Subject: [ruby-changes:63599] 6d05967468 (master): Update to ruby/spec@b0b7f53

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

From 6d05967468ea58ba481259718f07b3cb5a386945 Mon Sep 17 00:00:00 2001
From: Benoit Daloze <eregontp@g...>
Date: Fri, 13 Nov 2020 13:17:24 +0100
Subject: Update to ruby/spec@b0b7f53


diff --git a/spec/ruby/.rubocop.yml b/spec/ruby/.rubocop.yml
index 5db9256..a26b525 100644
--- a/spec/ruby/.rubocop.yml
+++ b/spec/ruby/.rubocop.yml
@@ -113,6 +113,9 @@ Lint/Debugger: https://github.com/ruby/ruby/blob/trunk/spec/ruby/.rubocop.yml#L113
   Exclude:
     - 'core/binding/fixtures/irb.rb'
 
+Lint/Loop:
+  Enabled: false
+
 Style/Lambda:
   Enabled: true
   EnforcedStyle: literal
diff --git a/spec/ruby/.rubocop_todo.yml b/spec/ruby/.rubocop_todo.yml
index 7a5f9f7..a469213 100644
--- a/spec/ruby/.rubocop_todo.yml
+++ b/spec/ruby/.rubocop_todo.yml
@@ -76,12 +76,6 @@ Lint/LiteralInInterpolation: https://github.com/ruby/ruby/blob/trunk/spec/ruby/.rubocop_todo.yml#L76
     - 'language/undef_spec.rb'
     - 'library/net/ftp/connect_spec.rb'
 
-# Offense count: 16
-Lint/Loop:
-  Exclude:
-    - 'language/until_spec.rb'
-    - 'language/while_spec.rb'
-
 # Offense count: 8
 # Cop supports --auto-correct.
 Lint/MultipleComparison:
diff --git a/spec/ruby/core/array/flatten_spec.rb b/spec/ruby/core/array/flatten_spec.rb
index b2aa015..2f9fb8a 100644
--- a/spec/ruby/core/array/flatten_spec.rb
+++ b/spec/ruby/core/array/flatten_spec.rb
@@ -90,7 +90,7 @@ describe "Array#flatten" do https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/array/flatten_spec.rb#L90
       ArraySpecs::MyArray[].flatten.should be_an_instance_of(Array)
       ArraySpecs::MyArray[1, 2, 3].flatten.should be_an_instance_of(Array)
       ArraySpecs::MyArray[1, [2], 3].flatten.should be_an_instance_of(Array)
-      ArraySpecs::MyArray[1, [2, 3], 4].flatten.should == Array[1, 2, 3, 4]
+      ArraySpecs::MyArray[1, [2, 3], 4].flatten.should == [1, 2, 3, 4]
       [ArraySpecs::MyArray[1, 2, 3]].flatten.should be_an_instance_of(Array)
     end
   end
diff --git a/spec/ruby/core/exception/errno_spec.rb b/spec/ruby/core/exception/errno_spec.rb
index 78b3eaf..095a926 100644
--- a/spec/ruby/core/exception/errno_spec.rb
+++ b/spec/ruby/core/exception/errno_spec.rb
@@ -47,4 +47,12 @@ describe "Errno::ENOTSUP" do https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/exception/errno_spec.rb#L47
   it "is defined" do
     Errno.should have_constant(:ENOTSUP)
   end
+
+  it "is the same class as Errno::EOPNOTSUPP if they represent the same errno value" do
+    if Errno::ENOTSUP::Errno == Errno::EOPNOTSUPP::Errno
+      Errno::ENOTSUP.should == Errno::EOPNOTSUPP
+    else
+      Errno::ENOTSUP.should_not == Errno::EOPNOTSUPP
+    end
+  end
 end
diff --git a/spec/ruby/core/exception/system_exit_spec.rb b/spec/ruby/core/exception/system_exit_spec.rb
new file mode 100644
index 0000000..5c61165
--- /dev/null
+++ b/spec/ruby/core/exception/system_exit_spec.rb
@@ -0,0 +1,17 @@ https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/exception/system_exit_spec.rb#L1
+require_relative '../../spec_helper'
+
+describe "SystemExit" do
+  it "sets the exit status and exits silently when raised" do
+    code = 'raise SystemExit.new(7)'
+    result = ruby_exe(code, args: "2>&1")
+    result.should == ""
+    $?.exitstatus.should == 7
+  end
+
+  it "sets the exit status and exits silently when raised when subclassed" do
+    code = 'class CustomExit < SystemExit; end; raise CustomExit.new(8)'
+    result = ruby_exe(code, args: "2>&1")
+    result.should == ""
+    $?.exitstatus.should == 8
+  end
+end
diff --git a/spec/ruby/core/fiber/fixtures/classes.rb b/spec/ruby/core/fiber/fixtures/classes.rb
new file mode 100644
index 0000000..c00facd
--- /dev/null
+++ b/spec/ruby/core/fiber/fixtures/classes.rb
@@ -0,0 +1,12 @@ https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/fiber/fixtures/classes.rb#L1
+module FiberSpecs
+
+  class NewFiberToRaise
+    def self.raise(*args)
+      fiber = Fiber.new { Fiber.yield }
+      fiber.resume
+      fiber.raise(*args)
+    end
+  end
+
+  class CustomError < StandardError; end
+end
diff --git a/spec/ruby/core/fiber/raise_spec.rb b/spec/ruby/core/fiber/raise_spec.rb
new file mode 100644
index 0000000..fd1cc91
--- /dev/null
+++ b/spec/ruby/core/fiber/raise_spec.rb
@@ -0,0 +1,76 @@ https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/fiber/raise_spec.rb#L1
+require_relative '../../spec_helper'
+require_relative 'fixtures/classes'
+require_relative '../../shared/kernel/raise'
+
+ruby_version_is "2.7" do
+  describe "Fiber#raise" do
+    it_behaves_like :kernel_raise, :raise, FiberSpecs::NewFiberToRaise
+  end
+
+  describe "Fiber#raise" do
+    it 'raises RuntimeError by default' do
+      -> { FiberSpecs::NewFiberToRaise.raise }.should raise_error(RuntimeError)
+    end
+
+    it "raises FiberError if Fiber is not born" do
+      fiber = Fiber.new { true }
+      -> { fiber.raise }.should raise_error(FiberError, "cannot raise exception on unborn fiber")
+    end
+
+    it "raises FiberError if Fiber is dead" do
+      fiber = Fiber.new { true }
+      fiber.resume
+      -> { fiber.raise }.should raise_error(FiberError, /dead fiber called|attempt to resume a terminated fiber/)
+    end
+
+    it 'accepts error class' do
+      -> { FiberSpecs::NewFiberToRaise.raise FiberSpecs::CustomError }.should raise_error(FiberSpecs::CustomError)
+    end
+
+    it 'accepts error message' do
+      -> { FiberSpecs::NewFiberToRaise.raise "error message" }.should raise_error(RuntimeError, "error message")
+    end
+
+    it 'does not accept array of backtrace information only' do
+      -> { FiberSpecs::NewFiberToRaise.raise ['foo'] }.should raise_error(TypeError)
+    end
+
+    it 'does not accept integer' do
+      -> { FiberSpecs::NewFiberToRaise.raise 100 }.should raise_error(TypeError)
+    end
+
+    it 'accepts error class with error message' do
+      -> { FiberSpecs::NewFiberToRaise.raise FiberSpecs::CustomError, 'test error' }.should raise_error(FiberSpecs::CustomError, 'test error')
+    end
+
+    it 'accepts error class with with error message and backtrace information' do
+      -> {
+        FiberSpecs::NewFiberToRaise.raise FiberSpecs::CustomError, 'test error', ['foo', 'boo']
+      }.should raise_error(FiberSpecs::CustomError) { |e|
+        e.message.should == 'test error'
+        e.backtrace.should == ['foo', 'boo']
+      }
+    end
+
+    it 'does not accept only error message and backtrace information' do
+      -> { FiberSpecs::NewFiberToRaise.raise 'test error', ['foo', 'boo'] }.should raise_error(TypeError)
+    end
+
+    it "raises a FiberError if invoked from a different Thread" do
+      fiber = Fiber.new { Fiber.yield }
+      fiber.resume
+      Thread.new do
+        -> {
+          fiber.raise
+        }.should raise_error(FiberError, "fiber called across threads")
+      end.join
+    end
+
+    it "kills Fiber" do
+      fiber = Fiber.new { Fiber.yield :first; :second }
+      fiber.resume
+      -> { fiber.raise }.should raise_error
+      -> { fiber.resume }.should raise_error(FiberError, /dead fiber called|attempt to resume a terminated fiber/)
+    end
+  end
+end
diff --git a/spec/ruby/core/file/extname_spec.rb b/spec/ruby/core/file/extname_spec.rb
index e9b53bc..e182ed4 100644
--- a/spec/ruby/core/file/extname_spec.rb
+++ b/spec/ruby/core/file/extname_spec.rb
@@ -12,6 +12,16 @@ describe "File.extname" do https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/file/extname_spec.rb#L12
     File.extname(".app.conf").should == ".conf"
   end
 
+  it "returns unfrozen strings" do
+    File.extname("foo.rb").frozen?.should == false
+    File.extname("/foo/bar.rb").frozen?.should == false
+    File.extname("/foo.rb/bar.c").frozen?.should == false
+    File.extname("bar").frozen?.should == false
+    File.extname(".bashrc").frozen?.should == false
+    File.extname("/foo.bar/baz").frozen?.should == false
+    File.extname(".app.conf").frozen?.should == false
+  end
+
   it "returns the extension for edge cases" do
     File.extname("").should ==  ""
     File.extname(".").should ==  ""
diff --git a/spec/ruby/core/integer/shared/comparison_coerce.rb b/spec/ruby/core/integer/shared/comparison_coerce.rb
index 50437f7..af52f5e 100644
--- a/spec/ruby/core/integer/shared/comparison_coerce.rb
+++ b/spec/ruby/core/integer/shared/comparison_coerce.rb
@@ -1,27 +1,5 @@ https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/integer/shared/comparison_coerce.rb#L1
 require_relative '../fixtures/classes'
 
-describe :integer_comparison_coerce_rescue, shared: true do
-  it "rescues exception (StandardError and subclasses) raised in other#coerce and raises ArgumentError" do
-    b = mock("numeric with failed #coerce")
-    b.should_receive(:coerce).and_raise(IntegerSpecs::CoerceError)
-
-    # e.g. 1 > b
-    -> {
-      -> { 1.send(@method, b) }.should raise_error(ArgumentError, /comparison of Integer with MockObject failed/)
-    }.should complain(/Numerical comparison operators will no more rescue exceptions of #coerce/)
-  end
-
-  it "does not rescue Exception and StandardError siblings raised in other#coerce" do
-    [Exception, NoMemoryError].each do |exception|
-      b = mock("numeric with failed #coerce")
-      b.should_receive(:coerce).and_raise(exception)
-
-      # e.g. 1 > b
-      -> { 1.send(@method, b) }.should raise_error(exception)
-    end
-  end
-end
-
 describe :integer_comparison_coerce_not_rescue, shared: true do
   it "does not rescue exception raised in other#coerce" do
     b = mock("numeric with failed #coerce")
diff --git a/spec/ruby/core/io/set_encoding_by_bom_spec.rb b/spec/ruby/core/io/set_encoding_by_bom_spec.rb
new file mode 100644
index 0000000..b8e4eed
--- /dev/null
+++ b/spec/ruby/core/io/set_encoding_by_bom_spec.rb
@@ -0,0 +1,57 @@ https://github.com/ruby/ruby/blob/trunk/spec/ruby/core/io/set_encoding_by_bom_spec.rb#L1
+require_relative '../../spec_helper'
+
+describe "IO#set_encoding_by_bom" do
+  before :each do
+    @name = tmp('io_set_encoding_by_bom.txt')
+    touch(@name)
+    @io = new_io(@name, 'r (... truncated)

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

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