From a2412456747bd1da631c9ce7e0f60dd93bdff8be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Saugat=20Pachhai=20=28=E0=A4=B8=E0=A5=8C=E0=A4=97=E0=A4=BE?= =?UTF-8?q?=E0=A4=A4=29?= Date: Thu, 12 May 2022 23:14:10 +0545 Subject: [PATCH] dvc.stage.cache: fix typo, was using src filesystem to transfer This was working for LocalFileSystem as they work for any directories/path. It's hard to test this these days, as we don't have remote tests inside dvc, so it was not caught. Potentially fixes #7718. --- dvc/stage/cache.py | 2 +- dvc/testing/test_run_cache.py | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 dvc/testing/test_run_cache.py 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