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_dircache.py < prev    next >
Encoding:
Python Source  |  2011-03-15  |  2.4 KB  |  78 lines

  1. """
  2.   Test cases for the dircache module
  3.   Nick Mathewson
  4. """
  5.  
  6. import unittest
  7. from test.test_support import run_unittest, TESTFN, import_module
  8. dircache = import_module('dircache', deprecated=True)
  9. import os, time, sys, tempfile
  10.  
  11.  
  12. class DircacheTests(unittest.TestCase):
  13.     def setUp(self):
  14.         self.tempdir = tempfile.mkdtemp()
  15.  
  16.     def tearDown(self):
  17.         for fname in os.listdir(self.tempdir):
  18.             self.delTemp(fname)
  19.         os.rmdir(self.tempdir)
  20.  
  21.     def writeTemp(self, fname):
  22.         f = open(os.path.join(self.tempdir, fname), 'w')
  23.         f.close()
  24.  
  25.     def mkdirTemp(self, fname):
  26.         os.mkdir(os.path.join(self.tempdir, fname))
  27.  
  28.     def delTemp(self, fname):
  29.         fname = os.path.join(self.tempdir, fname)
  30.         if os.path.isdir(fname):
  31.             os.rmdir(fname)
  32.         else:
  33.             os.unlink(fname)
  34.  
  35.     def test_listdir(self):
  36.         ## SUCCESSFUL CASES
  37.         entries = dircache.listdir(self.tempdir)
  38.         self.assertEquals(entries, [])
  39.  
  40.         # Check that cache is actually caching, not just passing through.
  41.         self.assert_(dircache.listdir(self.tempdir) is entries)
  42.  
  43.         # Directories aren't "files" on Windows, and directory mtime has
  44.         # nothing to do with when files under a directory get created.
  45.         # That is, this test can't possibly work under Windows -- dircache
  46.         # is only good for capturing a one-shot snapshot there.
  47.  
  48.         if sys.platform[:3] not in ('win', 'os2'):
  49.             # Sadly, dircache has the same granularity as stat.mtime, and so
  50.             # can't notice any changes that occurred within 1 sec of the last
  51.             # time it examined a directory.
  52.             time.sleep(1)
  53.             self.writeTemp("test1")
  54.             entries = dircache.listdir(self.tempdir)
  55.             self.assertEquals(entries, ['test1'])
  56.             self.assert_(dircache.listdir(self.tempdir) is entries)
  57.  
  58.         ## UNSUCCESSFUL CASES
  59.         self.assertRaises(OSError, dircache.listdir, self.tempdir+"_nonexistent")
  60.  
  61.     def test_annotate(self):
  62.         self.writeTemp("test2")
  63.         self.mkdirTemp("A")
  64.         lst = ['A', 'test2', 'test_nonexistent']
  65.         dircache.annotate(self.tempdir, lst)
  66.         self.assertEquals(lst, ['A/', 'test2', 'test_nonexistent'])
  67.  
  68.  
  69. def test_main():
  70.     try:
  71.         run_unittest(DircacheTests)
  72.     finally:
  73.         dircache.reset()
  74.  
  75.  
  76. if __name__ == "__main__":
  77.     test_main()
  78.