Index: chrome/common/extensions/docs/server2/caching_file_system_test.py |
diff --git a/chrome/common/extensions/docs/server2/caching_file_system_test.py b/chrome/common/extensions/docs/server2/caching_file_system_test.py |
index 78becf1a8dc9c8e35f567662cdae3b73dc266bda..bc12ffb2959bb7ddfc0a30e0efabd9fe22accd28 100755 |
--- a/chrome/common/extensions/docs/server2/caching_file_system_test.py |
+++ b/chrome/common/extensions/docs/server2/caching_file_system_test.py |
@@ -251,6 +251,44 @@ class CachingFileSystemTest(unittest.TestCase): |
'bob/bob0': 'bob/bob0 contents', |
}, read_skip_not_found(('bob/bob0', 'bob/bob2'))) |
+ def testWalkCaching(self): |
+ test_fs = TestFileSystem({ |
+ 'root': { |
+ 'file1': 'file1', |
+ 'file2': 'file2', |
+ 'dir1': { |
+ 'dir1_file1': 'dir1_file1', |
+ 'dir2': {}, |
+ 'dir3': { |
+ 'dir3_file1': 'dir3_file1', |
+ 'dir3_file2': 'dir3_file2' |
+ } |
+ } |
+ } |
+ }) |
+ mock_fs = MockFileSystem(test_fs) |
+ file_system = self._CreateCachingFileSystem(mock_fs, start_empty=True) |
+ for walkinfo in file_system.Walk(''): |
+ pass |
+ self.assertTrue(*mock_fs.CheckAndReset( |
+ read_resolve_count=5, read_count=5, stat_count=5)) |
+ |
+ all_dirs, all_files = [], [] |
+ for root, dirs, files in file_system.Walk(''): |
+ all_dirs.extend(dirs) |
+ all_files.extend(files) |
+ self.assertEqual(sorted(['root/', 'dir1/', 'dir2/', 'dir3/']), |
+ sorted(all_dirs)) |
+ self.assertEqual( |
+ sorted(['file1', 'file2', 'dir1_file1', 'dir3_file1', 'dir3_file2']), |
+ sorted(all_files)) |
+ # All data should be cached. |
+ self.assertTrue(*mock_fs.CheckAndReset()) |
+ |
+ # Starting from a different root should still pull cached data. |
+ for walkinfo in file_system.Walk('root/dir1/'): |
+ pass |
+ self.assertTrue(*mock_fs.CheckAndReset()) |
if __name__ == '__main__': |
unittest.main() |