mirror of https://github.com/python/cpython
Issue #19634: time.strftime("%y") now raises a ValueError on AIX when given a
year before 1900.
This commit is contained in:
parent
b6e622d184
commit
55329f8fbd
|
@ -182,15 +182,13 @@ class Y1900Tests(unittest.TestCase):
|
|||
a date before 1900 is passed with a format string containing "%y"
|
||||
"""
|
||||
|
||||
@unittest.skipUnless(sys.platform == "win32", "Only applies to Windows")
|
||||
def test_y_before_1900_win(self):
|
||||
with self.assertRaises(ValueError):
|
||||
time.strftime("%y", (1899, 1, 1, 0, 0, 0, 0, 0, 0))
|
||||
|
||||
@unittest.skipIf(sys.platform == "win32", "Doesn't apply on Windows")
|
||||
def test_y_before_1900_nonwin(self):
|
||||
self.assertEqual(
|
||||
time.strftime("%y", (1899, 1, 1, 0, 0, 0, 0, 0, 0)), "99")
|
||||
def test_y_before_1900(self):
|
||||
t = (1899, 1, 1, 0, 0, 0, 0, 0, 0)
|
||||
if sys.platform == "win32" or sys.platform.startswith("aix"):
|
||||
with self.assertRaises(ValueError):
|
||||
time.strftime("%y", t)
|
||||
else:
|
||||
self.assertEqual(time.strftime("%y", t), "99")
|
||||
|
||||
def test_y_1900(self):
|
||||
self.assertEqual(
|
||||
|
|
|
@ -50,6 +50,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #19634: time.strftime("%y") now raises a ValueError on AIX when given a
|
||||
year before 1900.
|
||||
|
||||
- Fix test.support.bind_port() to not cause an error when Python was compiled
|
||||
on a system with SO_REUSEPORT defined in the headers but run on a system
|
||||
with an OS kernel that does not support that reasonably new socket option.
|
||||
|
|
|
@ -650,6 +650,20 @@ time_strftime(PyObject *self, PyObject *args)
|
|||
return NULL;
|
||||
}
|
||||
}
|
||||
#elif defined(_AIX)
|
||||
for(outbuf = wcschr(fmt, '%');
|
||||
outbuf != NULL;
|
||||
outbuf = wcschr(outbuf+2, '%'))
|
||||
{
|
||||
/* Issue #19634: On AIX, wcsftime("y", (1899, 1, 1, 0, 0, 0, 0, 0, 0))
|
||||
returns "0/" instead of "99" */
|
||||
if (outbuf[1] == L'y' && buf.tm_year < 0) {
|
||||
PyErr_SetString(PyExc_ValueError,
|
||||
"format %y requires year >= 1900 on AIX");
|
||||
Py_DECREF(format);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
fmtlen = time_strlen(fmt);
|
||||
|
|
Loading…
Reference in New Issue