diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | error.c | 23 | ||||
-rw-r--r-- | test/ruby/test_io.rb | 17 |
3 files changed, 37 insertions, 8 deletions
@@ -1,3 +1,8 @@ +Sun Jul 17 15:30:04 2011 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * error.c (rb_warn_m): accept multiple args in like puts. rdoc + patch by Erik Price at [ruby-core:38119]. [Feature #5029] + Sun Jul 17 07:56:31 2011 Martin Bosslet <Martin.Bosslet@googlemail.com> * test/openssl/test_ssl_session.rb: add PEM SSL session without TLS @@ -225,18 +225,25 @@ rb_warning(const char *fmt, ...) /* * call-seq: - * warn(msg) -> nil + * warn(msg, ...) -> nil * - * Display the given message (followed by a newline) on STDERR unless - * warnings are disabled (for example with the <code>-W0</code> flag). + * Displays each of the given messages followed by a record separator on + * STDERR unless warnings have been disabled (for example with the + * <code>-W0</code> flag). + * + * warn("warning 1", "warning 2") + * + * <em>produces:</em> + * + * warning 1 + * warning 2 */ static VALUE -rb_warn_m(VALUE self, VALUE mesg) +rb_warn_m(int argc, VALUE *argv, VALUE exc) { - if (!NIL_P(ruby_verbose)) { - rb_io_write(rb_stderr, mesg); - rb_io_write(rb_stderr, rb_default_rs); + if (!NIL_P(ruby_verbose) && argc > 0) { + rb_io_puts(argc, argv, rb_stderr); } return Qnil; } @@ -1572,7 +1579,7 @@ Init_Exception(void) rb_mErrno = rb_define_module("Errno"); - rb_define_global_function("warn", rb_warn_m, 1); + rb_define_global_function("warn", rb_warn_m, -1); } void diff --git a/test/ruby/test_io.rb b/test/ruby/test_io.rb index 0325867496..c62edbba00 100644 --- a/test/ruby/test_io.rb +++ b/test/ruby/test_io.rb @@ -1975,4 +1975,21 @@ End write_file.close file.close! end + + def test_warn + stderr = EnvUtil.verbose_warning do + warn "warning" + end + assert_equal("warning\n", stderr) + + stderr = EnvUtil.verbose_warning do + warn + end + assert_equal("", stderr) + + stderr = EnvUtil.verbose_warning do + warn "[Feature #5029]", "[ruby-core:38070]" + end + assert_equal("[Feature #5029]\n[ruby-core:38070]\n", stderr) + end end |