blob: edf93c40c5b2626b95133d4580145a21d6fc6e88 [file] [log] [blame]
Tarek Ziadé70a74eb2009-02-06 00:38:35 +00001"""Tests for distutils.dir_util."""
2import unittest
3import os
4import shutil
5
6from distutils.dir_util import mkpath
7from distutils.dir_util import remove_tree
8from distutils.dir_util import create_tree
9from distutils.dir_util import copy_tree
10
11from distutils import log
12
13class DirUtilTestCase(unittest.TestCase):
14
15 def _log(self, msg, *args):
16 if len(args) > 0:
17 self._logs.append(msg % args)
18 else:
19 self._logs.append(msg)
20
21 def setUp(self):
22 self._logs = []
23 self.root_target = os.path.join(os.path.dirname(__file__), 'deep')
24 self.target = os.path.join(self.root_target, 'here')
25 self.target2 = os.path.join(os.path.dirname(__file__), 'deep2')
26 self.old_log = log.info
27 log.info = self._log
28
29 def tearDown(self):
30 for target in (self.target, self.target2):
31 if os.path.exists(target):
32 shutil.rmtree(target)
33 log.info = self.old_log
34
35 def test_mkpath_remove_tree_verbosity(self):
36
37 mkpath(self.target, verbose=0)
38 wanted = []
39 self.assertEquals(self._logs, wanted)
40 remove_tree(self.root_target, verbose=0)
41
42 mkpath(self.target, verbose=1)
43 wanted = ['creating %s' % self.root_target,
44 'creating %s' % self.target]
45 self.assertEquals(self._logs, wanted)
46 self._logs = []
47
48 remove_tree(self.root_target, verbose=1)
49 wanted = ["removing '%s' (and everything under it)" % self.root_target]
50 self.assertEquals(self._logs, wanted)
51
52 def test_create_tree_verbosity(self):
53
54 create_tree(self.root_target, ['one', 'two', 'three'], verbose=0)
55 self.assertEquals(self._logs, [])
56 remove_tree(self.root_target, verbose=0)
57
58 wanted = ['creating %s' % self.root_target]
59 create_tree(self.root_target, ['one', 'two', 'three'], verbose=1)
60 self.assertEquals(self._logs, wanted)
61
62 remove_tree(self.root_target, verbose=0)
63
64
65 def test_copy_tree_verbosity(self):
66
67 mkpath(self.target, verbose=0)
68
69 copy_tree(self.target, self.target2, verbose=0)
70 self.assertEquals(self._logs, [])
71
72 remove_tree(self.root_target, verbose=0)
73
74 mkpath(self.target, verbose=0)
75 a_file = os.path.join(self.target, 'ok.txt')
76 f = open(a_file, 'w')
77 f.write('some content')
78 f.close()
79
80 wanted = ['copying %s -> %s' % (a_file, self.target2)]
81 copy_tree(self.target, self.target2, verbose=1)
82 self.assertEquals(self._logs, wanted)
83
84 remove_tree(self.root_target, verbose=0)
85 remove_tree(self.target2, verbose=0)
86
87def test_suite():
88 return unittest.makeSuite(DirUtilTestCase)
89
90if __name__ == "__main__":
91 unittest.main(defaultTest="test_suite")