diff --git a/dvc/stage/cache.py b/dvc/stage/cache.py index e155275e7c..1a49bc9554 100644 --- a/dvc/stage/cache.py +++ b/dvc/stage/cache.py @@ -216,7 +216,7 @@ def transfer(self, from_odb, to_odb): from dvc.fs.callbacks import Callback from_fs = from_odb.fs - to_fs = from_odb.fs + to_fs = to_odb.fs func = _log_exceptions(fs.generic.copy) runs = from_fs.path.join(from_odb.fs_path, "runs") diff --git a/dvc/testing/test_run_cache.py b/dvc/testing/test_run_cache.py new file mode 100644 index 0000000000..a22ce85542 --- /dev/null +++ b/dvc/testing/test_run_cache.py @@ -0,0 +1,19 @@ +import shutil + +from .tmp_dir import TmpDir + + +def test_push_pull(tmp_dir, dvc, remote): + tmp_dir.gen("foo", "foo") + stage = dvc.stage.add( + deps=["foo"], outs=["bar"], name="copy-foo-bar", cmd="cp foo bar" + ) + dvc.reproduce(stage.addressing) + assert dvc.push(run_cache=True) == 2 + + stage_cache_dir = TmpDir(dvc.stage_cache.cache_dir) + expected = list(stage_cache_dir.rglob("*")) + shutil.rmtree(stage_cache_dir) + + dvc.pull(run_cache=True) + assert list(stage_cache_dir.rglob("*")) == expected