diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-02-03 19:19:47 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-02-03 19:19:47 +0100 |
commit | 44042358f722775648e7f0ff361aa4dfbe7517d7 (patch) | |
tree | e63c7f015b2d1682111891305c121ec6c003764d | |
parent | e7cafd34cc79df759f2ad9a13a7dc6f84e923f0b (diff) | |
download | qutebrowser-44042358f722775648e7f0ff361aa4dfbe7517d7.tar.gz qutebrowser-44042358f722775648e7f0ff361aa4dfbe7517d7.zip |
Allow providing a subset of args with --json-args
See #6091
-rw-r--r-- | qutebrowser/qutebrowser.py | 4 | ||||
-rw-r--r-- | tests/unit/test_qutebrowser.py | 14 |
2 files changed, 17 insertions, 1 deletions
diff --git a/qutebrowser/qutebrowser.py b/qutebrowser/qutebrowser.py index fe8d824ec..135fdbe1b 100644 --- a/qutebrowser/qutebrowser.py +++ b/qutebrowser/qutebrowser.py @@ -190,8 +190,10 @@ def _unpack_json_args(args): construct a "fake" argparse.Namespace here based on the data loaded from json. """ + new_args = vars(args) data = json.loads(args.json_args) - return argparse.Namespace(**data) + new_args.update(data) + return argparse.Namespace(**new_args) def main(): diff --git a/tests/unit/test_qutebrowser.py b/tests/unit/test_qutebrowser.py index c553606c4..842e856ee 100644 --- a/tests/unit/test_qutebrowser.py +++ b/tests/unit/test_qutebrowser.py @@ -60,3 +60,17 @@ class TestLogFilter: _out, err = capsys.readouterr() print(err) assert 'Invalid log category invalid - valid categories' in err + + +class TestJsonArgs: + + def test_partial(self, parser): + """Make sure we can provide a subset of all arguments. + + This ensures that it's possible to restart into an older version of qutebrowser + when a new argument was added. + """ + args = parser.parse_args(['--json-args', '{"debug": true}']) + args = qutebrowser._unpack_json_args(args) + assert args.debug + assert not args.temp_basedir |