mirror of https://gitee.com/bigwinds/arangodb
85 lines
2.4 KiB
Python
85 lines
2.4 KiB
Python
# Copyright Bruno da Silva de Oliveira 2003. Use, modification and
|
|
# distribution is subject to the Boost Software License, Version 1.0.
|
|
# (See accompanying file LICENSE_1_0.txt or copy at
|
|
# http://www.boost.org/LICENSE_1_0.txt)
|
|
import sys
|
|
sys.path.append('../src')
|
|
from SmartFile import *
|
|
import unittest
|
|
import tempfile
|
|
import os
|
|
import time
|
|
|
|
|
|
class SmartFileTest(unittest.TestCase):
|
|
|
|
FILENAME = tempfile.mktemp()
|
|
|
|
def setUp(self):
|
|
self._Clean()
|
|
|
|
def tearDown(self):
|
|
self._Clean()
|
|
|
|
def _Clean(self):
|
|
try:
|
|
os.remove(self.FILENAME)
|
|
except OSError: pass
|
|
|
|
|
|
def testNonExistant(self):
|
|
"Must override the file, as there's no file in the disk yet"
|
|
self.assert_(not os.path.isfile(self.FILENAME))
|
|
f = SmartFile(self.FILENAME, 'w')
|
|
f.write('Testing 123\nTesting again.')
|
|
f.close()
|
|
self.assert_(os.path.isfile(self.FILENAME))
|
|
|
|
|
|
def testOverride(self):
|
|
"Must override the file, because the contents are different"
|
|
contents = 'Contents!\nContents!'
|
|
# create the file normally first
|
|
f = file(self.FILENAME, 'w')
|
|
f.write(contents)
|
|
f.close()
|
|
file_time = os.path.getmtime(self.FILENAME)
|
|
self.assert_(os.path.isfile(self.FILENAME))
|
|
time.sleep(2)
|
|
f = SmartFile(self.FILENAME, 'w')
|
|
f.write(contents + '_')
|
|
f.close()
|
|
new_file_time = os.path.getmtime(self.FILENAME)
|
|
self.assert_(new_file_time != file_time)
|
|
|
|
|
|
def testNoOverride(self):
|
|
"Must not override the file, because the contents are the same"
|
|
contents = 'Contents!\nContents!'
|
|
# create the file normally first
|
|
f = file(self.FILENAME, 'w')
|
|
f.write(contents)
|
|
f.close()
|
|
file_time = os.path.getmtime(self.FILENAME)
|
|
self.assert_(os.path.isfile(self.FILENAME))
|
|
time.sleep(2)
|
|
f = SmartFile(self.FILENAME, 'w')
|
|
f.write(contents)
|
|
f.close()
|
|
new_file_time = os.path.getmtime(self.FILENAME)
|
|
self.assert_(new_file_time == file_time)
|
|
|
|
|
|
def testAutoClose(self):
|
|
"Must be closed when garbage-collected"
|
|
def foo():
|
|
f = SmartFile(self.FILENAME)
|
|
f.write('testing')
|
|
self.assert_(not os.path.isfile(self.FILENAME))
|
|
foo()
|
|
self.assert_(os.path.isfile(self.FILENAME))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|