| # 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() |