1
# -*- coding: utf-8 -*-
3
MoinMoin - MoinMoin.util.filesys Tests
5
@copyright: 2008 MoinMoin:ThomasWaldmann
6
@license: GNU GPL, see COPYING for details.
9
import shutil, tempfile
13
from MoinMoin.util import filesys
16
""" test filesys.fuid (a better mtime() alternative for up-to-date checking) """
18
def setup_method(self, method):
19
self.test_dir = tempfile.mkdtemp('', 'fuid_')
20
self.fname = os.path.join(self.test_dir, "fuid-test")
21
self.tmpname = os.path.join(self.test_dir, "fuid-temp")
23
def teardown_method(self, method):
24
shutil.rmtree(self.test_dir)
28
uid = filesys.fuid(self.fname)
30
assert uid is None # there is no file yet, fuid will fail internally and return None
32
def makefile(self, fname, content):
37
def testNewFile(self):
38
# freshly created file
39
self.makefile(self.fname, "foo")
40
uid1 = filesys.fuid(self.fname)
42
assert uid1 is not None # None would mean some failure in fuid()
44
def testUpdateFileInPlace(self):
45
# update file in place, changing size and maybe mtime
46
self.makefile(self.fname, "foo")
47
uid1 = filesys.fuid(self.fname)
49
self.makefile(self.fname, "foofoo")
50
uid2 = filesys.fuid(self.fname)
52
assert uid2 != uid1 # we changed size and maybe mtime
54
def testUpdateFileMovingFromTemp(self):
55
# update file by moving another file over it (see caching.update)
56
# changing inode, maybe mtime, but not size
57
if sys.platform == 'win32':
58
py.test.skip("Inode change detection not supported on win32")
60
self.makefile(self.fname, "foo")
61
uid1 = filesys.fuid(self.fname)
63
self.makefile(self.tmpname, "bar")
64
os.rename(self.tmpname, self.fname)
65
uid2 = filesys.fuid(self.fname)
67
assert uid2 != uid1 # we didn't change size, but inode and maybe mtime
70
# is a file with mtime older than max_staleness considered stale?
71
if sys.platform != 'win32':
72
py.test.skip("max_staleness check only done on win32 because it doesn't support inode change detection")
74
self.makefile(self.fname, "foo")
75
uid1 = filesys.fuid(self.fname)
77
time.sleep(2) # thanks for waiting :)
78
uid2 = filesys.fuid(self.fname, max_staleness=1)
79
assert uid2 != uid1 # should be considered stale if platform has no inode support
82
coverage_modules = ['MoinMoin.util.filesys']