cli: config: add support for --show-origin (#5126)

* cli: config: add support for --show-origin

Support the --show-origin option for config, which, similar to git,
prefixes each config option with the source file it originated from.

Fixes #5119

* Reformat with black.

* Simplify logic for local config files.

* Add test for --show-config output.

* Update tests/func/test_config.py

Co-authored-by: Ruslan Kuprieiev <[email protected]>
This commit is contained in:
Michael Stegeman
2020-12-30 21:56:20 +02:00
committed by GitHub
co-authored by Ruslan Kuprieiev
parent 23811e028c
commit 34ed545d64
2 changed files with 77 additions and 4 deletions
+37
View File
@@ -48,9 +48,15 @@ class TestConfigCLI(TestDvc):
self.assertEqual(ret, 0)
self.assertTrue(self._contains(section, field, value, local))
ret = main(base + [section_field, value, "--show-origin"])
self.assertEqual(ret, 1)
ret = main(base + [section_field])
self.assertEqual(ret, 0)
ret = main(base + ["--show-origin", section_field])
self.assertEqual(ret, 0)
ret = main(base + [section_field, newvalue])
self.assertEqual(ret, 0)
self.assertTrue(self._contains(section, field, newvalue, local))
@@ -60,9 +66,15 @@ class TestConfigCLI(TestDvc):
self.assertEqual(ret, 0)
self.assertFalse(self._contains(section, field, value, local))
ret = main(base + [section_field, "--unset", "--show-origin"])
self.assertEqual(ret, 1)
ret = main(base + ["--list"])
self.assertEqual(ret, 0)
ret = main(base + ["--list", "--show-origin"])
self.assertEqual(ret, 0)
def test(self):
self._do_test(False)
@@ -174,3 +186,28 @@ def test_config_remote(tmp_dir, dvc, caplog):
caplog.clear()
assert main(["config", "remote.myremote.region"]) == 0
assert "myregion" in caplog.text
def test_config_show_origin(tmp_dir, dvc, caplog):
(tmp_dir / ".dvc" / "config").write_text(
"['remote \"myremote\"']\n"
" url = s3://bucket/path\n"
" region = myregion\n"
)
caplog.clear()
assert main(["config", "--show-origin", "remote.myremote.url"]) == 0
assert (
"{}\t{}\n".format(os.path.join(".dvc", "config"), "s3://bucket/path")
in caplog.text
)
caplog.clear()
assert main(["config", "--list", "--show-origin"]) == 0
assert (
"{}\t{}\n".format(
os.path.join(".dvc", "config"),
"remote.myremote.url=s3://bucket/path",
)
in caplog.text
)