1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
# Copyright 2025 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os
import tempfile
import unittest
import presubmit_caching_support
class DummyResult:
def __init__(self, msg: str):
self.msg = msg
def _TempCacheFile():
file_handle, file_path = tempfile.mkstemp(suffix='.json', text=True)
os.close(file_handle)
return file_path
class PresubmitCachingSupportTest(unittest.TestCase):
def testCanCacheAndRetrieveResult(self):
storage_path = _TempCacheFile()
cache = presubmit_caching_support.PresubmitCache(storage_path,
os.path.dirname(__file__))
cache.StoreResultInCache(1, DummyResult('dummy result'))
retrieved_result = cache.RetrieveResultFromCache(1)
self.assertEqual(retrieved_result.msg, 'dummy result')
def testCanReloadCacheFromDisk(self):
storage_path = _TempCacheFile()
cache = presubmit_caching_support.PresubmitCache(storage_path,
os.path.dirname(__file__))
cache.StoreResultInCache(1, DummyResult('dummy result'))
restored_cache = presubmit_caching_support.PresubmitCache(
storage_path, os.path.dirname(__file__))
retrieved_result = restored_cache.RetrieveResultFromCache(1)
self.assertIsNotNone(retrieved_result)
self.assertEqual(retrieved_result.msg, 'dummy result')
def testDoesntReturnFromDifferentCheck(self):
storage_path = _TempCacheFile()
cache = presubmit_caching_support.PresubmitCache(storage_path,
os.path.dirname(__file__))
cache.StoreResultInCache(1, DummyResult('dummy result'))
restored_cache = presubmit_caching_support.PresubmitCache(
storage_path, os.path.dirname(__file__))
retrieved_result = restored_cache.RetrieveResultFromCache(17)
self.assertIsNone(retrieved_result)
def testChangingDirectoryContentInvalidatesCache(self):
checked_dir = tempfile.mkdtemp()
storage_path = _TempCacheFile()
cache = presubmit_caching_support.PresubmitCache(storage_path, checked_dir)
cache.StoreResultInCache(1, DummyResult('dummy result'))
retrieved_result = cache.RetrieveResultFromCache(1)
self.assertEqual(retrieved_result.msg, 'dummy result')
with open(os.path.join(checked_dir, 'dummy_file'), 'w') as f:
f.write('changing contents of observed directory')
# The cache should be invalidated by the change in the observed directory.
new_retrieved_result = cache.RetrieveResultFromCache(1)
self.assertIsNone(new_retrieved_result)
if __name__ == '__main__':
unittest.main()
|