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

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

Issue 14125010: Docserver: Add support for viewing docs with a codereview patch applied (Closed) Base URL: https://src.chromium.org/svn/trunk/src/
Patch Set: add executable bits for tests Created 7 years, 7 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/patched_file_system_test.py
diff --git a/chrome/common/extensions/docs/server2/patched_file_system_test.py b/chrome/common/extensions/docs/server2/patched_file_system_test.py
new file mode 100755
index 0000000000000000000000000000000000000000..2a93bff7f6c9e8a2155d0f7fa20e707c0310d928
--- /dev/null
+++ b/chrome/common/extensions/docs/server2/patched_file_system_test.py
@@ -0,0 +1,199 @@
+#!/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 copy import deepcopy
+import unittest
+
+from file_system import FileSystem, FileNotFoundError, StatInfo
+from future import Future
+from patched_file_system import PatchedFileSystem
+from patcher import Patcher
+from test_file_system import TestFileSystem
+from test_patcher import TestPatcher
+import url_constants
+
+_TEST_FS_DATA = {
+ 'dir1': {
+ 'file1.html': 'This is dir1/file1.html',
+ 'unmodified': {
+ '1': '1',
+ '2': '',
+ },
+ },
+ 'dir2': {
+ 'subdir1': {
+ 'sub1.txt': 'in subdir(1)',
+ 'sub2.txt': 'in subdir(2)',
+ 'sub3.txt': 'in subdir(3)',
+ },
+ },
+ 'dir3': {
+ },
+ 'dir4': {
+ 'one.txt': '',
+ },
+ 'dir5': {
+ 'subdir': {
+ '1.txt': '555',
+ },
+ },
+ 'test1.txt': 'test1',
+ 'test2.txt': 'test2',
+}
+
+_TEST_PATCH_VERSION = '1001'
+_TEST_PATCH_FILES = (
+ # Added
+ [
+ 'test3.txt',
+ 'dir1/file2.html',
+ 'dir1/newsubdir/a.js',
+ 'newdir/1.html',
+ ],
+ # Deleted
+ [
+ 'test2.txt',
+ 'dir2/subdir1/sub1.txt',
+ 'dir4/one.txt',
+ 'dir5/subdir/1.txt',
+ ],
+ # Modified
+ [
+ 'dir2/subdir1/sub2.txt',
+ ]
+)
+_TEST_PATCH_DATA = {
+ 'test3.txt': 'test3 is added.',
+ 'dir1/file2.html': 'This is dir1/file2.html',
+ 'dir1/newsubdir/a.js': 'This is a.js',
+ 'newdir/1.html': 'This comes from a new dir.',
+ 'dir2/subdir1/sub2.txt': 'in subdir',
+}
+
+class PatchedFileSystemTest(unittest.TestCase):
+ def setUp(self):
+ self._patcher = TestPatcher(_TEST_PATCH_VERSION,
+ _TEST_PATCH_FILES,
+ _TEST_PATCH_DATA)
+ self._host_file_system = TestFileSystem(_TEST_FS_DATA)
+ self._file_system = PatchedFileSystem(self._host_file_system,
+ self._patcher)
+
+ def testRead(self):
+ expected = deepcopy(_TEST_PATCH_DATA)
+ # Files that are not modified.
+ expected.update({
+ 'dir2/subdir1/sub3.txt': 'in subdir(3)',
+ 'dir1/file1.html': 'This is dir1/file1.html',
+ })
+
+ for key in expected:
+ self.assertEqual(expected[key], self._file_system.ReadSingle(key))
+
+ self.assertEqual(
+ expected,
+ self._file_system.Read(expected.keys()).Get())
+
+ self.assertRaises(FileNotFoundError, self._file_system.ReadSingle,
+ 'test2.txt')
+ self.assertRaises(FileNotFoundError, self._file_system.ReadSingle,
+ 'dir2/subdir1/sub1.txt')
+ self.assertRaises(FileNotFoundError, self._file_system.ReadSingle,
+ 'not_existing')
+ self.assertRaises(FileNotFoundError, self._file_system.ReadSingle,
+ 'dir1/not_existing')
+ self.assertRaises(FileNotFoundError, self._file_system.ReadSingle,
+ 'dir1/newsubdir/not_existing')
+
+ def testReadDir(self):
+ self.assertEqual(sorted(self._file_system.ReadSingle('dir1/')),
+ sorted(set(self._host_file_system.ReadSingle('dir1/')) |
+ {'file2.html', 'newsubdir/'}))
+
+ self.assertEqual(sorted(self._file_system.ReadSingle('dir1/newsubdir/')),
+ sorted(['a.js']))
+
+ self.assertEqual(sorted(self._file_system.ReadSingle('dir2/')),
+ sorted(self._host_file_system.ReadSingle('dir2/')))
+
+ self.assertEqual(sorted(self._file_system.ReadSingle('dir2/subdir1/')),
+ sorted(set(self._host_file_system.ReadSingle('dir2/subdir1/')) -
+ {'sub1.txt'}))
+
+ self.assertEqual(sorted(self._file_system.ReadSingle('newdir/')),
+ sorted(['1.html']))
+
+ self.assertEqual(self._file_system.ReadSingle('dir3/'), [])
+
+ self.assertEqual(self._file_system.ReadSingle('dir4/'), [])
+
+ self.assertRaises(FileNotFoundError, self._file_system.ReadSingle,
+ 'not_existing_dir/')
+
+ def testStat(self):
+ version = 'patched_%s' % self._patcher.GetVersion()
+ old_version = self._host_file_system.Stat('dir1/file1.html').version
+
+ # Stat an unmodified file.
+ self.assertEqual(self._file_system.Stat('dir1/file1.html'),
+ self._host_file_system.Stat('dir1/file1.html'))
+
+ # Stat an unmodified directory.
+ self.assertEqual(self._file_system.Stat('dir1/unmodified/'),
+ self._host_file_system.Stat('dir1/unmodified/'))
+
+ # Stat a modified directory.
+ self.assertEqual(self._file_system.Stat('dir2/'),
+ StatInfo(version, {'subdir1/': version}))
+ self.assertEqual(self._file_system.Stat('dir2/subdir1/'),
+ StatInfo(version, {'sub2.txt': version,
+ 'sub3.txt': old_version}))
+
+ # Stat a modified directory with new files.
+ expected = self._host_file_system.Stat('dir1/')
+ expected.version = version
+ expected.child_versions.update({'file2.html': version,
+ 'newsubdir/': version})
+ self.assertEqual(self._file_system.Stat('dir1/'),
+ expected)
+
+ # Stat an added directory.
+ self.assertEqual(self._file_system.Stat('dir1/newsubdir/'),
+ StatInfo(version, {'a.js': version}))
+ self.assertEqual(self._file_system.Stat('dir1/newsubdir/a.js'),
+ StatInfo(version))
+ self.assertEqual(self._file_system.Stat('newdir/'),
+ StatInfo(version, {'1.html': version}))
+ self.assertEqual(self._file_system.Stat('newdir/1.html'),
+ StatInfo(version))
+
+ # Stat files removed in the patch.
+ self.assertRaises(FileNotFoundError, self._file_system.Stat,
+ 'dir2/subdir1/sub1.txt')
+ self.assertRaises(FileNotFoundError, self._file_system.Stat,
+ 'dir4/one.txt')
+
+ # Stat empty directories.
+ self.assertEqual(self._file_system.Stat('dir3/'),
+ StatInfo(old_version, {}))
+ self.assertEqual(self._file_system.Stat('dir4/'),
+ StatInfo(version, {}))
+ self.assertEqual(self._file_system.Stat('dir5/subdir/'),
+ StatInfo(version, {}))
+
+ # Stat empty (after patch) directory's parent
+ self.assertEqual(self._file_system.Stat('dir5/'),
+ StatInfo(version, {'subdir/': version}))
+
+ # Stat files that don't exist either before or after patching.
+ self.assertRaises(FileNotFoundError, self._file_system.Stat,
+ 'not_existing/')
+ self.assertRaises(FileNotFoundError, self._file_system.Stat,
+ 'dir1/not_existing/')
+ self.assertRaises(FileNotFoundError, self._file_system.Stat,
+ 'dir1/not_existing')
+
+if __name__ == '__main__':
+ unittest.main()
« no previous file with comments | « chrome/common/extensions/docs/server2/patched_file_system.py ('k') | chrome/common/extensions/docs/server2/patcher.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698