From 0b3ed6043c9d091d499ca1caed604a983c7e285b Mon Sep 17 00:00:00 2001 From: nagachika Date: Sun, 23 Jul 2023 12:20:12 +0900 Subject: merge revision(s) 5d4fff845602872eef072e7611558b5f8762efe0: [Backport #19293] Tighten Time.new(string) parsing Disallow: * Only year-month * Only year-month-day * Preceding whitespace * Trailing whitespace Fixes [Bug #19293] --- test/ruby/test_time.rb | 13 +++++++++++++ time.c | 13 ++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) --- test/ruby/test_time.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'test/ruby') diff --git a/test/ruby/test_time.rb b/test/ruby/test_time.rb index f47a49d3e0..0faad878fc 100644 --- a/test/ruby/test_time.rb +++ b/test/ruby/test_time.rb @@ -75,6 +75,7 @@ class TestTime < Test::Unit::TestCase Time.new("2020-12-25 00 +09:00") } + assert_equal(Time.new(2021), Time.new("2021")) assert_equal(Time.new(2021, 12, 25, in: "+09:00"), Time.new("2021-12-25+09:00")) assert_equal(0.123456r, Time.new("2021-12-25 00:00:00.123456 +09:00").subsec) @@ -138,6 +139,18 @@ class TestTime < Test::Unit::TestCase assert_raise_with_message(ArgumentError, /mon out of range/) { Time.new("2020-17-25 00:56:17 +0900") } + assert_raise_with_message(ArgumentError, /no time information/) { + Time.new("2020-12") + } + assert_raise_with_message(ArgumentError, /no time information/) { + Time.new("2020-12-02") + } + assert_raise_with_message(ArgumentError, /can't parse/) { + Time.new(" 2020-12-02 00:00:00") + } + assert_raise_with_message(ArgumentError, /can't parse/) { + Time.new("2020-12-02 00:00:00 ") + } end def test_time_add() -- cgit v1.2.3