From e6a2b8a2adcea9fbe896c236e6f9476d0a2e471a Mon Sep 17 00:00:00 2001 From: Saugat Pachhai Date: Mon, 17 May 2021 21:35:58 +0545 Subject: [PATCH] ui: migrate cache:dir and check-ignore to ui.write (#6021) --- dvc/command/cache.py | 6 ++--- dvc/command/check_ignore.py | 8 +++--- tests/func/test_check_ignore.py | 42 +++++++++++++++++++------------- tests/func/test_odb.py | 25 ------------------- tests/unit/command/test_cache.py | 28 +++++++++++++++++++++ 5 files changed, 58 insertions(+), 51 deletions(-) create mode 100644 tests/unit/command/test_cache.py diff --git a/dvc/command/cache.py b/dvc/command/cache.py index d6d38fbdf..90a33fa60 100644 --- a/dvc/command/cache.py +++ b/dvc/command/cache.py @@ -1,11 +1,9 @@ import argparse -import logging from dvc.command import completion from dvc.command.base import append_doc_link, fix_subparsers from dvc.command.config import CmdConfig - -logger = logging.getLogger(__name__) +from dvc.ui import ui class CmdCacheDir(CmdConfig): @@ -17,7 +15,7 @@ class CmdCacheDir(CmdConfig): # Use merged config with default values conf = self.config self._check(conf, False, "cache", "dir") - logger.info(conf["cache"]["dir"]) + ui.write(conf["cache"]["dir"]) return 0 with self.config.edit(level=self.args.level) as conf: if self.args.unset: diff --git a/dvc/command/check_ignore.py b/dvc/command/check_ignore.py index 9666fd012..cffa7c5bd 100644 --- a/dvc/command/check_ignore.py +++ b/dvc/command/check_ignore.py @@ -1,10 +1,8 @@ import argparse -import logging from dvc.command import completion from dvc.command.base import CmdBase, append_doc_link - -logger = logging.getLogger(__name__) +from dvc.ui import ui class CmdCheckIgnore(CmdBase): @@ -22,9 +20,9 @@ class CmdCheckIgnore(CmdBase): patterns = patterns[-1:] for pattern in patterns: - logger.info("{}\t{}".format(pattern, result.file)) + ui.write(pattern, result.file, sep="\t") else: - logger.info(result.file) + ui.write(result.file) def _check_one_file(self, target): result = self.ignore_filter.check_ignore(target) diff --git a/tests/func/test_check_ignore.py b/tests/func/test_check_ignore.py index dd974fc4f..7bf6e73da 100644 --- a/tests/func/test_check_ignore.py +++ b/tests/func/test_check_ignore.py @@ -9,11 +9,13 @@ from dvc.main import main @pytest.mark.parametrize( "file,ret,output", [("ignored", 0, True), ("not_ignored", 1, False)] ) -def test_check_ignore(tmp_dir, dvc, file, ret, output, caplog): +def test_check_ignore(tmp_dir, dvc, file, ret, output, caplog, capsys): tmp_dir.gen(DvcIgnore.DVCIGNORE_FILE, "ignored") assert main(["check-ignore", file]) == ret - assert (file in caplog.text) is output + + out, _ = capsys.readouterr() + assert (file in out) is output assert "Having any troubles?" not in caplog.text @@ -32,23 +34,24 @@ def test_check_ignore(tmp_dir, dvc, file, ret, output, caplog): ), ], ) -def test_check_ignore_details(tmp_dir, dvc, file, ret, output, caplog): +def test_check_ignore_details(tmp_dir, dvc, file, ret, output, capsys): tmp_dir.gen(DvcIgnore.DVCIGNORE_FILE, "f*\n!foo") tmp_dir.gen({"dir": {DvcIgnore.DVCIGNORE_FILE: "foobar"}}) assert main(["check-ignore", "-d", file]) == ret - assert output in caplog.text + assert (output, "") == capsys.readouterr() @pytest.mark.parametrize("non_matching", [True, False]) -def test_check_ignore_non_matching(tmp_dir, dvc, non_matching, caplog): +def test_check_ignore_non_matching(tmp_dir, dvc, non_matching, caplog, capsys): tmp_dir.gen(DvcIgnore.DVCIGNORE_FILE, "other") if non_matching: assert main(["check-ignore", "-d", "-n", "file"]) == 1 else: assert main(["check-ignore", "-d", "file"]) == 1 - assert ("::\tfile\n" in caplog.text) is non_matching + out, _ = capsys.readouterr() + assert ("::\tfile\n" in out) is non_matching @pytest.mark.parametrize( @@ -83,19 +86,19 @@ def test_check_ignore_out_side_repo(tmp_dir, dvc): assert main(["check-ignore", "-q", "../file"]) == 1 -def test_check_ignore_sub_repo(tmp_dir, dvc, caplog): +def test_check_ignore_sub_repo(tmp_dir, dvc, capsys): tmp_dir.gen( {DvcIgnore.DVCIGNORE_FILE: "other", "dir": {".dvc": {}, "foo": "bar"}} ) assert main(["check-ignore", "-d", os.path.join("dir", "foo")]) == 0 + out, _ = capsys.readouterr() assert ( - "in sub_repo:{}\t{}".format("dir", os.path.join("dir", "foo"),) - in caplog.text + "in sub_repo:{}\t{}".format("dir", os.path.join("dir", "foo"),) in out ) -def test_check_sub_dir_ignore_file(tmp_dir, dvc, caplog): +def test_check_sub_dir_ignore_file(tmp_dir, dvc, capsys): tmp_dir.gen( { DvcIgnore.DVCIGNORE_FILE: "other", @@ -104,36 +107,41 @@ def test_check_sub_dir_ignore_file(tmp_dir, dvc, caplog): ) assert main(["check-ignore", "-d", os.path.join("dir", "foo")]) == 0 + + out, _ = capsys.readouterr() assert ( "{}:2:foo\t{}".format( os.path.join("dir", DvcIgnore.DVCIGNORE_FILE), os.path.join("dir", "foo"), ) - in caplog.text + in out ) sub_dir = tmp_dir / "dir" with sub_dir.chdir(): assert main(["check-ignore", "-d", "foo"]) == 0 - assert ".dvcignore:2:foo\tfoo" in caplog.text + out, _ = capsys.readouterr() + assert ".dvcignore:2:foo\tfoo" in out -def test_check_ignore_details_all(tmp_dir, dvc, caplog): +def test_check_ignore_details_all(tmp_dir, dvc, capsys): tmp_dir.gen(DvcIgnore.DVCIGNORE_FILE, "f*\n!foo") assert main(["check-ignore", "-d", "-a", "foo"]) == 0 - assert "{}:1:f*\tfoo\n".format(DvcIgnore.DVCIGNORE_FILE) in caplog.text - assert "{}:2:!foo\tfoo\n".format(DvcIgnore.DVCIGNORE_FILE) in caplog.text + out, _ = capsys.readouterr() + assert "{}:1:f*\tfoo\n".format(DvcIgnore.DVCIGNORE_FILE) in out + assert "{}:2:!foo\tfoo\n".format(DvcIgnore.DVCIGNORE_FILE) in out @pytest.mark.parametrize( "file,ret,output", [("ignored", 0, True), ("not_ignored", 1, False)] ) def test_check_ignore_stdin_mode( - tmp_dir, dvc, file, ret, output, caplog, mocker + tmp_dir, dvc, file, ret, output, capsys, mocker ): tmp_dir.gen(DvcIgnore.DVCIGNORE_FILE, "ignored") mocker.patch("builtins.input", side_effect=[file, ""]) assert main(["check-ignore", "--stdin"]) == ret - assert (file in caplog.text) is output + out, _ = capsys.readouterr() + assert (file in out) is output diff --git a/tests/func/test_odb.py b/tests/func/test_odb.py index 024000d04..102975fa7 100644 --- a/tests/func/test_odb.py +++ b/tests/func/test_odb.py @@ -1,6 +1,5 @@ import os import stat -import textwrap import configobj import pytest @@ -230,27 +229,3 @@ def test_shared_cache(tmp_dir, dvc, group): } assert expected == actual - - -def test_cache_dir_local(tmp_dir, dvc, caplog): - (tmp_dir / ".dvc" / "config.local").write_text( - textwrap.dedent( - """\ - [cache] - dir = some/path - """ - ) - ) - path = os.path.join(dvc.dvc_dir, "some", "path") - - caplog.clear() - assert main(["cache", "dir", "--local"]) == 0 - assert path in caplog.text - - caplog.clear() - assert main(["cache", "dir"]) == 0 - assert path in caplog.text - - caplog.clear() - assert main(["cache", "dir", "--project"]) == 251 - assert "option 'dir' doesn't exist in section 'cache'" in caplog.text diff --git a/tests/unit/command/test_cache.py b/tests/unit/command/test_cache.py new file mode 100644 index 000000000..246928e65 --- /dev/null +++ b/tests/unit/command/test_cache.py @@ -0,0 +1,28 @@ +import os +import textwrap + +from dvc.main import main + + +def test_cache_dir_local(tmp_dir, dvc, capsys, caplog): + (tmp_dir / ".dvc" / "config.local").write_text( + textwrap.dedent( + """\ + [cache] + dir = some/path + """ + ) + ) + path = os.path.join(dvc.dvc_dir, "some", "path") + + assert main(["cache", "dir", "--local"]) == 0 + + out, _ = capsys.readouterr() + assert path in out + + assert main(["cache", "dir"]) == 0 + out, _ = capsys.readouterr() + assert path in out + + assert main(["cache", "dir", "--project"]) == 251 + assert "option 'dir' doesn't exist in section 'cache'" in caplog.text