blob: 24160eab907b248f5b4fc9995b2b866b4ec91263 [file] [log] [blame]
#!/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 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/sockets.html', 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('2', 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/': '1',
'sockets.html': '2',
}), chroot_fs.Stat('manifest/'))
self.assertEqual(StatInfo('2'), chroot_fs.Stat('manifest/sockets.html'))
self.assertEqual(StatInfo('1', 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()