NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

test_dir_util.py (3665B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\stdlib\distutils\tests\test_dir_util.py
      2 import unittest
      3 import os
      4 import stat
      5 import shutil
      6 import sys
      7 from distutils.dir_util import mkpath, remove_tree, create_tree, copy_tree, ensure_relative
      8 from distutils import log
      9 from distutils.tests import support
     10 
     11 class DirUtilTestCase(support.TempdirManager, unittest.TestCase):
     12 
     13     def _log(self, msg, *args):
     14         if len(args) > 0:
     15             self._logs.append(msg % args)
     16         else:
     17             self._logs.append(msg)
     18 
     19     def setUp(self):
     20         super(DirUtilTestCase, self).setUp()
     21         self._logs = []
     22         tmp_dir = self.mkdtemp()
     23         self.root_target = os.path.join(tmp_dir, 'deep')
     24         self.target = os.path.join(self.root_target, 'here')
     25         self.target2 = os.path.join(tmp_dir, 'deep2')
     26         self.old_log = log.info
     27         log.info = self._log
     28 
     29     def tearDown(self):
     30         log.info = self.old_log
     31         super(DirUtilTestCase, self).tearDown()
     32 
     33     def test_mkpath_remove_tree_verbosity(self):
     34         mkpath(self.target, verbose=0)
     35         wanted = []
     36         self.assertEqual(self._logs, wanted)
     37         remove_tree(self.root_target, verbose=0)
     38         mkpath(self.target, verbose=1)
     39         wanted = ['creating %s' % self.root_target, 'creating %s' % self.target]
     40         self.assertEqual(self._logs, wanted)
     41         self._logs = []
     42         remove_tree(self.root_target, verbose=1)
     43         wanted = ["removing '%s' (and everything under it)" % self.root_target]
     44         self.assertEqual(self._logs, wanted)
     45 
     46     @unittest.skipIf(sys.platform.startswith('win'), 'This test is only appropriate for POSIX-like systems.')
     47     def test_mkpath_with_custom_mode(self):
     48         umask = os.umask(2)
     49         os.umask(umask)
     50         mkpath(self.target, 448)
     51         self.assertEqual(stat.S_IMODE(os.stat(self.target).st_mode), 448 & ~umask)
     52         mkpath(self.target2, 365)
     53         self.assertEqual(stat.S_IMODE(os.stat(self.target2).st_mode), 365 & ~umask)
     54 
     55     def test_create_tree_verbosity(self):
     56         create_tree(self.root_target, ['one', 'two', 'three'], verbose=0)
     57         self.assertEqual(self._logs, [])
     58         remove_tree(self.root_target, verbose=0)
     59         wanted = ['creating %s' % self.root_target]
     60         create_tree(self.root_target, ['one', 'two', 'three'], verbose=1)
     61         self.assertEqual(self._logs, wanted)
     62         remove_tree(self.root_target, verbose=0)
     63 
     64     def test_copy_tree_verbosity(self):
     65         mkpath(self.target, verbose=0)
     66         copy_tree(self.target, self.target2, verbose=0)
     67         self.assertEqual(self._logs, [])
     68         remove_tree(self.root_target, verbose=0)
     69         mkpath(self.target, verbose=0)
     70         a_file = os.path.join(self.target, 'ok.txt')
     71         f = open(a_file, 'w')
     72         try:
     73             f.write('some content')
     74         finally:
     75             f.close()
     76 
     77         wanted = ['copying %s -> %s' % (a_file, self.target2)]
     78         copy_tree(self.target, self.target2, verbose=1)
     79         self.assertEqual(self._logs, wanted)
     80         remove_tree(self.root_target, verbose=0)
     81         remove_tree(self.target2, verbose=0)
     82 
     83     def test_ensure_relative(self):
     84         if os.sep == '/':
     85             self.assertEqual(ensure_relative('/home/foo'), 'home/foo')
     86             self.assertEqual(ensure_relative('some/path'), 'some/path')
     87         else:
     88             self.assertEqual(ensure_relative('c:\\home\\foo'), 'c:home\\foo')
     89             self.assertEqual(ensure_relative('home\\foo'), 'home\\foo')
     90 
     91 
     92 def test_suite():
     93     return unittest.makeSuite(DirUtilTestCase)
     94 
     95 
     96 if __name__ == '__main__':
     97     unittest.main(defaultTest='test_suite')