summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-02-03 19:19:47 +0100
committerFlorian Bruhin <me@the-compiler.org>2021-02-03 19:19:47 +0100
commit44042358f722775648e7f0ff361aa4dfbe7517d7 (patch)
treee63c7f015b2d1682111891305c121ec6c003764d
parente7cafd34cc79df759f2ad9a13a7dc6f84e923f0b (diff)
downloadqutebrowser-44042358f722775648e7f0ff361aa4dfbe7517d7.tar.gz
qutebrowser-44042358f722775648e7f0ff361aa4dfbe7517d7.zip
Allow providing a subset of args with --json-args
See #6091
-rw-r--r--qutebrowser/qutebrowser.py4
-rw-r--r--tests/unit/test_qutebrowser.py14
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