text: """
    Test cases for the dircache module
    Nick Mathewson
  """
  
  import unittest
  from test.test_support import run_unittest, TESTFN
  import dircache, os, time, sys
  
  
  class DircacheTests(unittest.TestCase):
      def setUp(self):
          self.tempdir = TESTFN+"_dir"
          os.mkdir(self.tempdir)
  
      def tearDown(self):
          for fname in os.listdir(self.tempdir):
              self.delTemp(fname)
          os.rmdir(self.tempdir)
  
      def writeTemp(self, fname):
          f = open(os.path.join(self.tempdir, fname), 'w')
          f.close()
  
      def mkdirTemp(self, fname):
          os.mkdir(os.path.join(self.tempdir, fname))
  
      def delTemp(self, fname):
          fname = os.path.join(self.tempdir, fname)
          if os.path.isdir(fname):
              os.rmdir(fname)
          else:
              os.unlink(fname)
  
      def test_listdir(self):
          ## SUCCESSFUL CASES
          entries = dircache.listdir(self.tempdir)
          self.assertEquals(entries, [])
  
          # Check that cache is actually caching, not just passing through.
          self.assert_(dircache.listdir(self.tempdir) is entries)
  
          # Directories aren't "files" on Windows, and directory mtime has
          # nothing to do with when files under a directory get created.
          # That is, this test can't possibly work under Windows -- dircache
          # is only good for capturing a one-shot snapshot there.
  
          if sys.platform[:3] not in ('win', 'os2'):
              # Sadly, dircache has the same granularity as stat.mtime, and so
              # can't notice any changes that occured within 1 sec of the last
              # time it examined a directory.
              time.sleep(1)
              self.writeTemp("test1")
              entries = dircache.listdir(self.tempdir)
              self.assertEquals(entries, ['test1'])
              self.assert_(dircache.listdir(self.tempdir) is entries)
  
          ## UNSUCCESSFUL CASES
          self.assertEquals(dircache.listdir(self.tempdir+"_nonexistent"), [])
  
      def test_annotate(self):
          self.writeTemp("test2")
          self.mkdirTemp("A")
          lst = ['A', 'test2', 'test_nonexistent']
          dircache.annotate(self.tempdir, lst)
          self.assertEquals(lst, ['A/', 'test2', 'test_nonexistent'])
  
  
  def test_main():
      run_unittest(DircacheTests)
  
  
  if __name__ == "__main__":
      test_main()
  