home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / test_dircache.py < prev    next >
Text File  |  2003-12-30  |  2KB  |  75 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
  8. import dircache, os, time, sys
  9.  
  10.  
  11. class DircacheTests(unittest.TestCase):
  12.     def setUp(self):
  13.         self.tempdir = TESTFN+"_dir"
  14.         os.mkdir(self.tempdir)
  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 occured 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.assertEquals(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.     run_unittest(DircacheTests)
  71.  
  72.  
  73. if __name__ == "__main__":
  74.     test_main()
  75.