| #!/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. |
| |
| import unittest |
| |
| from chroot_file_system import ChrootFileSystem |
| from file_system import FileNotFoundError, StatInfo |
| from test_file_system import TestFileSystem |
| |
| |
| def _SortListValues(dict_): |
| for value in dict_.itervalues(): |
| if isinstance(value, list): |
| value.sort() |
| return dict_ |
| |
| |
| class ChrootFileSystemTest(unittest.TestCase): |
| |
| def setUp(self): |
| self._test_fs = TestFileSystem({ |
| '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', |
| 'manifest': { |
| 'moremanifest': { |
| 'csp.html': 'csp.html contents', |
| 'usb.html': 'usb.html contents', |
| }, |
| 'sockets.html': 'sockets.html contents', |
| }, |
| }, |
| }) |
| |
| def testRead(self): |
| for prefix in ('', '/'): |
| for suffix in ('', '/'): |
| chroot_fs = ChrootFileSystem(self._test_fs, |
| prefix + 'extensions/manifest' + suffix) |
| self.assertEqual({ |
| 'moremanifest/usb.html': 'usb.html contents', |
| '': ['moremanifest/', 'sockets.html', ], |
| 'moremanifest/': ['csp.html', 'usb.html'], |
| 'sockets.html': 'sockets.html contents', |
| }, _SortListValues(chroot_fs.Read( |
| ('moremanifest/usb.html', '', 'moremanifest/', 'sockets.html') |
| ).Get())) |
| |
| def testEmptyRoot(self): |
| chroot_fs = ChrootFileSystem(self._test_fs, '') |
| self.assertEqual('404.html contents', |
| chroot_fs.ReadSingle('404.html').Get()) |
| |
| def testStat(self): |
| self._test_fs.IncrementStat('extensions/manifest/', by=2) |
| self._test_fs.IncrementStat('extensions/manifest/moremanifest/csp.html') |
| for prefix in ('', '/'): |
| for suffix in ('', '/'): |
| chroot_fs = ChrootFileSystem(self._test_fs, |
| prefix + 'extensions' + suffix) |
| self.assertEqual(StatInfo('0', child_versions={ |
| 'activeTab.html': '0', |
| 'alarms.html': '0', |
| 'manifest/': '2', |
| }), chroot_fs.Stat('')) |
| self.assertEqual(StatInfo('0'), chroot_fs.Stat('activeTab.html')) |
| self.assertEqual(StatInfo('2', child_versions={ |
| 'moremanifest/': '0', |
| 'sockets.html': '0', |
| }), chroot_fs.Stat('manifest/')) |
| self.assertEqual(StatInfo('0'), chroot_fs.Stat('manifest/sockets.html')) |
| self.assertEqual(StatInfo('0', child_versions={ |
| 'csp.html': '1', |
| 'usb.html': '0', |
| }), chroot_fs.Stat('manifest/moremanifest/')) |
| self.assertEqual(StatInfo('1'), |
| chroot_fs.Stat('manifest/moremanifest/csp.html')) |
| self.assertEqual(StatInfo('0'), |
| chroot_fs.Stat('manifest/moremanifest/usb.html')) |
| |
| def testIdentity(self): |
| chroot_fs1 = ChrootFileSystem(self._test_fs, '1') |
| chroot_fs1b = ChrootFileSystem(self._test_fs, '1') |
| chroot_fs2 = ChrootFileSystem(self._test_fs, '2') |
| self.assertNotEqual(self._test_fs.GetIdentity(), chroot_fs1.GetIdentity()) |
| self.assertNotEqual(self._test_fs.GetIdentity(), chroot_fs2.GetIdentity()) |
| self.assertNotEqual(chroot_fs1.GetIdentity(), chroot_fs2.GetIdentity()) |
| self.assertEqual(chroot_fs1.GetIdentity(), chroot_fs1b.GetIdentity()) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |