errors/exit_status_coercion.rb
tests/_examples/errors/exit_status_coercion.rb in the metorex repository.
def status_for(value)
exit value
rescue SystemExit => error
error.status
end
puts status_for(0)
puts status_for(8)
puts status_for(-1)
puts status_for(true)
puts status_for(false)
puts status_for(5.9)
puts status_for(-2.2)
class Countable
def to_int
5
end
end
puts status_for(Countable.new)
["0", nil, [0], Object.new].each do |bad|
begin
exit bad
rescue TypeError => error
puts error.message
end
end
class Runner
public :exit
end
begin
Runner.new.exit 3
rescue SystemExit => error
puts error.status
end
begin
Kernel.exit 4
rescue SystemExit => error
puts error.status
end
puts Kernel.private_instance_methods.include? :exit
puts Kernel.private_instance_methods.include? :exit!
Output:
0
8
-1
0
1
5
-2
5
no implicit conversion of String into Integer
no implicit conversion from nil to integer
no implicit conversion of Array into Integer
no implicit conversion of Object into Integer
3
4
true
true