From 4d2cb321d6fbbb1813fd9ae4d38568be8d3d4cb4 Mon Sep 17 00:00:00 2001 From: Kevin Cui Date: Tue, 7 Apr 2020 16:10:26 +0200 Subject: [PATCH] #3911 Support keybinding for different contexts with different commands --- mitmproxy/tools/console/keymap.py | 2 +- test/mitmproxy/tools/console/test_keymap.py | 22 +++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/mitmproxy/tools/console/keymap.py b/mitmproxy/tools/console/keymap.py index 01ec9a0ac..a42225cfb 100644 --- a/mitmproxy/tools/console/keymap.py +++ b/mitmproxy/tools/console/keymap.py @@ -202,7 +202,7 @@ class KeymapConfig: user_ctxs = v.get("ctx", ["global"]) try: km._check_contexts(user_ctxs) - km.remove(v["key"], Contexts) + km.remove(v["key"], user_ctxs) km.add( key = v["key"], command = v["cmd"], diff --git a/test/mitmproxy/tools/console/test_keymap.py b/test/mitmproxy/tools/console/test_keymap.py index 0d6f9e888..f2c97deda 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")) + with open(dst, 'w') as f: + f.write( + """ + - key: key2 + ctx: [flowlist] + cmd: foo + - key: key2 + ctx: [flowview] + cmd: bar + """ + ) + kmc.load_path(km, dst) + assert(km.get("flowlist", "key2")) + assert(km.get("flowview", "key2")) + km.add("key123", "str", ["flowlist", "flowview"]) with open(dst, 'w') as f: f.write( @@ -127,10 +142,9 @@ def test_load_path(tmpdir): """ ) kmc.load_path(km, dst) - for b in km.bindings: - if b.key == "key123": - assert b.contexts == ["options"] - break + assert(km.get("flowlist", "key123")) + assert(km.get("flowview", "key123")) + assert(km.get("options", "key123")) def test_parse():