diff -r 2f688a51b37b Lib/test/test_filecmp.py --- a/Lib/test/test_filecmp.py Sun Aug 25 18:29:16 2013 +0200 +++ b/Lib/test/test_filecmp.py Sun Aug 25 13:58:34 2013 -0400 @@ -1,7 +1,9 @@ -import os, filecmp, shutil, tempfile +import os, filecmp, shutil, tempfile, sys import unittest from test import support + + class FileCompareTestCase(unittest.TestCase): def setUp(self): self.name = support.TESTFN @@ -145,6 +147,87 @@ self.assertEqual(d.same_files, ['file']) self.assertEqual(d.diff_files, ['file2']) + def test_phase2_dircmp_optional_params(self): + #Specify subdirectories to hide + left_dir, right_dir = self.dir, self.dir_same + hide_dir = ['somedir'] + ignore_mask = ['.git'] + + dircmp = filecmp.dircmp(left_dir, right_dir, ignore=ignore_mask, hide=hide_dir) + self.assertEqual(dircmp.hide, hide_dir) + self.assertEqual(dircmp.ignore, ignore_mask) + + def test_phase2_check_funny_params(self): + #check that appropriate common_funny get set when full path is invalid + left_dir, right_dir = self.dir, self.dir_same + dircmp = filecmp.dircmp(left_dir, right_dir) + dircmp.common = ['not_available.dat'] + dircmp.phase2() + self.assertEqual(dircmp.common_funny, dircmp.common) + + def test_phase2_check_diff_files(self): + # funny type is a dir and a file + left_dir, right_dir = self.dir, self.dir_diff + check_type_file = os.path.join(left_dir, 'check_type') + output = open(check_type_file, 'w') + output.write("") + output.close() + check_type_dir = os.path.join(right_dir, 'check_type') + os.mkdir(check_type_dir) + + dircmp = filecmp.dircmp(left_dir, right_dir) + dircmp.common = ['check_type'] + dircmp.phase2() + self.assertEqual(dircmp.common_funny, dircmp.common) + + def test_phase2_check_isdir_common(self): + # Common dirs + left_dir, right_dir = self.dir, self.dir_diff + check_type_dir = (os.path.join(right_dir, 'dir_type'), + os.path.join(left_dir, 'dir_type')) + for x in check_type_dir: os.mkdir(x) + + dircmp = filecmp.dircmp(left_dir, right_dir) + dircmp.common = ['dir_type'] + dircmp.phase2() + self.assertEqual(dircmp.common_dirs, dircmp.common) + + @unittest.skipIf(sys.platform == "win32", "skipped on Windows") + def test_phase2_funny_type(self): + # Funny type is not a dir and not a file + left_dir, right_dir = self.dir, self.dir_diff + check_funny_type = (os.path.join(right_dir, 'funny_type'), + os.path.join(left_dir, 'funny_type')) + for x in check_funny_type: os.mkfifo(x) + dircmp = filecmp.dircmp(left_dir, right_dir) + dircmp.common = ['funny_type'] + dircmp.phase2() + self.assertEqual(dircmp.common_funny, dircmp.common) + + def test_phase4_common_subdirs(self): + left_dir, right_dir = self.dir, self.dir_diff + check_type_dir = (os.path.join(right_dir, 'dir_type'), + os.path.join(left_dir, 'dir_type')) + for x in check_type_dir: os.mkdir(x) + + dircmp = filecmp.dircmp(left_dir, right_dir) + dircmp.common = ['dir_type'] + dircmp.phase2() + dircmp.phase4() + self.assertEqual(1, len(dircmp.subdirs)) + self.assertIn('dir_type', dircmp.subdirs) + + def test_phase4_closure(self): + left_dir, right_dir = self.dir, self.dir_diff + check_type_dir = (os.path.join(right_dir, 'dir_type'), + os.path.join(left_dir, 'dir_type')) + for x in check_type_dir: os.mkdir(x) + + dircmp = filecmp.dircmp(left_dir, right_dir) + dircmp.common = ['dir_type'] + dircmp.phase4_closure() + self.assertEqual(1, len(dircmp.subdirs)) + self.assertIn('dir_type', dircmp.subdirs) def test_main(): support.run_unittest(FileCompareTestCase, DirCompareTestCase)