From ed9e3d5137974dc824c8350d89439c46f711ef46 Mon Sep 17 00:00:00 2001 From: Miroslav Date: Sat, 29 Sep 2018 15:54:17 +0300 Subject: [PATCH] keys.yaml priority over defaultkeys.py. Test for this. --- mitmproxy/tools/console/keymap.py | 5 ++++- test/mitmproxy/tools/console/test_keymap.py | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/mitmproxy/tools/console/keymap.py b/mitmproxy/tools/console/keymap.py index d22420bfd..01ec9a0ac 100644 --- a/mitmproxy/tools/console/keymap.py +++ b/mitmproxy/tools/console/keymap.py @@ -199,11 +199,14 @@ class KeymapConfig: "Error reading %s: %s" % (p, e) ) from e for v in vals: + user_ctxs = v.get("ctx", ["global"]) try: + km._check_contexts(user_ctxs) + km.remove(v["key"], Contexts) km.add( key = v["key"], command = v["cmd"], - contexts = v.get("ctx", ["global"]), + contexts = user_ctxs, help = v.get("help", None), ) except ValueError as e: diff --git a/test/mitmproxy/tools/console/test_keymap.py b/test/mitmproxy/tools/console/test_keymap.py index 3e6f7c2ee..0d6f9e888 100644 --- a/test/mitmproxy/tools/console/test_keymap.py +++ b/test/mitmproxy/tools/console/test_keymap.py @@ -117,6 +117,21 @@ def test_load_path(tmpdir): kmc.load_path(km, dst) assert(km.get("chooser", "key1")) + km.add("key123", "str", ["flowlist", "flowview"]) + with open(dst, 'w') as f: + f.write( + """ + - key: key123 + ctx: [options] + cmd: foo + """ + ) + kmc.load_path(km, dst) + for b in km.bindings: + if b.key == "key123": + assert b.contexts == ["options"] + break + def test_parse(): kmc = keymap.KeymapConfig()