groovy-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Brian Koehmstedt (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (GROOVY-8368) date arithmetic bug using TimeCategory intervals
Date Mon, 30 Oct 2017 20:37:00 GMT

     [ https://issues.apache.org/jira/browse/GROOVY-8368?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Brian Koehmstedt updated GROOVY-8368:
-------------------------------------
    Environment: 
Ubuntu 16.04, Groovy 2.6.0-alpha-1, OpenJDK 1.8.0_131


  was:
$ uname -a
Linux i7 4.4.0-97-generic #120-Ubuntu SMP Tue Sep 19 17:28:18 UTC 2017 x86_64 x86_64 x86_64
GNU/Linux

$ groovy -v
Groovy Version: 2.6.0-alpha-1 JVM: 1.8.0_131 Vendor: Oracle Corporation OS: Linux

$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)



> date arithmetic bug using TimeCategory intervals
> ------------------------------------------------
>
>                 Key: GROOVY-8368
>                 URL: https://issues.apache.org/jira/browse/GROOVY-8368
>             Project: Groovy
>          Issue Type: Bug
>    Affects Versions: 2.6.0-alpha-1
>         Environment: Ubuntu 16.04, Groovy 2.6.0-alpha-1, OpenJDK 1.8.0_131
>            Reporter: Brian Koehmstedt
>            Priority: Minor
>         Attachments: intervalBug.groovy
>
>
> There's a clear date arithmetic bug using TimeCategory intervals and it appears to show
itself only the 30th of any given month.  I noticed this because our automatic builds fail
towards the end of the month and this has been going on for a long time.  I decided to hunt
this down today (Oct 30) as the build failed today and I had time to track it down.  I was
able to produce a small script to reproduce it, as shown below.  I tested with latest 2.6.0
alpha1 as well as 2.4.10 (what we're actually using).  Both show the bug.
> I don't have an opinion on how "1.month" is interpreted in Groovy.  That's not what this
submission is about.  The bug I am reporting here is that the following two expressions should
always evaluate to the same value and it appears they don't on the 30th of the month:
> {code}
> // fails on the 30th of the month (at least, for Oct 30 2017)
> assert now + 1.month + 1.day == now + 1.day + 1.month
> {code}
> {code}
> // START of intervalBug.groovy
> import groovy.time.TimeCategory
> Date now = new Date().clearTime()
> println "current date = $now"
> use(TimeCategory) {
>   println "now+1day+1month = ${now + 1.day + 1.month}"
>   println "now+1month+1day = ${now + 1.month + 1.day}"
> }
> // END of intervalBug.groovy
> {code}
> {noformat}
> # also tested with groovy-2.4.10 with same buggy result
> $ groovy -v
> Groovy Version: 2.6.0-alpha-1 JVM: 1.8.0_131 Vendor: Oracle Corporation OS: Linux
> # 29th of month is OK: same result produced
> $ sudo date -s "29 OCT 2017 13:00:00"; groovy intervalBug.groovy
> Sun Oct 29 13:00:00 PDT 2017
> current date = Sun Oct 29 00:00:00 PDT 2017
> now+1day+1month = Thu Nov 30 00:00:00 PST 2017
> now+1month+1day = Thu Nov 30 00:00:00 PST 2017
> # 30th of month is BUGGY: different result produced
> $ sudo date -s "30 OCT 2017 13:00:00"; groovy intervalBug.groovy
> Mon Oct 30 13:00:00 PDT 2017
> current date = Mon Oct 30 00:00:00 PDT 2017
> now+1day+1month = Thu Nov 30 00:00:00 PST 2017
> now+1month+1day = Fri Dec 01 00:00:00 PST 2017
> # 31st of month is OK
> $ sudo date -s "31 OCT 2017 13:00:00"; groovy intervalBug.groovy
> [sudo] password for bkoehmstedt: 
> Tue Oct 31 13:00:00 PDT 2017
> current date = Tue Oct 31 00:00:00 PDT 2017
> now+1day+1month = Fri Dec 01 00:00:00 PST 2017
> now+1month+1day = Fri Dec 01 00:00:00 PST 2017
> # 1st of month is OK
> $ sudo date -s "01 NOV 2017 13:00:00"; groovy intervalBug.groovy
> [sudo] password for bkoehmstedt: 
> Wed Nov  1 13:00:00 PDT 2017
> current date = Wed Nov 01 00:00:00 PDT 2017
> now+1day+1month = Sat Dec 02 00:00:00 PST 2017
> now+1month+1day = Sat Dec 02 00:00:00 PST 2017
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message