Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions core/errors.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -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

# <!--
# rdoc-file=error.c
Expand All @@ -641,7 +642,7 @@ class SystemCallError < StandardError
# -->
# Return this SystemCallError's error number.
#
def errno: () -> Integer
def errno: () -> Integer?
end

# <!-- rdoc-file=error.c -->
Expand Down
45 changes: 27 additions & 18 deletions test/stdlib/SystemCallError_test.rb
Original file line number Diff line number Diff line change
@@ -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
Loading