aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamoilenko Roman <ttahabatt@gmail.com>2018-09-29 16:21:46 +0300
committerGitHub <noreply@github.com>2018-09-29 16:21:46 +0300
commita8b809dcbc43520dbe1648e008227bce160d943f (patch)
tree705587dd8e41e32d20dbd9f82b05fb2bfefabd2e
parent7f5d8d0997dde853c90831eef4678b06104f7e76 (diff)
parented9e3d5137974dc824c8350d89439c46f711ef46 (diff)
downloadmitmproxy-a8b809dcbc43520dbe1648e008227bce160d943f.tar.gz
mitmproxy-a8b809dcbc43520dbe1648e008227bce160d943f.tar.bz2
mitmproxy-a8b809dcbc43520dbe1648e008227bce160d943f.zip
Merge pull request #3340 from kajojify/buttons
keys.yaml priority over defaultkeys.py
-rw-r--r--mitmproxy/tools/console/keymap.py5
-rw-r--r--test/mitmproxy/tools/console/test_keymap.py15
2 files changed, 19 insertions, 1 deletions
diff --git a/mitmproxy/tools/console/keymap.py b/mitmproxy/tools/console/keymap.py
index d22420bf..01ec9a0a 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 3e6f7c2e..0d6f9e88 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()