python-2.5.2/win32/Lib/test/test_dircache.py
changeset 0 ae805ac0140d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/python-2.5.2/win32/Lib/test/test_dircache.py	Fri Apr 03 17:19:34 2009 +0100
@@ -0,0 +1,73 @@
+"""
+  Test cases for the dircache module
+  Nick Mathewson
+"""
+
+import unittest
+from test.test_support import run_unittest, TESTFN
+import dircache, 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.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 occurred 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.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.assertEquals(lst, ['A/', 'test2', 'test_nonexistent'])
+
+
+def test_main():
+    run_unittest(DircacheTests)
+
+
+if __name__ == "__main__":
+    test_main()