run-cache: don't save always_changed stages (#4719)

Fixes #4335
This commit is contained in:
Ruslan Kuprieiev
2020-10-14 17:43:16 +03:00
committed by GitHub
parent 6a79111047
commit 32cef509b7
2 changed files with 26 additions and 2 deletions
+18
View File
@@ -1,5 +1,7 @@
import os
import pytest
def test_stage_cache(tmp_dir, dvc, mocker):
tmp_dir.gen("dep", "dep")
@@ -204,3 +206,19 @@ def test_shared_stage_cache(tmp_dir, dvc, run_copy):
assert _mode(parent_cache_dir) == dir_mode
assert _mode(cache_dir) == dir_mode
assert _mode(cache_file) == file_mode
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