| 
									
										
										
										
											2001-07-19 22:59:09 +00:00
										 |  |  | """
 | 
					
						
							|  |  |  |   Test cases for the dircache module | 
					
						
							|  |  |  |   Nick Mathewson | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import unittest | 
					
						
							| 
									
										
										
										
											2002-07-23 19:04:11 +00:00
										 |  |  | from test.test_support import run_unittest, TESTFN | 
					
						
							| 
									
										
										
										
											2001-07-21 02:22:14 +00:00
										 |  |  | import dircache, os, time, sys | 
					
						
							| 
									
										
										
										
											2001-07-19 22:59:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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) | 
					
						
							| 
									
										
										
										
											2001-07-21 01:41:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-19 22:59:09 +00:00
										 |  |  |     def test_listdir(self): | 
					
						
							|  |  |  |         ## SUCCESSFUL CASES | 
					
						
							|  |  |  |         entries = dircache.listdir(self.tempdir) | 
					
						
							|  |  |  |         self.assertEquals(entries, []) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Check that cache is actually caching, not just passing through. | 
					
						
							| 
									
										
										
										
											2001-07-21 01:41:30 +00:00
										 |  |  |         self.assert_(dircache.listdir(self.tempdir) is entries) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-21 02:22:14 +00:00
										 |  |  |         # 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) | 
					
						
							| 
									
										
										
										
											2001-07-21 01:41:30 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-19 22:59:09 +00:00
										 |  |  |         ## 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']) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-09-20 21:33:42 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | def test_main(): | 
					
						
							|  |  |  |     run_unittest(DircacheTests) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if __name__ == "__main__": | 
					
						
							|  |  |  |     test_main() |