| """Tests for distutils.file_util.""" | |
| import unittest | |
| import os | |
| import shutil | |
| from distutils.file_util import move_file, write_file, copy_file | |
| from distutils import log | |
| from distutils.tests import support | |
| from test.test_support import run_unittest | |
| class FileUtilTestCase(support.TempdirManager, unittest.TestCase): | |
| def _log(self, msg, *args): | |
| if len(args) > 0: | |
| self._logs.append(msg % args) | |
| else: | |
| self._logs.append(msg) | |
| def setUp(self): | |
| super(FileUtilTestCase, self).setUp() | |
| self._logs = [] | |
| self.old_log = log.info | |
| log.info = self._log | |
| tmp_dir = self.mkdtemp() | |
| self.source = os.path.join(tmp_dir, 'f1') | |
| self.target = os.path.join(tmp_dir, 'f2') | |
| self.target_dir = os.path.join(tmp_dir, 'd1') | |
| def tearDown(self): | |
| log.info = self.old_log | |
| super(FileUtilTestCase, self).tearDown() | |
| def test_move_file_verbosity(self): | |
| f = open(self.source, 'w') | |
| try: | |
| f.write('some content') | |
| finally: | |
| f.close() | |
| move_file(self.source, self.target, verbose=0) | |
| wanted = [] | |
| self.assertEqual(self._logs, wanted) | |
| # back to original state | |
| move_file(self.target, self.source, verbose=0) | |
| move_file(self.source, self.target, verbose=1) | |
| wanted = ['moving %s -> %s' % (self.source, self.target)] | |
| self.assertEqual(self._logs, wanted) | |
| # back to original state | |
| move_file(self.target, self.source, verbose=0) | |
| self._logs = [] | |
| # now the target is a dir | |
| os.mkdir(self.target_dir) | |
| move_file(self.source, self.target_dir, verbose=1) | |
| wanted = ['moving %s -> %s' % (self.source, self.target_dir)] | |
| self.assertEqual(self._logs, wanted) | |
| def test_write_file(self): | |
| lines = ['a', 'b', 'c'] | |
| dir = self.mkdtemp() | |
| foo = os.path.join(dir, 'foo') | |
| write_file(foo, lines) | |
| content = [line.strip() for line in open(foo).readlines()] | |
| self.assertEqual(content, lines) | |
| def test_copy_file(self): | |
| src_dir = self.mkdtemp() | |
| foo = os.path.join(src_dir, 'foo') | |
| write_file(foo, 'content') | |
| dst_dir = self.mkdtemp() | |
| copy_file(foo, dst_dir) | |
| self.assertTrue(os.path.exists(os.path.join(dst_dir, 'foo'))) | |
| def test_suite(): | |
| return unittest.makeSuite(FileUtilTestCase) | |
| if __name__ == "__main__": | |
| run_unittest(test_suite()) |