github.com/grumpyhome/grumpy@v0.3.1-0.20201208125205-7b775405bdf1/grumpy-runtime-src/third_party/stdlib/test/test_dircache.py (about)

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