This commit is contained in:
Victor Stinner 2012-02-08 14:31:50 +01:00
parent 6f91ce74a0
commit ccd5715a14
9 changed files with 814 additions and 174 deletions

View file

@ -2,6 +2,7 @@
# does add tests for a few functions which have been determined to be more
# portable than they had been thought to be.
import decimal
import os
import errno
import unittest
@ -238,6 +239,36 @@ class StatAttributeTests(unittest.TestCase):
warnings.simplefilter("ignore", DeprecationWarning)
self.check_stat_attributes(fname)
def test_stat_timestamp(self):
# test deprecation
with warnings.catch_warnings():
warnings.simplefilter("error", DeprecationWarning)
self.assertRaises(DeprecationWarning, os.stat_float_times, False)
with warnings.catch_warnings():
warnings.simplefilter("ignore", DeprecationWarning)
old_value = os.stat_float_times()
try:
# test invalid timestamp types
self.assertRaises(ValueError, os.stat, self.fname,
timestamp="abc")
self.assertRaises(ValueError, os.stat, self.fname,
timestamp=decimal.Context)
for float_times in (False, True):
os.stat_float_times(float_times)
t = os.stat(self.fname).st_mtime
if float_times:
self.assertIsInstance(t, float)
else:
self.assertIsInstance(t, int)
for type in (int, float, decimal.Decimal):
t = os.stat(self.fname, timestamp=type).st_mtime
self.assertIsInstance(t, type)
finally:
os.stat_float_times(old_value)
def test_statvfs_attributes(self):
if not hasattr(os, "statvfs"):
return

View file

@ -1,10 +1,10 @@
import locale
import platform
import sys
import sysconfig
from test import support
import time
import unittest
import locale
import sysconfig
import sys
import platform
# Max year is only limited by the size of C int.
SIZEOF_INT = sysconfig.get_config_var('SIZEOF_INT') or 4
@ -345,6 +345,31 @@ class TimeTestCase(unittest.TestCase):
self.assertGreater(t2, t1)
self.assertAlmostEqual(dt, 0.1, delta=0.2)
def test_timestamp(self):
import decimal
calls = [
(time.time,),
(time.mktime, time.localtime()),
]
if hasattr(time, 'monotonic'):
calls.append((time.monotonic,))
if hasattr(time, 'wallclock'):
calls.append((time.wallclock,))
if hasattr(time, 'CLOCK_REALTIME'):
if hasattr(time, 'clock_gettime'):
calls.append((time.clock_gettime, time.CLOCK_REALTIME))
if hasattr(time, 'clock_getres'):
calls.append((time.clock_getres, time.CLOCK_REALTIME))
for call in calls:
func, *args = call
# test invalid timestamp
for invalid in ("int", decimal.Context):
self.assertRaises(ValueError, func, *args, timestamp=invalid)
for type in (int, float, decimal.Decimal):
self.assertIsInstance(func(*args, timestamp=type), type)
def test_wallclock(self):
t1 = time.wallclock()
t2 = time.wallclock()