diff --git a/jrnl/jrnl.py b/jrnl/jrnl.py index e58cc956..f04dc471 100644 --- a/jrnl/jrnl.py +++ b/jrnl/jrnl.py @@ -51,10 +51,9 @@ def run(args): # Apply config overrides overrides = args.config_override - # TODO: substitute overriden KV pairs in config dict ONLY AFTER ADDING TESTS - for k in overrides: - logging.debug("Overriding %s from %s to %s" % (k, config[k], overrides[k])) - config[k] = overrides[k] + from .override import apply_overrides + config = apply_overrides(overrides,config) + # --- All the standalone commands are now done --- # # Get the journal we're going to be working with diff --git a/jrnl/override.py b/jrnl/override.py new file mode 100644 index 00000000..09de4258 --- /dev/null +++ b/jrnl/override.py @@ -0,0 +1,8 @@ +import logging +def apply_overrides(overrides: dict, base_config: dict) -> dict: + config = base_config.copy() + for k in overrides: + logging.debug("Overriding %s from %s to %s" % (k, config[k], overrides[k])) + config[k] = overrides[k] + + return config \ No newline at end of file diff --git a/tests/test_override.py b/tests/test_override.py new file mode 100644 index 00000000..25f38243 --- /dev/null +++ b/tests/test_override.py @@ -0,0 +1,27 @@ +import pytest + +import mock + +from jrnl.args import parse_args +from jrnl.jrnl import run, search_mode +from jrnl import install +from jrnl.override import apply_overrides +@pytest.fixture() +def minimal_config(): + cfg = { + "colors":{ + "body":"red", + "date":"green" + }, + "default":"/tmp/journal.jrnl", + "editor":"vim" + } + yield cfg + +def test_apply_override(minimal_config): + config = minimal_config.copy() + overrides = { + 'editor':'nano' + } + config = apply_overrides(overrides, config) + assert config['editor']=='nano' \ No newline at end of file