diff options
Diffstat (limited to 'Lib/test/test_shutil.py')
| -rw-r--r-- | Lib/test/test_shutil.py | 59 |
1 files changed, 58 insertions, 1 deletions
diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py index d2d4d03..1d5e01a 100644 --- a/Lib/test/test_shutil.py +++ b/Lib/test/test_shutil.py @@ -30,6 +30,12 @@ try: except ImportError: BZ2_SUPPORTED = False +try: + import lzma + LZMA_SUPPORTED = True +except ImportError: + LZMA_SUPPORTED = False + TESTFN2 = TESTFN + "2" try: @@ -1229,6 +1235,8 @@ class TestShutil(unittest.TestCase): formats = ['tar', 'gztar', 'zip'] if BZ2_SUPPORTED: formats.append('bztar') + if LZMA_SUPPORTED: + formats.append('xztar') root_dir, base_dir = self._create_files() expected = rlistdir(root_dir) @@ -1249,7 +1257,7 @@ class TestShutil(unittest.TestCase): self.assertRaises(shutil.ReadError, unpack_archive, TESTFN) self.assertRaises(ValueError, unpack_archive, TESTFN, format='xxx') - def test_unpack_registery(self): + def test_unpack_registry(self): formats = get_unpack_formats() @@ -1665,6 +1673,24 @@ class TestMove(unittest.TestCase): rv = shutil.move(self.src_file, os.path.join(self.dst_dir, 'bar')) self.assertEqual(rv, os.path.join(self.dst_dir, 'bar')) + @mock_rename + def test_move_file_special_function(self): + moved = [] + def _copy(src, dst): + moved.append((src, dst)) + shutil.move(self.src_file, self.dst_dir, copy_function=_copy) + self.assertEqual(len(moved), 1) + + @mock_rename + def test_move_dir_special_function(self): + moved = [] + def _copy(src, dst): + moved.append((src, dst)) + support.create_empty_file(os.path.join(self.src_dir, 'child')) + support.create_empty_file(os.path.join(self.src_dir, 'child1')) + shutil.move(self.src_dir, self.dst_dir, copy_function=_copy) + self.assertEqual(len(moved), 3) + class TestCopyFile(unittest.TestCase): @@ -1802,15 +1828,27 @@ class TermsizeTests(unittest.TestCase): with support.EnvironmentVarGuard() as env: env['COLUMNS'] = '777' + del env['LINES'] size = shutil.get_terminal_size() self.assertEqual(size.columns, 777) with support.EnvironmentVarGuard() as env: + del env['COLUMNS'] env['LINES'] = '888' size = shutil.get_terminal_size() self.assertEqual(size.lines, 888) + def test_bad_environ(self): + with support.EnvironmentVarGuard() as env: + env['COLUMNS'] = 'xxx' + env['LINES'] = 'yyy' + size = shutil.get_terminal_size() + self.assertGreaterEqual(size.columns, 0) + self.assertGreaterEqual(size.lines, 0) + @unittest.skipUnless(os.isatty(sys.__stdout__.fileno()), "not on tty") + @unittest.skipUnless(hasattr(os, 'get_terminal_size'), + 'need os.get_terminal_size()') def test_stty_match(self): """Check if stty returns the same results ignoring env @@ -1831,6 +1869,25 @@ class TermsizeTests(unittest.TestCase): self.assertEqual(expected, actual) + def test_fallback(self): + with support.EnvironmentVarGuard() as env: + del env['LINES'] + del env['COLUMNS'] + + # sys.__stdout__ has no fileno() + with support.swap_attr(sys, '__stdout__', None): + size = shutil.get_terminal_size(fallback=(10, 20)) + self.assertEqual(size.columns, 10) + self.assertEqual(size.lines, 20) + + # sys.__stdout__ is not a terminal on Unix + # or fileno() not in (0, 1, 2) on Windows + with open(os.devnull, 'w') as f, \ + support.swap_attr(sys, '__stdout__', f): + size = shutil.get_terminal_size(fallback=(30, 40)) + self.assertEqual(size.columns, 30) + self.assertEqual(size.lines, 40) + class PublicAPITests(unittest.TestCase): """Ensures that the correct values are exposed in the public API.""" |
