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

Side by Side 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 unified diff | Download patch
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 from copy import deepcopy
7 import unittest
8
9 from file_system import FileSystem, FileNotFoundError, StatInfo
10 from future import Future
11 from patched_file_system import PatchedFileSystem
12 from patcher import Patcher
13 from test_file_system import TestFileSystem
14 from test_patcher import TestPatcher
15 import url_constants
16
17 _TEST_FS_DATA = {
18 'dir1': {
19 'file1.html': 'This is dir1/file1.html',
20 'unmodified': {
21 '1': '1',
22 '2': '',
23 },
24 },
25 'dir2': {
26 'subdir1': {
27 'sub1.txt': 'in subdir(1)',
28 'sub2.txt': 'in subdir(2)',
29 'sub3.txt': 'in subdir(3)',
30 },
31 },
32 'dir3': {
33 },
34 'dir4': {
35 'one.txt': '',
36 },
37 'dir5': {
38 'subdir': {
39 '1.txt': '555',
40 },
41 },
42 'test1.txt': 'test1',
43 'test2.txt': 'test2',
44 }
45
46 _TEST_PATCH_VERSION = '1001'
47 _TEST_PATCH_FILES = (
48 # Added
49 [
50 'test3.txt',
51 'dir1/file2.html',
52 'dir1/newsubdir/a.js',
53 'newdir/1.html',
54 ],
55 # Deleted
56 [
57 'test2.txt',
58 'dir2/subdir1/sub1.txt',
59 'dir4/one.txt',
60 'dir5/subdir/1.txt',
61 ],
62 # Modified
63 [
64 'dir2/subdir1/sub2.txt',
65 ]
66 )
67 _TEST_PATCH_DATA = {
68 'test3.txt': 'test3 is added.',
69 'dir1/file2.html': 'This is dir1/file2.html',
70 'dir1/newsubdir/a.js': 'This is a.js',
71 'newdir/1.html': 'This comes from a new dir.',
72 'dir2/subdir1/sub2.txt': 'in subdir',
73 }
74
75 class PatchedFileSystemTest(unittest.TestCase):
76 def setUp(self):
77 self._patcher = TestPatcher(_TEST_PATCH_VERSION,
78 _TEST_PATCH_FILES,
79 _TEST_PATCH_DATA)
80 self._host_file_system = TestFileSystem(_TEST_FS_DATA)
81 self._file_system = PatchedFileSystem(self._host_file_system,
82 self._patcher)
83
84 def testRead(self):
85 expected = deepcopy(_TEST_PATCH_DATA)
86 # Files that are not modified.
87 expected.update({
88 'dir2/subdir1/sub3.txt': 'in subdir(3)',
89 'dir1/file1.html': 'This is dir1/file1.html',
90 })
91
92 for key in expected:
93 self.assertEqual(expected[key], self._file_system.ReadSingle(key))
94
95 self.assertEqual(
96 expected,
97 self._file_system.Read(expected.keys()).Get())
98
99 self.assertRaises(FileNotFoundError, self._file_system.ReadSingle,
100 'test2.txt')
101 self.assertRaises(FileNotFoundError, self._file_system.ReadSingle,
102 'dir2/subdir1/sub1.txt')
103 self.assertRaises(FileNotFoundError, self._file_system.ReadSingle,
104 'not_existing')
105 self.assertRaises(FileNotFoundError, self._file_system.ReadSingle,
106 'dir1/not_existing')
107 self.assertRaises(FileNotFoundError, self._file_system.ReadSingle,
108 'dir1/newsubdir/not_existing')
109
110 def testReadDir(self):
111 self.assertEqual(sorted(self._file_system.ReadSingle('dir1/')),
112 sorted(set(self._host_file_system.ReadSingle('dir1/')) |
113 {'file2.html', 'newsubdir/'}))
114
115 self.assertEqual(sorted(self._file_system.ReadSingle('dir1/newsubdir/')),
116 sorted(['a.js']))
117
118 self.assertEqual(sorted(self._file_system.ReadSingle('dir2/')),
119 sorted(self._host_file_system.ReadSingle('dir2/')))
120
121 self.assertEqual(sorted(self._file_system.ReadSingle('dir2/subdir1/')),
122 sorted(set(self._host_file_system.ReadSingle('dir2/subdir1/')) -
123 {'sub1.txt'}))
124
125 self.assertEqual(sorted(self._file_system.ReadSingle('newdir/')),
126 sorted(['1.html']))
127
128 self.assertEqual(self._file_system.ReadSingle('dir3/'), [])
129
130 self.assertEqual(self._file_system.ReadSingle('dir4/'), [])
131
132 self.assertRaises(FileNotFoundError, self._file_system.ReadSingle,
133 'not_existing_dir/')
134
135 def testStat(self):
136 version = 'patched_%s' % self._patcher.GetVersion()
137 old_version = self._host_file_system.Stat('dir1/file1.html').version
138
139 # Stat an unmodified file.
140 self.assertEqual(self._file_system.Stat('dir1/file1.html'),
141 self._host_file_system.Stat('dir1/file1.html'))
142
143 # Stat an unmodified directory.
144 self.assertEqual(self._file_system.Stat('dir1/unmodified/'),
145 self._host_file_system.Stat('dir1/unmodified/'))
146
147 # Stat a modified directory.
148 self.assertEqual(self._file_system.Stat('dir2/'),
149 StatInfo(version, {'subdir1/': version}))
150 self.assertEqual(self._file_system.Stat('dir2/subdir1/'),
151 StatInfo(version, {'sub2.txt': version,
152 'sub3.txt': old_version}))
153
154 # Stat a modified directory with new files.
155 expected = self._host_file_system.Stat('dir1/')
156 expected.version = version
157 expected.child_versions.update({'file2.html': version,
158 'newsubdir/': version})
159 self.assertEqual(self._file_system.Stat('dir1/'),
160 expected)
161
162 # Stat an added directory.
163 self.assertEqual(self._file_system.Stat('dir1/newsubdir/'),
164 StatInfo(version, {'a.js': version}))
165 self.assertEqual(self._file_system.Stat('dir1/newsubdir/a.js'),
166 StatInfo(version))
167 self.assertEqual(self._file_system.Stat('newdir/'),
168 StatInfo(version, {'1.html': version}))
169 self.assertEqual(self._file_system.Stat('newdir/1.html'),
170 StatInfo(version))
171
172 # Stat files removed in the patch.
173 self.assertRaises(FileNotFoundError, self._file_system.Stat,
174 'dir2/subdir1/sub1.txt')
175 self.assertRaises(FileNotFoundError, self._file_system.Stat,
176 'dir4/one.txt')
177
178 # Stat empty directories.
179 self.assertEqual(self._file_system.Stat('dir3/'),
180 StatInfo(old_version, {}))
181 self.assertEqual(self._file_system.Stat('dir4/'),
182 StatInfo(version, {}))
183 self.assertEqual(self._file_system.Stat('dir5/subdir/'),
184 StatInfo(version, {}))
185
186 # Stat empty (after patch) directory's parent
187 self.assertEqual(self._file_system.Stat('dir5/'),
188 StatInfo(version, {'subdir/': version}))
189
190 # Stat files that don't exist either before or after patching.
191 self.assertRaises(FileNotFoundError, self._file_system.Stat,
192 'not_existing/')
193 self.assertRaises(FileNotFoundError, self._file_system.Stat,
194 'dir1/not_existing/')
195 self.assertRaises(FileNotFoundError, self._file_system.Stat,
196 'dir1/not_existing')
197
198 if __name__ == '__main__':
199 unittest.main()
OLDNEW
« 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