Simplify config override syntax (#5)

* update tests and expected behavior

* clean up arg parsing tests

* update deserialization

* update deserialization

* config argparse action

* update override application logic

* update tests; delete unused imports

* override param must be list

* update docstring

* update test input to SUT

* update remaining override unittests

* make format

* forgot to update CLI syntax
This commit is contained in:
Suhas 2021-01-31 20:17:02 -05:00 committed by GitHub
parent 40f93a9322
commit 6e658c31df
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 82 additions and 114 deletions

View file

@ -16,24 +16,24 @@ def minimal_config():
def test_apply_override(minimal_config):
config = minimal_config.copy()
overrides = {"editor": "nano"}
overrides = [{"editor": "nano"}]
config = apply_overrides(overrides, config)
assert config["editor"] == "nano"
def test_override_dot_notation(minimal_config):
cfg = minimal_config.copy()
overrides = {"colors.body": "blue"}
overrides = [{"colors.body": "blue"}]
cfg = apply_overrides(overrides=overrides, base_config=cfg)
assert cfg["colors"] == {"body": "blue", "date": "green"}
def test_multiple_overrides(minimal_config):
overrides = {
"colors.title": "magenta",
"editor": "nano",
"journals.burner": "/tmp/journals/burner.jrnl",
} # as returned by parse_args, saved in parser.config_override
overrides = [
{"colors.title": "magenta"},
{"editor": "nano"},
{"journals.burner": "/tmp/journals/burner.jrnl"},
] # as returned by parse_args, saved in parser.config_override
cfg = apply_overrides(overrides, minimal_config.copy())
assert cfg["editor"] == "nano"