summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--error.c8
-rw-r--r--test/ruby/test_exception.rb15
2 files changed, 21 insertions, 2 deletions
diff --git a/error.c b/error.c
index 600be018fe6..e2e36cec799 100644
--- a/error.c
+++ b/error.c
@@ -743,9 +743,13 @@ exc_equal(VALUE exc, VALUE obj)
/*
* call-seq:
- * SystemExit.new(status=0) -> system_exit
+ * SystemExit.new -> system_exit
+ * SystemExit.new(status) -> system_exit
+ * SystemExit.new(status, msg) -> system_exit
+ * SystemExit.new(msg) -> system_exit
*
- * Create a new +SystemExit+ exception with the given status.
+ * Create a new +SystemExit+ exception with the given status and message.
+ * If status is not given, EXIT_SUCCESS is used.
*/
static VALUE
diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb
index 1d16da695cd..bb91c962850 100644
--- a/test/ruby/test_exception.rb
+++ b/test/ruby/test_exception.rb
@@ -334,4 +334,19 @@ end.join
arg_string = (0...140000).to_a.join(", ")
assert_raise(SystemStackError, bug5720) {eval "raise(#{arg_string})"}
end
+
+ def test_systemexit_new
+ e0 = SystemExit.new
+ assert_equal(0, e0.status)
+ assert_equal("SystemExit", e0.message)
+ ei = SystemExit.new(3)
+ assert_equal(3, ei.status)
+ assert_equal("SystemExit", ei.message)
+ es = SystemExit.new("msg")
+ assert_equal(0, es.status)
+ assert_equal("msg", es.message)
+ eis = SystemExit.new(7, "msg")
+ assert_equal(7, eis.status)
+ assert_equal("msg", eis.message)
+ end
end