Source code for baseplate.testing.lib.file_watcher
import typing
from typing import Tuple
from typing import Type
from typing import Union
from baseplate.lib.file_watcher import _NOT_LOADED
from baseplate.lib.file_watcher import FileWatcher
from baseplate.lib.file_watcher import T
from baseplate.lib.file_watcher import WatchedFileNotAvailableError
[docs]class FakeFileWatcher(FileWatcher):
"""Fake file watcher for testing purposes.
Use this in place of a :py:class:`~baseplate.lib.file_watcher.FileWatcher`
in tests to avoid having to load an actual file:
.. testsetup::
from baseplate.testing.lib.file_watcher import FakeFileWatcher
.. doctest::
>>> file_watcher = FakeFileWatcher()
>>> file_watcher.get_data()
Traceback (most recent call last):
baseplate.lib.file_watcher.WatchedFileNotAvailableError: /fake-file-watcher: no value set
>>> file_watcher.data = "test"
>>> file_watcher.get_data()
'test'
.. versionadded:: 1.5
"""
# pylint: disable=super-init-not-called
def __init__(self, data: Union[T, Type[_NOT_LOADED]] = _NOT_LOADED, mtime: float = 1234):
self.data = data
self.mtime = mtime
def get_data_and_mtime(self) -> Tuple[T, float]:
if self.data is _NOT_LOADED:
raise WatchedFileNotAvailableError("/fake-file-watcher", Exception("no value set"))
return typing.cast(T, self.data), self.mtime