python-datemath icon indicating copy to clipboard operation
python-datemath copied to clipboard

Race condition in timezone tests

Open mweinelt opened this issue 3 years ago • 1 comments

I'm on python-datemath-1.5.5 and I can reproduce this race condition with a high reliability. Maybe something like freezegun could help.

_______________________________ TestDM.testParse _______________________________

self = <tests.TestDM testMethod=testParse>

    def testParse(self):
        # Make sure our helpers return the correct objects
        self.assertIsInstance(datemath('now'), pydatetime)
        self.assertIsInstance(dm('now'), arrow.arrow.Arrow)
    
        # Baisc dates
        self.assertEqual(dm('2016.01.02').format(iso8601), '2016-01-02T00:00:00+00:00')
        self.assertEqual(dm('2016-01-02').format(iso8601), '2016-01-02T00:00:00+00:00')
        self.assertEqual(dm('2016-01-02 01:00:00').format(iso8601), '2016-01-02T01:00:00+00:00')
    
        # Rounding Tests
        self.assertEqual(dm('2016-01-01||/d').format('YYYY-MM-DDTHH:mm:ssZZ'), '2016-01-01T00:00:00+00:00')
        self.assertEqual(dm('2014-11-18||/y').format('YYYY-MM-DDTHH:mm:ssZZ'), '2014-01-01T00:00:00+00:00')
        self.assertEqual(dm('2016-01-01 14:00:00||/w').format('YYYY-MM-DDTHH:mm:ssZZ'), '2015-12-28T00:00:00+00:00')
        self.assertEqual(dm('2014-11||/M').format('YYYY-MM-DDTHH:mm:ssZZ'), '2014-11-01T00:00:00+00:00')
        self.assertEqual(dm('2016-01-02||/M+1h+1m').format(iso8601), '2016-01-01T01:01:00+00:00')
        self.assertEqual(dm('2016-01-02||/d+1h').format(iso8601), '2016-01-02T01:00:00+00:00')
        self.assertEqual(dm('2016-01-02T14:02:00||/h').format(iso8601), '2016-01-02T14:00:00+00:00')
        self.assertEqual(dm('2016-01-02T14:02:00||/H').format(iso8601), '2016-01-02T14:00:00+00:00')
    
        # Rounding Up Tests
        self.assertEqual(dm('2016-01-01||/d', roundDown=False).format('YYYY-MM-DDTHH:mm:ssZZ'), '2016-01-01T23:59:59+00:00')
        self.assertEqual(dm('2014-11-18||/y', roundDown=False).format('YYYY-MM-DDTHH:mm:ssZZ'), '2014-12-31T23:59:59+00:00')
    
        # Timezone Tests
>       self.assertEqual(dm('now', tz='US/Pacific').format(iso8601), arrow.utcnow().to('US/Pacific').format(iso8601))
E       AssertionError: '2022-03-31T14:19:12-07:00' != '2022-03-31T14:19:13-07:00'
E       - 2022-03-31T14:19:12-07:00
E       ?                   ^
E       + 2022-03-31T14:19:13-07:00
E       ?                   ^

tests.py:42: AssertionError

mweinelt avatar Mar 31 '22 21:03 mweinelt

This also happens in NixOS tests

onny avatar Jul 08 '22 09:07 onny