From 2013e21aafc1b98760b1feab62486edbcb58a4b2 Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Fri, 5 Jul 2019 02:52:08 +0300 Subject: [PATCH] checkout: safe_remove output if no checksum is found Fixes #2146 Signed-off-by: Ruslan Kuprieiev --- dvc/remote/base.py | 7 +++++-- tests/func/test_checkout.py | 6 ++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/dvc/remote/base.py b/dvc/remote/base.py index cbab583f5..a87c3a99d 100644 --- a/dvc/remote/base.py +++ b/dvc/remote/base.py @@ -770,8 +770,11 @@ class RemoteBASE(object): checksum = checksum_info.get(self.PARAM_CHECKSUM) if not checksum: - msg = "No checksum info for '{}'." - logger.debug(msg.format(str(path_info))) + logger.warning( + "No checksum info found for '{}'. " + "It won't be created.".format(str(path_info)) + ) + self.safe_remove(path_info, force=force) return if not self.changed(path_info, checksum_info): diff --git a/tests/func/test_checkout.py b/tests/func/test_checkout.py index 02671f44a..c984ff410 100644 --- a/tests/func/test_checkout.py +++ b/tests/func/test_checkout.py @@ -575,3 +575,9 @@ class TestCheckoutMovedCacheDirWithSymlinks(TestDvc): relpath(old_data_link, old_cache_dir), relpath(new_data_link, new_cache_dir), ) + + +def test_checkout_no_checksum(repo_dir, dvc_repo): + stage = dvc_repo.run(outs=[repo_dir.FOO], no_exec=True, cmd="somecmd") + dvc_repo.checkout(stage.path, force=True) + assert not os.path.exists(repo_dir.FOO)