aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorAldo Cortesi <aldo@corte.si>2018-05-08 10:56:00 +1200
committerAldo Cortesi <aldo@corte.si>2018-05-08 10:56:00 +1200
commitf7d7e31f06dadcf0f7801ab1db055f8609c88a71 (patch)
tree56aa748d814c00a594c8c46338d6e4abb1c9f629 /test
parent7ec9c5524f64bbceaf52b58696c8c9342a4887dd (diff)
downloadmitmproxy-f7d7e31f06dadcf0f7801ab1db055f8609c88a71.tar.gz
mitmproxy-f7d7e31f06dadcf0f7801ab1db055f8609c88a71.tar.bz2
mitmproxy-f7d7e31f06dadcf0f7801ab1db055f8609c88a71.zip
options: add the concept of deferred settings
We've had a perpetual sequencing problem with addon startup. Users need to be able to specify options to addons on the command-line, before addons are actually loaded. This is only exacerbated with the new async core, where load order can't be relied on. This patch introduces deferred options. Options passed with "--set" on the command line are deferred if they are unknown, and are automatically applied by the addon manager once matching addons are registered and their options are defined.
Diffstat (limited to 'test')
-rw-r--r--test/mitmproxy/test_optmanager.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/test/mitmproxy/test_optmanager.py b/test/mitmproxy/test_optmanager.py
index 1c49c0b8..77bcc007 100644
--- a/test/mitmproxy/test_optmanager.py
+++ b/test/mitmproxy/test_optmanager.py
@@ -426,4 +426,13 @@ def test_set():
assert opts.seqstr == []
with pytest.raises(exceptions.OptionsError):
- opts.set("nonexistent=wobble")
+ opts.set("deferred=wobble")
+
+ opts.set("deferred=wobble", defer=True)
+ assert "deferred" in opts._deferred
+ opts.process_deferred()
+ assert "deferred" in opts._deferred
+ opts.add_option("deferred", str, "default", "help")
+ opts.process_deferred()
+ assert "deferred" not in opts._deferred
+ assert opts.deferred == "wobble"