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