| 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 |