PATH:
opt
/
bitninja-python-dojo
/
embedded
/
lib
/
python3.9
/
distutils
/
tests
"""Tests for distutils.file_util.""" import unittest import os import errno from unittest.mock import patch from distutils.file_util import move_file, copy_file from distutils import log from distutils.tests import support from distutils.errors import DistutilsFileError from test.support import run_unittest, unlink 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_move_file_exception_unpacking_rename(self): # see issue 22182 with patch("os.rename", side_effect=OSError("wrong", 1)), \ self.assertRaises(DistutilsFileError): with open(self.source, 'w') as fobj: fobj.write('spam eggs') move_file(self.source, self.target, verbose=0) def test_move_file_exception_unpacking_unlink(self): # see issue 22182 with patch("os.rename", side_effect=OSError(errno.EXDEV, "wrong")), \ patch("os.unlink", side_effect=OSError("wrong", 1)), \ self.assertRaises(DistutilsFileError): with open(self.source, 'w') as fobj: fobj.write('spam eggs') move_file(self.source, self.target, verbose=0) def test_copy_file_hard_link(self): with open(self.source, 'w') as f: f.write('some content') # Check first that copy_file() will not fall back on copying the file # instead of creating the hard link. try: os.link(self.source, self.target) except OSError as e: self.skipTest('os.link: %s' % e) else: unlink(self.target) st = os.stat(self.source) copy_file(self.source, self.target, link='hard') st2 = os.stat(self.source) st3 = os.stat(self.target) self.assertTrue(os.path.samestat(st, st2), (st, st2)) self.assertTrue(os.path.samestat(st2, st3), (st2, st3)) with open(self.source, 'r') as f: self.assertEqual(f.read(), 'some content') def test_copy_file_hard_link_failure(self): # If hard linking fails, copy_file() falls back on copying file # (some special filesystems don't support hard linking even under # Unix, see issue #8876). with open(self.source, 'w') as f: f.write('some content') st = os.stat(self.source) with patch("os.link", side_effect=OSError(0, "linking unsupported")): copy_file(self.source, self.target, link='hard') st2 = os.stat(self.source) st3 = os.stat(self.target) self.assertTrue(os.path.samestat(st, st2), (st, st2)) self.assertFalse(os.path.samestat(st2, st3), (st2, st3)) for fn in (self.source, self.target): with open(fn, 'r') as f: self.assertEqual(f.read(), 'some content') def test_suite(): return unittest.makeSuite(FileUtilTestCase) if __name__ == "__main__": run_unittest(test_suite())
[-] test_log.py
[edit]
[-] test_spawn.py
[edit]
[-] test_bdist_dumb.py
[edit]
[-] test_util.py
[edit]
[-] xxmodule.c
[edit]
[-] test_msvc9compiler.py
[edit]
[+]
..
[-] test_dir_util.py
[edit]
[-] test_cmd.py
[edit]
[-] test_dep_util.py
[edit]
[-] test_archive_util.py
[edit]
[-] test_file_util.py
[edit]
[-] test_build_scripts.py
[edit]
[-] test_bdist_rpm.py
[edit]
[-] test_install_lib.py
[edit]
[-] test_build_ext.py
[edit]
[-] test_version.py
[edit]
[-] test_register.py
[edit]
[-] test_text_file.py
[edit]
[-] test_upload.py
[edit]
[-] test_sysconfig.py
[edit]
[-] test_bdist_msi.py
[edit]
[-] test_dist.py
[edit]
[-] support.py
[edit]
[-] test_install.py
[edit]
[-] test_install_scripts.py
[edit]
[+]
__pycache__
[-] test_cygwinccompiler.py
[edit]
[-] test_bdist.py
[edit]
[-] test_install_headers.py
[edit]
[-] test_build_py.py
[edit]
[-] test_build.py
[edit]
[-] test_config_cmd.py
[edit]
[-] test_versionpredicate.py
[edit]
[-] __init__.py
[edit]
[-] test_core.py
[edit]
[-] includetest.rst
[edit]
[-] test_filelist.py
[edit]
[-] test_build_clib.py
[edit]
[-] test_extension.py
[edit]
[-] test_install_data.py
[edit]
[-] test_unixccompiler.py
[edit]
[-] test_sdist.py
[edit]
[-] test_check.py
[edit]
[-] test_config.py
[edit]
[-] test_msvccompiler.py
[edit]
[-] test_clean.py
[edit]
[-] test_bdist_wininst.py
[edit]
[-] Setup.sample
[edit]