From 67ceed0d256e66791a313e89022d06fafefd61da Mon Sep 17 00:00:00 2001 From: Kaio Utsch Date: Wed, 20 Nov 2019 09:21:41 +0000 Subject: [PATCH 1/6] remote: fix remote default call with no arguments remote default command with no arguments now returns default remote instead of setting default remote to None. Fixes #2813 --- dvc/command/remote.py | 10 +++++++--- dvc/remote/config.py | 5 +++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/dvc/command/remote.py b/dvc/command/remote.py index 9ff361fd6f..874856ee30 100644 --- a/dvc/command/remote.py +++ b/dvc/command/remote.py @@ -48,9 +48,13 @@ def run(self): class CmdRemoteDefault(CmdRemoteConfig): def run(self): - self.remote_config.set_default( - self.args.name, unset=self.args.unset, level=self.args.level - ) + if self.args.name is None: + name = self.remote_config.get_default(level=self.args.level) + logger.info("{}".format(name)) + else: + self.remote_config.set_default( + self.args.name, unset=self.args.unset, level=self.args.level + ) return 0 diff --git a/dvc/remote/config.py b/dvc/remote/config.py index 17f1ef4fd8..dccad52ba3 100644 --- a/dvc/remote/config.py +++ b/dvc/remote/config.py @@ -151,3 +151,8 @@ def set_default(self, name, unset=False, level=None): self.config.set( Config.SECTION_CORE, Config.SECTION_CORE_REMOTE, name, level=level ) + + def get_default(self, level=None): + return self.config.get( + Config.SECTION_CORE, Config.SECTION_CORE_REMOTE, level=level + ) From 142eb475574105a5ee857260b682a0a3d009866e Mon Sep 17 00:00:00 2001 From: Kaio Utsch Date: Wed, 20 Nov 2019 10:29:10 +0000 Subject: [PATCH 2/6] remote: fix default --unset break of last commit --- dvc/command/remote.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dvc/command/remote.py b/dvc/command/remote.py index 874856ee30..c6f7966427 100644 --- a/dvc/command/remote.py +++ b/dvc/command/remote.py @@ -48,7 +48,7 @@ def run(self): class CmdRemoteDefault(CmdRemoteConfig): def run(self): - if self.args.name is None: + if self.args.name is None and not self.args.unset: name = self.remote_config.get_default(level=self.args.level) logger.info("{}".format(name)) else: From c2def64dc7e9f30150793780ef1f5b1e40c14efb Mon Sep 17 00:00:00 2001 From: Kaio Giurizatto Utsch Date: Mon, 25 Nov 2019 17:35:45 -0300 Subject: [PATCH 3/6] remote: add test case to show default --- tests/func/test_remote.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/func/test_remote.py b/tests/func/test_remote.py index f589eb234e..88a83c564a 100644 --- a/tests/func/test_remote.py +++ b/tests/func/test_remote.py @@ -145,6 +145,12 @@ def test(self): self.assertEqual(default, None) +def test_show_default(dvc_repo, caplog): + assert main(["remote", "default", "foo"]) == 0 + assert main(["remote", "default"]) == 0 + assert "foo" == caplog.record_tuples[0][2] + + class TestRemoteShouldHandleUppercaseRemoteName(TestDvc): upper_case_remote_name = "UPPERCASEREMOTE" From 961110789648ec0283fa5745a9faf87ab2d06c2a Mon Sep 17 00:00:00 2001 From: Kaio Giurizatto Utsch Date: Mon, 25 Nov 2019 17:51:49 -0300 Subject: [PATCH 4/6] Remove unused argument --- tests/func/test_remote.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/func/test_remote.py b/tests/func/test_remote.py index 88a83c564a..1994a5ec45 100644 --- a/tests/func/test_remote.py +++ b/tests/func/test_remote.py @@ -145,7 +145,7 @@ def test(self): self.assertEqual(default, None) -def test_show_default(dvc_repo, caplog): +def test_show_default(caplog): assert main(["remote", "default", "foo"]) == 0 assert main(["remote", "default"]) == 0 assert "foo" == caplog.record_tuples[0][2] From 95924a34e65f89acb25477757620090ce563498f Mon Sep 17 00:00:00 2001 From: Kaio Giurizatto Utsch Date: Tue, 26 Nov 2019 14:19:09 -0300 Subject: [PATCH 5/6] Undo last commit Turns out that the argument was needed after all --- tests/func/test_remote.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/func/test_remote.py b/tests/func/test_remote.py index 1994a5ec45..88a83c564a 100644 --- a/tests/func/test_remote.py +++ b/tests/func/test_remote.py @@ -145,7 +145,7 @@ def test(self): self.assertEqual(default, None) -def test_show_default(caplog): +def test_show_default(dvc_repo, caplog): assert main(["remote", "default", "foo"]) == 0 assert main(["remote", "default"]) == 0 assert "foo" == caplog.record_tuples[0][2] From 82a535b97e06cb587afbe38577fa112d9ecc2cde Mon Sep 17 00:00:00 2001 From: Kaio Giurizatto Utsch Date: Tue, 26 Nov 2019 15:02:03 -0300 Subject: [PATCH 6/6] Change logging to print Python logging recommends using print instead of logging for ordinary output of command line program. Also changed the test to reflect this. --- dvc/command/remote.py | 2 +- tests/func/test_remote.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/dvc/command/remote.py b/dvc/command/remote.py index c6f7966427..8c6dbc3ef3 100644 --- a/dvc/command/remote.py +++ b/dvc/command/remote.py @@ -50,7 +50,7 @@ class CmdRemoteDefault(CmdRemoteConfig): def run(self): if self.args.name is None and not self.args.unset: name = self.remote_config.get_default(level=self.args.level) - logger.info("{}".format(name)) + print(name) else: self.remote_config.set_default( self.args.name, unset=self.args.unset, level=self.args.level diff --git a/tests/func/test_remote.py b/tests/func/test_remote.py index 88a83c564a..8e8f00deeb 100644 --- a/tests/func/test_remote.py +++ b/tests/func/test_remote.py @@ -145,10 +145,11 @@ def test(self): self.assertEqual(default, None) -def test_show_default(dvc_repo, caplog): +def test_show_default(dvc_repo, capsys): assert main(["remote", "default", "foo"]) == 0 assert main(["remote", "default"]) == 0 - assert "foo" == caplog.record_tuples[0][2] + out, _ = capsys.readouterr() + assert out == "foo\n" class TestRemoteShouldHandleUppercaseRemoteName(TestDvc):