blob: bf416b6d79d38639e02299718eaa6447826d729b [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
Tarek Ziadéc1375d52009-02-14 14:35:51 +000012from distutils.tests import support
Tarek Ziadé70a74eb2009-02-06 00:38:35 +000013
Tarek Ziadéc1375d52009-02-14 14:35:51 +000014class DirUtilTestCase(support.TempdirManager, unittest.TestCase):
Tarek Ziadé70a74eb2009-02-06 00:38:35 +000015
16 def _log(self, msg, *args):
17 if len(args) > 0:
18 self._logs.append(msg % args)
19 else:
20 self._logs.append(msg)
21
22 def setUp(self):
Tarek Ziadéc1375d52009-02-14 14:35:51 +000023 support.TempdirManager.setUp(self)
Tarek Ziadé70a74eb2009-02-06 00:38:35 +000024 self._logs = []
Tarek Ziadéc1375d52009-02-14 14:35:51 +000025 tmp_dir = self.mkdtemp()
26 self.root_target = os.path.join(tmp_dir, 'deep')
Tarek Ziadé70a74eb2009-02-06 00:38:35 +000027 self.target = os.path.join(self.root_target, 'here')
Tarek Ziadéc1375d52009-02-14 14:35:51 +000028 self.target2 = os.path.join(tmp_dir, 'deep2')
Tarek Ziadé70a74eb2009-02-06 00:38:35 +000029 self.old_log = log.info
30 log.info = self._log
31
32 def tearDown(self):
Tarek Ziadé70a74eb2009-02-06 00:38:35 +000033 log.info = self.old_log
Tarek Ziadéc1375d52009-02-14 14:35:51 +000034 support.TempdirManager.tearDown(self)
Tarek Ziadé70a74eb2009-02-06 00:38:35 +000035
36 def test_mkpath_remove_tree_verbosity(self):
37
38 mkpath(self.target, verbose=0)
39 wanted = []
40 self.assertEquals(self._logs, wanted)
41 remove_tree(self.root_target, verbose=0)
42
43 mkpath(self.target, verbose=1)
44 wanted = ['creating %s' % self.root_target,
45 'creating %s' % self.target]
46 self.assertEquals(self._logs, wanted)
47 self._logs = []
48
49 remove_tree(self.root_target, verbose=1)
50 wanted = ["removing '%s' (and everything under it)" % self.root_target]
51 self.assertEquals(self._logs, wanted)
52
53 def test_create_tree_verbosity(self):
54
55 create_tree(self.root_target, ['one', 'two', 'three'], verbose=0)
56 self.assertEquals(self._logs, [])
57 remove_tree(self.root_target, verbose=0)
58
59 wanted = ['creating %s' % self.root_target]
60 create_tree(self.root_target, ['one', 'two', 'three'], verbose=1)
61 self.assertEquals(self._logs, wanted)
62
63 remove_tree(self.root_target, verbose=0)
64
65
66 def test_copy_tree_verbosity(self):
67
68 mkpath(self.target, verbose=0)
69
70 copy_tree(self.target, self.target2, verbose=0)
71 self.assertEquals(self._logs, [])
72
73 remove_tree(self.root_target, verbose=0)
74
75 mkpath(self.target, verbose=0)
76 a_file = os.path.join(self.target, 'ok.txt')
77 f = open(a_file, 'w')
78 f.write('some content')
79 f.close()
80
81 wanted = ['copying %s -> %s' % (a_file, self.target2)]
82 copy_tree(self.target, self.target2, verbose=1)
83 self.assertEquals(self._logs, wanted)
84
85 remove_tree(self.root_target, verbose=0)
86 remove_tree(self.target2, verbose=0)
87
88def test_suite():
89 return unittest.makeSuite(DirUtilTestCase)
90
91if __name__ == "__main__":
92 unittest.main(defaultTest="test_suite")