def test_unhashable(tmp_dir, dvc, mocker, kwargs): from dvc.stage import Stage, create_stage from dvc.stage.cache import RunCacheNotFoundError, StageCache cache = StageCache(dvc) stage = create_stage(Stage, path="stage.dvc", repo=dvc, **kwargs) get_stage_hash = mocker.patch("dvc.stage.cache._get_stage_hash") assert cache.save(stage) is None assert get_stage_hash.not_called with pytest.raises(RunCacheNotFoundError): cache.restore(stage) assert get_stage_hash.not_called
def test_always_changed(mocker): from dvc.repo import Repo from dvc.stage import Stage from dvc.stage.cache import RunCacheNotFoundError, StageCache repo = mocker.Mock(spec=Repo) cache = StageCache(repo) stage = Stage(repo, always_changed=True) get_stage_hash = mocker.patch("dvc.stage.cache._get_stage_hash") assert cache.save(stage) is None assert get_stage_hash.not_called with pytest.raises(RunCacheNotFoundError): cache.restore(stage) assert get_stage_hash.not_called