blob: 8c5b846d1b7438df4655dcaf35fdf5e56b7d2218 [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 chained_compiled_file_system import ChainedCompiledFileSystem
from compiled_file_system import CompiledFileSystem
from object_store_creator import ObjectStoreCreator
from test_file_system import TestFileSystem
_TEST_DATA_BASE = {
'a.txt': 'base a.txt',
'dir': {
'b.txt': 'base b.txt'
},
}
_TEST_DATA_NEW = {
'a.txt': 'new a.txt',
'new.txt': 'a new file',
'dir': {
'b.txt': 'new b.txt',
'new.txt': 'new file in dir',
},
}
identity = lambda _, x: x
class ChainedCompiledFileSystemTest(unittest.TestCase):
def setUp(self):
object_store_creator = ObjectStoreCreator(start_empty=False)
base_file_system = TestFileSystem(_TEST_DATA_BASE)
self._base_factory = CompiledFileSystem.Factory(base_file_system,
object_store_creator)
self._file_system = TestFileSystem(_TEST_DATA_NEW)
self._patched_factory = CompiledFileSystem.Factory(self._file_system,
object_store_creator)
self._chained_factory = ChainedCompiledFileSystem.Factory(
[(self._patched_factory, self._file_system),
(self._base_factory, base_file_system)])
self._base_compiled_fs = self._base_factory.Create(identity, TestFileSystem)
self._chained_compiled_fs = self._chained_factory.Create(
identity, TestFileSystem)
def testGetFromFile(self):
self.assertEqual(self._chained_compiled_fs.GetFromFile('a.txt'),
self._base_compiled_fs.GetFromFile('a.txt'))
self.assertEqual(self._chained_compiled_fs.GetFromFile('new.txt'),
'a new file')
self.assertEqual(self._chained_compiled_fs.GetFromFile('dir/new.txt'),
'new file in dir')
self._file_system.IncrementStat('a.txt')
self.assertNotEqual(self._chained_compiled_fs.GetFromFile('a.txt'),
self._base_compiled_fs.GetFromFile('a.txt'))
self.assertEqual(self._chained_compiled_fs.GetFromFile('a.txt'),
self._file_system.ReadSingle('a.txt'))
def testGetFromFileListing(self):
self.assertEqual(self._chained_compiled_fs.GetFromFile('dir/'),
self._base_compiled_fs.GetFromFile('dir/'))
self._file_system.IncrementStat('dir/')
self.assertNotEqual(self._chained_compiled_fs.GetFromFileListing('dir/'),
self._base_compiled_fs.GetFromFileListing('dir/'))
self.assertEqual(self._chained_compiled_fs.GetFromFileListing('dir/'),
self._file_system.ReadSingle('dir/'))
if __name__ == '__main__':
unittest.main()