[#67346] Future of test suites for Ruby — Charles Oliver Nutter <headius@...>

I'll try to be brief so we can discuss all this. tl;dr: RubySpec is

19 messages 2015/01/05

[ruby-core:67742] [ruby-trunk - Bug #10767] Time.local doesn't raise an exception during the dead hour on DST

From: akr@...
Date: 2015-01-22 02:37:50 UTC
List: ruby-core #67742
Issue #10767 has been updated by Akira Tanaka.

Assignee set to Akira Tanaka

----------------------------------------
Bug #10767: Time.local doesn't raise an exception during the dead hour on DST
https://bugs.ruby-lang.org/issues/10767#change-51169

* Author: Gabriel Sobrinho
* Status: Rejected
* Priority: Normal
* Assignee: Akira Tanaka
* ruby -v: ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux-gnu]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
At the begin of DST ruby is accepting the 0 hour which in fact doesn't exists:

    Time.local(2014, 10, 19, 0, 30)
    #=> 2014-10-19 01:30:00 -0200

    Time.local(2014, 10, 19, 1, 30)
    #=> 2014-10-19 01:30:00 -0200

    Time.local(2014, 10, 19, 2, 30)
    #=> 2014-10-19 02:30:00 -0200

In fact it is returning the next hour for some reason, causing a really strange behaviour:

    Time.local(2014, 10, 19, 0, 30) == Time.local(2014, 10, 19, 1, 30)
    #=> true

I think it makes more sense to raise an exception as happens when you specify a invalid month, day, hour, minute or second:

    Time.local(2014, 10, 19, 1, 60) # 60 minutes doesn't exists
    ArgumentError: invalid date

    Time.local(2014, 10, 19, 25, 30) # 25 hours doesn't exists
    ArgumentError: invalid date

Makes sense? I would be happy to provide a patch.



-- 
https://bugs.ruby-lang.org/

In This Thread

Prev Next