diff --git a/core/errors.rbs b/core/errors.rbs index 4ffb373b8..4abbac120 100644 --- a/core/errors.rbs +++ b/core/errors.rbs @@ -624,7 +624,8 @@ class SystemCallError < StandardError # A subclass of SystemCallError can also be instantiated via the `new` method of # the subclass. See Errno. # - def initialize: (string msg, Integer errno) -> void + def initialize: (Integer errno) -> void + | (string? msg, ?Integer? errno, ?_ToS func) -> void # # Return this SystemCallError's error number. # - def errno: () -> Integer + def errno: () -> Integer? end # diff --git a/test/stdlib/SystemCallError_test.rb b/test/stdlib/SystemCallError_test.rb index 2b0b6a422..ed6d6cac0 100644 --- a/test/stdlib/SystemCallError_test.rb +++ b/test/stdlib/SystemCallError_test.rb @@ -1,26 +1,35 @@ require_relative "test_helper" -class SystemCallErrorTest < StdlibTest - target SystemCallError - - def test_initialize - SystemCallError.new('hi', 0) - a = SystemCallError.new(ToStr.new('hi'), 0) - a.errno - a.message +class SystemCallErrorSingletonTest < Test::Unit::TestCase + include TestHelper + + testing 'singleton(::SystemCallError)' + + def test_new + assert_send_type '(Integer) -> SystemCallError', + SystemCallError, :new, Errno::ENOENT::Errno + + with_string do |message| + assert_send_type '(string) -> SystemCallError', + SystemCallError, :new, message + assert_send_type '(string, Integer) -> SystemCallError', + SystemCallError, :new, message, 0 + assert_send_type '(string, Integer, _ToS) -> SystemCallError', + SystemCallError, :new, message, Errno::ENOENT::Errno, ToS.new('path') + end end +end + +class SystemCallErrorInstanceTest < Test::Unit::TestCase + include TestHelper + + testing '::SystemCallError' def test_errno - begin - raise Errno::ENOENT, 'test' - rescue SystemCallError => exception - exception.errno - end + error = SystemCallError.new(Errno::ENOENT::Errno) + assert_send_type '() -> Integer', error, :errno - begin - raise SystemCallError.new('test', 3) - rescue SystemCallError => exception - exception.errno - end + error = SystemCallError.new('test') + assert_send_type '() -> nil', error, :errno end end