本文整理汇总了Python中picard.file.File._preserve_times方法的典型用法代码示例。如果您正苦于以下问题:Python File._preserve_times方法的具体用法?Python File._preserve_times怎么用?Python File._preserve_times使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类picard.file.File
的用法示例。
在下文中一共展示了File._preserve_times方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: TestPreserveTimes
# 需要导入模块: from picard.file import File [as 别名]
# 或者: from picard.file.File import _preserve_times [as 别名]
class TestPreserveTimes(PicardTestCase):
def setUp(self):
super().setUp()
self.tmp_directory = mkdtemp()
filepath = os.path.join(self.tmp_directory, 'a.mp3')
self.file = File(filepath)
def tearDown(self):
shutil.rmtree(self.tmp_directory)
def _create_testfile(self):
# create a dummy file
with open(self.file.filename, 'w') as f:
f.write('xxx')
f.flush()
os.fsync(f.fileno())
def _modify_testfile(self):
# dummy file modification, append data to it
with open(self.file.filename, 'a') as f:
f.write('yyy')
f.flush()
os.fsync(f.fileno())
def _read_testfile(self):
with open(self.file.filename, 'r') as f:
return f.read()
def test_preserve_times(self):
self._create_testfile()
# test if times are preserved
(before_atime_ns, before_mtime_ns) = self.file._preserve_times(self.file.filename, self._modify_testfile)
# HERE an external access to the file is possible, modifying its access time
# read times again and compare with original
st = os.stat(self.file.filename)
(after_atimes_ns, after_mtimes_ns) = (st.st_atime_ns, st.st_mtime_ns)
# modification times should be equal
self.assertEqual(before_mtime_ns, after_mtimes_ns)
# access times may not be equal
# time difference should be positive and reasonably low (if no access in between, it should be 0)
delta = after_atimes_ns - before_atime_ns
tolerance = 10**7 # 0.01 seconds
self.assertTrue(0 <= delta < tolerance)
# ensure written data can be read back
# keep it at the end, we don't want to access file before time checks
self.assertEqual(self._read_testfile(), 'xxxyyy')
def test_preserve_times_nofile(self):
with self.assertRaises(self.file.PreserveTimesStatError):
self.file._preserve_times(self.file.filename,
self._modify_testfile)
with self.assertRaises(FileNotFoundError):
self._read_testfile()
def test_preserve_times_nofile_utime(self):
self._create_testfile()
def save():
os.remove(self.file.filename)
with self.assertRaises(self.file.PreserveTimesUtimeError):
result = self.file._preserve_times(self.file.filename, save)