home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 July / maximum-cd-2011-07.iso / DiscContents / LibO_3.3.2_Win_x86_install_multi.exe / libreoffice1.cab / test_filecmp.py < prev    next >
Encoding:
Python Source  |  2011-03-15  |  5.3 KB  |  135 lines

  1.  
  2. import os, filecmp, shutil, tempfile, shutil
  3. import unittest
  4. from test import test_support
  5.  
  6. class FileCompareTestCase(unittest.TestCase):
  7.     def setUp(self):
  8.         self.name = test_support.TESTFN
  9.         self.name_same = test_support.TESTFN + '-same'
  10.         self.name_diff = test_support.TESTFN + '-diff'
  11.         data = 'Contents of file go here.\n'
  12.         for name in [self.name, self.name_same, self.name_diff]:
  13.             output = open(name, 'w')
  14.             output.write(data)
  15.             output.close()
  16.  
  17.         output = open(self.name_diff, 'a+')
  18.         output.write('An extra line.\n')
  19.         output.close()
  20.         self.dir = tempfile.gettempdir()
  21.  
  22.     def tearDown(self):
  23.         os.unlink(self.name)
  24.         os.unlink(self.name_same)
  25.         os.unlink(self.name_diff)
  26.  
  27.     def test_matching(self):
  28.         self.failUnless(filecmp.cmp(self.name, self.name_same),
  29.                         "Comparing file to itself fails")
  30.         self.failUnless(filecmp.cmp(self.name, self.name_same, shallow=False),
  31.                         "Comparing file to itself fails")
  32.         self.failUnless(filecmp.cmp(self.name, self.name, shallow=False),
  33.                         "Comparing file to identical file fails")
  34.         self.failUnless(filecmp.cmp(self.name, self.name),
  35.                         "Comparing file to identical file fails")
  36.  
  37.     def test_different(self):
  38.         self.failIf(filecmp.cmp(self.name, self.name_diff),
  39.                     "Mismatched files compare as equal")
  40.         self.failIf(filecmp.cmp(self.name, self.dir),
  41.                     "File and directory compare as equal")
  42.  
  43. class DirCompareTestCase(unittest.TestCase):
  44.     def setUp(self):
  45.         tmpdir = tempfile.gettempdir()
  46.         self.dir = os.path.join(tmpdir, 'dir')
  47.         self.dir_same = os.path.join(tmpdir, 'dir-same')
  48.         self.dir_diff = os.path.join(tmpdir, 'dir-diff')
  49.         self.caseinsensitive = os.path.normcase('A') == os.path.normcase('a')
  50.         data = 'Contents of file go here.\n'
  51.         for dir in [self.dir, self.dir_same, self.dir_diff]:
  52.             shutil.rmtree(dir, True)
  53.             os.mkdir(dir)
  54.             if self.caseinsensitive and dir is self.dir_same:
  55.                 fn = 'FiLe'     # Verify case-insensitive comparison
  56.             else:
  57.                 fn = 'file'
  58.             output = open(os.path.join(dir, fn), 'w')
  59.             output.write(data)
  60.             output.close()
  61.  
  62.         output = open(os.path.join(self.dir_diff, 'file2'), 'w')
  63.         output.write('An extra file.\n')
  64.         output.close()
  65.  
  66.     def tearDown(self):
  67.         shutil.rmtree(self.dir)
  68.         shutil.rmtree(self.dir_same)
  69.         shutil.rmtree(self.dir_diff)
  70.  
  71.     def test_cmpfiles(self):
  72.         self.failUnless(filecmp.cmpfiles(self.dir, self.dir, ['file']) ==
  73.                         (['file'], [], []),
  74.                         "Comparing directory to itself fails")
  75.         self.failUnless(filecmp.cmpfiles(self.dir, self.dir_same, ['file']) ==
  76.                         (['file'], [], []),
  77.                         "Comparing directory to same fails")
  78.  
  79.         # Try it with shallow=False
  80.         self.failUnless(filecmp.cmpfiles(self.dir, self.dir, ['file'],
  81.                                          shallow=False) ==
  82.                         (['file'], [], []),
  83.                         "Comparing directory to itself fails")
  84.         self.failUnless(filecmp.cmpfiles(self.dir, self.dir_same, ['file'],
  85.                                          shallow=False),
  86.                         "Comparing directory to same fails")
  87.  
  88.         # Add different file2
  89.         output = open(os.path.join(self.dir, 'file2'), 'w')
  90.         output.write('Different contents.\n')
  91.         output.close()
  92.  
  93.         self.failIf(filecmp.cmpfiles(self.dir, self.dir_same,
  94.                                      ['file', 'file2']) ==
  95.                     (['file'], ['file2'], []),
  96.                     "Comparing mismatched directories fails")
  97.  
  98.  
  99.     def test_dircmp(self):
  100.         # Check attributes for comparison of two identical directories
  101.         d = filecmp.dircmp(self.dir, self.dir_same)
  102.         if self.caseinsensitive:
  103.             self.assertEqual([d.left_list, d.right_list],[['file'], ['FiLe']])
  104.         else:
  105.             self.assertEqual([d.left_list, d.right_list],[['file'], ['file']])
  106.         self.failUnless(d.common == ['file'])
  107.         self.failUnless(d.left_only == d.right_only == [])
  108.         self.failUnless(d.same_files == ['file'])
  109.         self.failUnless(d.diff_files == [])
  110.  
  111.         # Check attributes for comparison of two different directories
  112.         d = filecmp.dircmp(self.dir, self.dir_diff)
  113.         self.failUnless(d.left_list == ['file'])
  114.         self.failUnless(d.right_list == ['file', 'file2'])
  115.         self.failUnless(d.common == ['file'])
  116.         self.failUnless(d.left_only == [])
  117.         self.failUnless(d.right_only == ['file2'])
  118.         self.failUnless(d.same_files == ['file'])
  119.         self.failUnless(d.diff_files == [])
  120.  
  121.         # Add different file2
  122.         output = open(os.path.join(self.dir, 'file2'), 'w')
  123.         output.write('Different contents.\n')
  124.         output.close()
  125.         d = filecmp.dircmp(self.dir, self.dir_diff)
  126.         self.failUnless(d.same_files == ['file'])
  127.         self.failUnless(d.diff_files == ['file2'])
  128.  
  129.  
  130. def test_main():
  131.     test_support.run_unittest(FileCompareTestCase, DirCompareTestCase)
  132.  
  133. if __name__ == "__main__":
  134.     test_main()
  135.