OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 from copy import deepcopy | 6 from copy import deepcopy |
7 from file_system import FileNotFoundError, StatInfo | 7 from file_system import FileNotFoundError, StatInfo |
8 from test_file_system import TestFileSystem, MoveTo | 8 from test_file_system import TestFileSystem, MoveTo |
9 import unittest | 9 import unittest |
10 | 10 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 self.assertRaises(FileNotFoundError, _Get(fs.Read), ['foo', | 54 self.assertRaises(FileNotFoundError, _Get(fs.Read), ['foo', |
55 'bar/', | 55 'bar/', |
56 'bar/baz']) | 56 'bar/baz']) |
57 self.assertRaises(FileNotFoundError, fs.Stat, 'foo') | 57 self.assertRaises(FileNotFoundError, fs.Stat, 'foo') |
58 self.assertRaises(FileNotFoundError, fs.Stat, 'bar/') | 58 self.assertRaises(FileNotFoundError, fs.Stat, 'bar/') |
59 self.assertRaises(FileNotFoundError, fs.Stat, 'bar/baz') | 59 self.assertRaises(FileNotFoundError, fs.Stat, 'bar/baz') |
60 | 60 |
61 def testNonemptySuccess(self): | 61 def testNonemptySuccess(self): |
62 fs = TestFileSystem(deepcopy(_TEST_DATA)) | 62 fs = TestFileSystem(deepcopy(_TEST_DATA)) |
63 self.assertEqual('404.html contents', fs.ReadSingle('404.html').Get()) | 63 self.assertEqual('404.html contents', fs.ReadSingle('404.html').Get()) |
64 self.assertEqual('404.html contents', fs.ReadSingle('/404.html').Get()) | |
65 self.assertEqual('a11y.html contents', | 64 self.assertEqual('a11y.html contents', |
66 fs.ReadSingle('apps/a11y.html').Get()) | 65 fs.ReadSingle('apps/a11y.html').Get()) |
67 self.assertEqual(['404.html', 'apps/', 'extensions/'], | 66 self.assertEqual(['404.html', 'apps/', 'extensions/'], |
68 sorted(fs.ReadSingle('/').Get())) | 67 sorted(fs.ReadSingle('').Get())) |
69 self.assertEqual(['a11y.html', 'about_apps.html', 'fakedir/'], | 68 self.assertEqual(['a11y.html', 'about_apps.html', 'fakedir/'], |
70 sorted(fs.ReadSingle('apps/').Get())) | 69 sorted(fs.ReadSingle('apps/').Get())) |
71 self.assertEqual(['a11y.html', 'about_apps.html', 'fakedir/'], | |
72 sorted(fs.ReadSingle('/apps/').Get())) | |
73 | 70 |
74 def testReadFiles(self): | 71 def testReadFiles(self): |
75 fs = TestFileSystem(deepcopy(_TEST_DATA)) | 72 fs = TestFileSystem(deepcopy(_TEST_DATA)) |
76 self.assertEqual('404.html contents', | 73 self.assertEqual('404.html contents', |
77 fs.ReadSingle('404.html').Get()) | 74 fs.ReadSingle('404.html').Get()) |
78 self.assertEqual('404.html contents', | |
79 fs.ReadSingle('/404.html').Get()) | |
80 self.assertEqual('a11y.html contents', | 75 self.assertEqual('a11y.html contents', |
81 fs.ReadSingle('apps/a11y.html').Get()) | 76 fs.ReadSingle('apps/a11y.html').Get()) |
82 self.assertEqual('a11y.html contents', | |
83 fs.ReadSingle('/apps/a11y.html').Get()) | |
84 self.assertEqual('file.html contents', | 77 self.assertEqual('file.html contents', |
85 fs.ReadSingle('apps/fakedir/file.html').Get()) | 78 fs.ReadSingle('apps/fakedir/file.html').Get()) |
86 self.assertEqual('file.html contents', | |
87 fs.ReadSingle('/apps/fakedir/file.html').Get()) | |
88 | 79 |
89 def testReadDirs(self): | 80 def testReadDirs(self): |
90 fs = TestFileSystem(deepcopy(_TEST_DATA)) | 81 fs = TestFileSystem(deepcopy(_TEST_DATA)) |
91 self.assertEqual(['404.html', 'apps/', 'extensions/'], | 82 self.assertEqual(['404.html', 'apps/', 'extensions/'], |
92 sorted(fs.ReadSingle('/').Get())) | 83 sorted(fs.ReadSingle('').Get())) |
93 self.assertEqual(['a11y.html', 'about_apps.html', 'fakedir/'], | |
94 sorted(fs.ReadSingle('/apps/').Get())) | |
95 self.assertEqual(['a11y.html', 'about_apps.html', 'fakedir/'], | 84 self.assertEqual(['a11y.html', 'about_apps.html', 'fakedir/'], |
96 sorted(fs.ReadSingle('apps/').Get())) | 85 sorted(fs.ReadSingle('apps/').Get())) |
97 self.assertEqual(['file.html'], fs.ReadSingle('/apps/fakedir/').Get()) | 86 self.assertEqual(['a11y.html', 'about_apps.html', 'fakedir/'], |
| 87 sorted(fs.ReadSingle('apps/').Get())) |
98 self.assertEqual(['file.html'], fs.ReadSingle('apps/fakedir/').Get()) | 88 self.assertEqual(['file.html'], fs.ReadSingle('apps/fakedir/').Get()) |
99 | 89 |
100 def testStat(self): | 90 def testStat(self): |
101 fs = TestFileSystem(deepcopy(_TEST_DATA)) | 91 fs = TestFileSystem(deepcopy(_TEST_DATA)) |
102 self.assertRaises(FileNotFoundError, fs.Stat, 'foo') | 92 self.assertRaises(FileNotFoundError, fs.Stat, 'foo') |
103 self.assertRaises(FileNotFoundError, fs.Stat, '404.html/') | 93 self.assertRaises(FileNotFoundError, fs.Stat, '404.html/') |
| 94 self.assertEquals(StatInfo('0', child_versions={ |
| 95 '404.html': '0', |
| 96 'apps/': '0', |
| 97 'extensions/': '0', |
| 98 }), fs.Stat('')) |
104 self.assertEquals(StatInfo('0'), fs.Stat('404.html')) | 99 self.assertEquals(StatInfo('0'), fs.Stat('404.html')) |
105 self.assertEquals(StatInfo('0', child_versions={ | 100 self.assertEquals(StatInfo('0', child_versions={ |
106 'activeTab.html': '0', | 101 'activeTab.html': '0', |
107 'alarms.html': '0', | 102 'alarms.html': '0', |
108 }), fs.Stat('extensions/')) | 103 }), fs.Stat('extensions/')) |
109 | 104 |
110 fs.IncrementStat() | 105 fs.IncrementStat() |
| 106 self.assertEquals(StatInfo('1', child_versions={ |
| 107 '404.html': '1', |
| 108 'apps/': '1', |
| 109 'extensions/': '1', |
| 110 }), fs.Stat('')) |
111 self.assertEquals(StatInfo('1'), fs.Stat('404.html')) | 111 self.assertEquals(StatInfo('1'), fs.Stat('404.html')) |
112 self.assertEquals(StatInfo('1', child_versions={ | 112 self.assertEquals(StatInfo('1', child_versions={ |
113 'activeTab.html': '1', | 113 'activeTab.html': '1', |
114 'alarms.html': '1', | 114 'alarms.html': '1', |
115 }), fs.Stat('extensions/')) | 115 }), fs.Stat('extensions/')) |
116 | 116 |
117 fs.IncrementStat(path='404.html') | 117 fs.IncrementStat(path='404.html') |
| 118 self.assertEquals(StatInfo('2', child_versions={ |
| 119 '404.html': '2', |
| 120 'apps/': '1', |
| 121 'extensions/': '1', |
| 122 }), fs.Stat('')) |
118 self.assertEquals(StatInfo('2'), fs.Stat('404.html')) | 123 self.assertEquals(StatInfo('2'), fs.Stat('404.html')) |
119 self.assertEquals(StatInfo('1', child_versions={ | 124 self.assertEquals(StatInfo('1', child_versions={ |
120 'activeTab.html': '1', | 125 'activeTab.html': '1', |
121 'alarms.html': '1', | 126 'alarms.html': '1', |
122 }), fs.Stat('extensions/')) | 127 }), fs.Stat('extensions/')) |
123 | 128 |
124 fs.IncrementStat() | 129 fs.IncrementStat() |
| 130 self.assertEquals(StatInfo('3', child_versions={ |
| 131 '404.html': '3', |
| 132 'apps/': '2', |
| 133 'extensions/': '2', |
| 134 }), fs.Stat('')) |
125 self.assertEquals(StatInfo('3'), fs.Stat('404.html')) | 135 self.assertEquals(StatInfo('3'), fs.Stat('404.html')) |
126 self.assertEquals(StatInfo('2', child_versions={ | 136 self.assertEquals(StatInfo('2', child_versions={ |
127 'activeTab.html': '2', | 137 'activeTab.html': '2', |
128 'alarms.html': '2', | 138 'alarms.html': '2', |
129 }), fs.Stat('extensions/')) | 139 }), fs.Stat('extensions/')) |
130 | 140 |
131 fs.IncrementStat(path='extensions/') | 141 # It doesn't make sense to increment the version of directories. Directory |
| 142 # versions are derived from the version of files within them. |
| 143 self.assertRaises(ValueError, fs.IncrementStat, path='') |
| 144 self.assertRaises(ValueError, fs.IncrementStat, path='extensions/') |
| 145 self.assertEquals(StatInfo('3', child_versions={ |
| 146 '404.html': '3', |
| 147 'apps/': '2', |
| 148 'extensions/': '2', |
| 149 }), fs.Stat('')) |
132 self.assertEquals(StatInfo('3'), fs.Stat('404.html')) | 150 self.assertEquals(StatInfo('3'), fs.Stat('404.html')) |
133 self.assertEquals(StatInfo('3', child_versions={ | 151 self.assertEquals(StatInfo('2', child_versions={ |
134 'activeTab.html': '2', | 152 'activeTab.html': '2', |
135 'alarms.html': '2', | 153 'alarms.html': '2', |
136 }), fs.Stat('extensions/')) | 154 }), fs.Stat('extensions/')) |
137 | 155 |
138 fs.IncrementStat(path='extensions/alarms.html') | 156 fs.IncrementStat(path='extensions/alarms.html') |
| 157 self.assertEquals(StatInfo('3', child_versions={ |
| 158 '404.html': '3', |
| 159 'apps/': '2', |
| 160 'extensions/': '3', |
| 161 }), fs.Stat('')) |
139 self.assertEquals(StatInfo('3'), fs.Stat('404.html')) | 162 self.assertEquals(StatInfo('3'), fs.Stat('404.html')) |
140 self.assertEquals(StatInfo('3', child_versions={ | 163 self.assertEquals(StatInfo('3', child_versions={ |
141 'activeTab.html': '2', | 164 'activeTab.html': '2', |
142 'alarms.html': '3', | 165 'alarms.html': '3', |
143 }), fs.Stat('extensions/')) | 166 }), fs.Stat('extensions/')) |
144 | 167 |
| 168 fs.IncrementStat(path='extensions/activeTab.html', by=3) |
| 169 self.assertEquals(StatInfo('5', child_versions={ |
| 170 '404.html': '3', |
| 171 'apps/': '2', |
| 172 'extensions/': '5', |
| 173 }), fs.Stat('')) |
| 174 self.assertEquals(StatInfo('3'), fs.Stat('404.html')) |
| 175 self.assertEquals(StatInfo('5', child_versions={ |
| 176 'activeTab.html': '5', |
| 177 'alarms.html': '3', |
| 178 }), fs.Stat('extensions/')) |
| 179 |
145 def testMoveTo(self): | 180 def testMoveTo(self): |
146 self.assertEqual({'foo': {'a': 'b', 'c': 'd'}}, | 181 self.assertEqual({'foo': {'a': 'b', 'c': 'd'}}, |
147 MoveTo('foo', {'a': 'b', 'c': 'd'})) | 182 MoveTo('foo', {'a': 'b', 'c': 'd'})) |
148 self.assertEqual({'foo': {'bar': {'a': 'b', 'c': 'd'}}}, | 183 self.assertEqual({'foo': {'bar': {'a': 'b', 'c': 'd'}}}, |
149 MoveTo('foo/bar', {'a': 'b', 'c': 'd'})) | 184 MoveTo('foo/bar', {'a': 'b', 'c': 'd'})) |
150 self.assertEqual({'foo': {'bar': {'baz': {'a': 'b'}}}}, | 185 self.assertEqual({'foo': {'bar': {'baz': {'a': 'b'}}}}, |
151 MoveTo('foo/bar/baz', {'a': 'b'})) | 186 MoveTo('foo/bar/baz', {'a': 'b'})) |
152 | 187 |
153 | 188 |
154 if __name__ == '__main__': | 189 if __name__ == '__main__': |
155 unittest.main() | 190 unittest.main() |
OLD | NEW |