diff options
Diffstat (limited to 'lib/python2.7/test/test_dircache.py')
-rw-r--r-- | lib/python2.7/test/test_dircache.py | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/lib/python2.7/test/test_dircache.py b/lib/python2.7/test/test_dircache.py new file mode 100644 index 0000000..c6ad31c --- /dev/null +++ b/lib/python2.7/test/test_dircache.py @@ -0,0 +1,77 @@ +""" + Test cases for the dircache module + Nick Mathewson +""" + +import unittest +from test.test_support import run_unittest, import_module +dircache = import_module('dircache', deprecated=True) +import os, time, sys, tempfile + + +class DircacheTests(unittest.TestCase): + def setUp(self): + self.tempdir = tempfile.mkdtemp() + + 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.assertEqual(entries, []) + + # Check that cache is actually caching, not just passing through. + self.assertTrue(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 occurred within 1 sec of the last + # time it examined a directory. + time.sleep(1) + self.writeTemp("test1") + entries = dircache.listdir(self.tempdir) + self.assertEqual(entries, ['test1']) + self.assertTrue(dircache.listdir(self.tempdir) is entries) + + ## UNSUCCESSFUL CASES + self.assertRaises(OSError, 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.assertEqual(lst, ['A/', 'test2', 'test_nonexistent']) + + +def test_main(): + try: + run_unittest(DircacheTests) + finally: + dircache.reset() + + +if __name__ == "__main__": + test_main() |