Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9805)

Unified Diff: chrome/common/extensions/docs/server2/compiled_file_system_test.py

Issue 13470005: Refactor the devserver to make it easier to control caching (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: cduvall, rebase Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/docs/server2/compiled_file_system_test.py
diff --git a/chrome/common/extensions/docs/server2/compiled_file_system_test.py b/chrome/common/extensions/docs/server2/compiled_file_system_test.py
new file mode 100755
index 0000000000000000000000000000000000000000..d8bf452d2e48774deca445445fb78fee69a8a91f
--- /dev/null
+++ b/chrome/common/extensions/docs/server2/compiled_file_system_test.py
@@ -0,0 +1,122 @@
+#!/usr/bin/env python
+# Copyright 2013 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+from compiled_file_system import CompiledFileSystem
+from copy import deepcopy
+from file_system import FileNotFoundError
+from test_file_system import TestFileSystem
+from test_object_store import TestObjectStore
+import unittest
+
+_TEST_DATA = {
+ '404.html': '404.html contents',
+ 'apps': {
+ 'a11y.html': 'a11y.html contents',
+ 'about_apps.html': 'about_apps.html contents',
+ 'fakedir': {
+ 'file.html': 'file.html contents'
+ }
+ },
+ 'extensions': {
+ 'activeTab.html': 'activeTab.html contents',
+ 'alarms.html': 'alarms.html contents'
+ }
+}
+
+def _CreateFactory():
+ return CompiledFileSystem.Factory(TestFileSystem(deepcopy(_TEST_DATA)),
+ store_type=TestObjectStore)
+
+class CompiledFileSystemTest(unittest.TestCase):
+ def testIdentityNamespace(self):
+ factory = _CreateFactory()
+ compiled_fs = factory.GetOrCreateIdentity()
+ self.assertEqual('CompiledFileSystem/id/file',
+ compiled_fs._file_object_store.namespace)
+ compiled_fs = factory.GetOrCreateIdentity() # should be the same
+ self.assertEqual('CompiledFileSystem/id/list',
+ compiled_fs._list_object_store.namespace)
+
+ def testIdentityFromFile(self):
+ compiled_fs = _CreateFactory().GetOrCreateIdentity()
+ self.assertEqual('404.html contents', compiled_fs.GetFromFile('404.html'))
+ self.assertEqual('a11y.html contents',
+ compiled_fs.GetFromFile('apps/a11y.html'))
+ self.assertEqual('file.html contents',
+ compiled_fs.GetFromFile('/apps/fakedir/file.html'))
+
+ def testIdentityFromFileListing(self):
+ compiled_fs = _CreateFactory().GetOrCreateIdentity()
+ self.assertEqual({'404.html', 'apps/a11y.html', 'apps/about_apps.html',
+ 'apps/fakedir/file.html',
+ 'extensions/activeTab.html', 'extensions/alarms.html'},
+ set(compiled_fs.GetFromFileListing('/')))
+ self.assertEqual({'a11y.html', 'about_apps.html', 'fakedir/file.html'},
+ set(compiled_fs.GetFromFileListing('apps/')))
+ self.assertEqual({'file.html'},
+ set(compiled_fs.GetFromFileListing('apps/fakedir')))
+
+ def testPopulateNamespace(self):
+ def CheckNamespace(expected_file, expected_list, fs):
+ self.assertEqual(expected_file, fs._file_object_store.namespace)
+ self.assertEqual(expected_list, fs._list_object_store.namespace)
+ factory = _CreateFactory()
+ f = lambda x: x
+ CheckNamespace('CompiledFileSystem/CompiledFileSystemTest/file',
+ 'CompiledFileSystem/CompiledFileSystemTest/list',
+ factory.Create(f, CompiledFileSystemTest))
+ CheckNamespace('CompiledFileSystem/CompiledFileSystemTest/foo/file',
+ 'CompiledFileSystem/CompiledFileSystemTest/foo/list',
+ factory.Create(f, CompiledFileSystemTest, category='foo'))
+ CheckNamespace('CompiledFileSystem/CompiledFileSystemTest/file/6',
+ 'CompiledFileSystem/CompiledFileSystemTest/list/6',
+ factory.Create(f, CompiledFileSystemTest, version=6))
+ CheckNamespace('CompiledFileSystem/CompiledFileSystemTest/foo/file/6',
+ 'CompiledFileSystem/CompiledFileSystemTest/foo/list/6',
+ factory.Create(f, CompiledFileSystemTest, category='foo',
+ version=6))
+
+ def testPopulateFromFile(self):
+ def Sleepy(key, val):
+ return '%s%s' % ('Z' * len(key), 'z' * len(val))
+ compiled_fs = _CreateFactory().Create(Sleepy, CompiledFileSystemTest)
+ self.assertEqual('ZZZZZZZZzzzzzzzzzzzzzzzzz',
+ compiled_fs.GetFromFile('404.html'))
+ self.assertEqual('ZZZZZZZZZZZZZZzzzzzzzzzzzzzzzzzz',
+ compiled_fs.GetFromFile('apps/a11y.html'))
+ self.assertEqual('ZZZZZZZZZZZZZZZZZZZZZZZzzzzzzzzzzzzzzzzzz',
+ compiled_fs.GetFromFile('/apps/fakedir/file.html'))
+
+ def testCaching(self):
+ compiled_fs = _CreateFactory().GetOrCreateIdentity()
+ self.assertEqual('404.html contents', compiled_fs.GetFromFile('404.html'))
+ self.assertEqual({'file.html'},
+ set(compiled_fs.GetFromFileListing('apps/fakedir')))
+
+ compiled_fs._file_system._obj['404.html'] = 'boom'
+ compiled_fs._file_system._obj['apps']['fakedir']['boom.html'] = 'blam'
+ self.assertEqual('404.html contents', compiled_fs.GetFromFile('404.html'))
+ self.assertEqual({'file.html'},
+ set(compiled_fs.GetFromFileListing('apps/fakedir')))
+
+ compiled_fs._file_system.IncrementStat()
+ self.assertEqual('boom', compiled_fs.GetFromFile('404.html'))
+ self.assertEqual({'file.html', 'boom.html'},
+ set(compiled_fs.GetFromFileListing('apps/fakedir')))
+
+ def testFailures(self):
+ compiled_fs = _CreateFactory().GetOrCreateIdentity()
+ self.assertRaises(FileNotFoundError, compiled_fs.GetFromFile, '405.html')
+ # TODO(kalman): would be nice to test this fails since apps/ is a dir.
+ compiled_fs.GetFromFile('apps/')
+ #self.assertRaises(SomeError, compiled_fs.GetFromFile, 'apps/')
+ self.assertRaises(FileNotFoundError,
+ compiled_fs.GetFromFileListing, 'nodir/')
+ # TODO(kalman): likewise, not a FileNotFoundError.
+ self.assertRaises(FileNotFoundError,
+ compiled_fs.GetFromFileListing, '404.html')
+
+if __name__ == '__main__':
+ unittest.main()

Powered by Google App Engine
This is Rietveld 408576698