Trent Nelson added the comment:

All my servers are set to use UTC, which affects how FreeBSD (and other BSDs) 
treat the isdst param in struct tm in mktime:


#include <stdio.h>
#include <string.h>
#include <time.h>

int main(int argc, char **argv)
{
    struct tm tm1, tm2;
    time_t t1, t2;

    memset((void *)&tm1, 0, sizeof(struct tm));
    memset((void *)&tm2, 0, sizeof(struct tm));

    // UTC
    setenv("TZ", "UTC", 1);
    tzset();

    tm1.tm_sec = 0;
    tm1.tm_min = 1;
    tm1.tm_hour = 1;
    tm1.tm_mday = 12;
    tm1.tm_mon = 3;
    tm1.tm_year = 2012;
    tm1.tm_wday = -1;
    tm1.tm_yday = -1;
    tm1.tm_isdst = 1;

    t1 = mktime(&tm1);
    printf("t1 (UTC): %d\n", t1);

    // EST
    setenv("TZ", "CET", 1);
    tzset();
    tm2.tm_sec = 0;
    tm2.tm_min = 1;
    tm2.tm_hour = 1;
    tm2.tm_mday = 12;
    tm2.tm_mon = 3;
    tm2.tm_year = 2012;

    tm2.tm_wday = -1;
    tm2.tm_yday = -1;
    tm2.tm_isdst = 1;

    t2 = mktime(&tm2);
    printf("t2 (CET): %d\n", t2);

    return 0;
}


% gcc -g test_mktime.c -o test_time && ./test_time 
t1 (UTC): -1
t2 (CET): 1162787116

The two tests causing problems are Lib/test/test_email/test_utils.py:


    def test_localtime_daylight_false_dst_false(self):
        test.support.patch(self, time, 'daylight', False)
        t0 = datetime.datetime(2012, 3, 12, 1, 1)
        t1 = utils.localtime(t0, isdst=-1)
        t2 = utils.localtime(t1)
        self.assertEqual(t1, t2)

    def test_localtime_daylight_true_dst_true(self):
        test.support.patch(self, time, 'daylight', True)
        t0 = datetime.datetime(2012, 3, 12, 1, 1)
        t1 = utils.localtime(t0, isdst=1)
        t2 = utils.localtime(t1)
        self.assertEqual(t1, t2)


In order for those tests to work on a *BSD server with a TZ set to UTC, TZ is 
going to need to be set to something else first, and then tzset() called.  
Otherwise, mktime() will return -1, which triggers the overflow error.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue15750>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to