diff options
author | Aldo Cortesi <aldo@nullcube.com> | 2016-12-05 07:18:53 +1300 |
---|---|---|
committer | Aldo Cortesi <aldo@nullcube.com> | 2016-12-08 10:21:06 +1300 |
commit | d74cac265a9d1d8ce176a7ef96be2d91c4f40819 (patch) | |
tree | 47187e9cb00b4eea5060006ce0c7382fc41ac2d0 /test | |
parent | c94cd512d108fd9a12c87015791ce977b895fa2d (diff) | |
download | mitmproxy-d74cac265a9d1d8ce176a7ef96be2d91c4f40819.tar.gz mitmproxy-d74cac265a9d1d8ce176a7ef96be2d91c4f40819.tar.bz2 mitmproxy-d74cac265a9d1d8ce176a7ef96be2d91c4f40819.zip |
Add YAML serialization of options
This uses ruamel.yaml. The library seems well-supported, and can do in-place
modification of config files that retains user comments and file structure.
Diffstat (limited to 'test')
-rw-r--r-- | test/mitmproxy/test_optmanager.py | 55 |
1 files changed, 54 insertions, 1 deletions
diff --git a/test/mitmproxy/test_optmanager.py b/test/mitmproxy/test_optmanager.py index 385cf621..0c98daea 100644 --- a/test/mitmproxy/test_optmanager.py +++ b/test/mitmproxy/test_optmanager.py @@ -1,5 +1,7 @@ import copy +import os +from mitmproxy import options from mitmproxy import optmanager from mitmproxy import exceptions from mitmproxy.test import tutils @@ -24,7 +26,7 @@ class TD2(TD): def __init__(self, *, three="dthree", four="dfour", **kwargs): self.three = three self.four = four - super().__init__(**kwargs) + super().__init__(three=three, **kwargs) def test_defaults(): @@ -167,3 +169,54 @@ def test_repr(): 'one': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', 'two': None })""" + + +def test_serialize(): + o = TD2() + o.three = "set" + assert "dfour" in o.serialize(None, defaults=True) + + data = o.serialize(None) + assert "dfour" not in data + + o2 = TD2() + o2.load(data) + assert o2 == o + + t = """ + unknown: foo + """ + data = o.serialize(t) + o2 = TD2() + o2.load(data) + assert o2 == o + + t = "invalid: foo\ninvalid" + tutils.raises("config error", o2.load, t) + + t = "invalid" + tutils.raises("config error", o2.load, t) + + t = "" + o2.load(t) + + +def test_serialize_defaults(): + o = options.Options() + assert o.serialize(None, defaults=True) + + +def test_saving(): + o = TD2() + o.three = "set" + with tutils.tmpdir() as tdir: + dst = os.path.join(tdir, "conf") + o.save(dst, defaults=True) + + o2 = TD2() + o2.load_paths(dst) + o2.three = "foo" + o2.save(dst, defaults=True) + + o.load_paths(dst) + assert o.three == "foo" |