2 # Copyright 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
7 from caching_rietveld_patcher import (CachingRietveldPatcher,
9 from datetime import datetime
10 from file_system import FileNotFoundError
11 from future import Future
12 from object_store_creator import ObjectStoreCreator
13 from patcher import Patcher
14 from test_patcher import TestPatcher
16 _TEST_PATCH_VERSION = '1'
17 _TEST_PATCH_FILES = (['add.txt'], ['del.txt'], ['modify.txt'])
20 'modify.txt': 'modify',
23 class FakeDateTime(object):
24 def __init__(self, time=datetime.now()):
30 class CachingRietveldPatcherTest(unittest.TestCase):
32 self._datetime = FakeDateTime()
33 # CachingRietveldPatcher should always call Apply with binary=True.
34 self._test_patcher = TestPatcher(_TEST_PATCH_VERSION,
38 self._patcher = CachingRietveldPatcher(
40 ObjectStoreCreator(start_empty=False),
43 def testGetVersion(self):
45 self._datetime.time += _VERSION_CACHE_MAXAGE
47 self._patcher.GetVersion()
48 count = self._test_patcher.get_version_count
49 # Should read from cache.
50 self._patcher.GetVersion()
51 self.assertEqual(count, self._test_patcher.get_version_count)
53 self._datetime.time += _VERSION_CACHE_MAXAGE
54 # Should fetch version.
55 self._patcher.GetVersion()
56 self.assertEqual(count + 1, self._test_patcher.get_version_count)
58 def testGetPatchedFiles(self):
60 self._patcher.GetPatchedFiles()
61 count = self._test_patcher.get_patched_files_count
62 # Should read from cache.
63 self._patcher.GetPatchedFiles()
64 self.assertEqual(count, self._test_patcher.get_patched_files_count)
68 self._patcher.Apply(['add.txt'], None).Get()
69 count = self._test_patcher.apply_count
70 # Should read from cache even though it's reading another file.
71 self._patcher.Apply(['modify.txt'], None).Get()
72 self.assertEqual(count, self._test_patcher.apply_count)
74 # Make sure RietveldPatcher handles |binary| correctly.
75 self.assertTrue(isinstance(self._patcher.Apply(['add.txt'], None, True).
76 Get()['add.txt'], str),
77 'Expected result is binary. It was text.')
78 self.assertTrue(isinstance(self._patcher.Apply(['add.txt'], None).
79 Get()['add.txt'], unicode),
80 'Expected result is text. It was binary.')
82 if __name__ == '__main__':