test_file_util.py 1.8 KB
Newer Older
1 2 3 4 5 6 7
"""Tests for distutils.file_util."""
import unittest
import os
import shutil

from distutils.file_util import move_file
from distutils import log
8
from distutils.tests import support
9

10
class FileUtilTestCase(support.TempdirManager, unittest.TestCase):
11 12 13 14 15 16 17 18

    def _log(self, msg, *args):
        if len(args) > 0:
            self._logs.append(msg % args)
        else:
            self._logs.append(msg)

    def setUp(self):
19
        support.TempdirManager.setUp(self)
20 21 22
        self._logs = []
        self.old_log = log.info
        log.info = self._log
23 24 25 26
        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')
27 28 29

    def tearDown(self):
        log.info = self.old_log
30
        support.TempdirManager.tearDown(self)
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

    def test_move_file_verbosity(self):
        f = open(self.source, 'w')
        f.write('some content')
        f.close()

        move_file(self.source, self.target, verbose=0)
        wanted = []
        self.assertEquals(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.assertEquals(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.assertEquals(self._logs, wanted)


def test_suite():
    return unittest.makeSuite(FileUtilTestCase)

if __name__ == "__main__":
    unittest.main(defaultTest="test_suite")