diff options
author | Maximilian Hils <git@maximilianhils.com> | 2016-03-18 19:03:56 +0100 |
---|---|---|
committer | Maximilian Hils <git@maximilianhils.com> | 2016-03-19 03:04:55 +0100 |
commit | 7e49b8c186c45bd2284f45fc181192aa0025be87 (patch) | |
tree | 4eb0fed1f984e48c0f9e4cc4017c2fefed6e2962 | |
parent | 898f5d10b999a14835286d2a22f2519815fc6d92 (diff) | |
download | mitmproxy-7e49b8c186c45bd2284f45fc181192aa0025be87.tar.gz mitmproxy-7e49b8c186c45bd2284f45fc181192aa0025be87.tar.bz2 mitmproxy-7e49b8c186c45bd2284f45fc181192aa0025be87.zip |
add tests for mitmproxy.script.reloader
-rw-r--r-- | mitmproxy/script/reloader.py | 6 | ||||
-rw-r--r-- | test/mitmproxy/script/test_reloader.py | 29 |
2 files changed, 32 insertions, 3 deletions
diff --git a/mitmproxy/script/reloader.py b/mitmproxy/script/reloader.py index b4acf51b..99ce7f60 100644 --- a/mitmproxy/script/reloader.py +++ b/mitmproxy/script/reloader.py @@ -1,7 +1,7 @@ import os import sys from watchdog.events import RegexMatchingEventHandler -if sys.platform == 'darwin': +if sys.platform == 'darwin': # pragma: no cover from watchdog.observers.polling import PollingObserver as Observer else: from watchdog.observers import Observer @@ -14,8 +14,8 @@ _observers = {} def watch(script, callback): if script in _observers: raise RuntimeError("Script already observed") - script_dir = os.path.dirname(os.path.abspath(script.args[0])) - script_name = os.path.basename(script.args[0]) + script_dir = os.path.dirname(os.path.abspath(script.filename)) + script_name = os.path.basename(script.filename) event_handler = _ScriptModificationHandler(callback, filename=script_name) observer = Observer() observer.schedule(event_handler, script_dir) diff --git a/test/mitmproxy/script/test_reloader.py b/test/mitmproxy/script/test_reloader.py new file mode 100644 index 00000000..af0ab88f --- /dev/null +++ b/test/mitmproxy/script/test_reloader.py @@ -0,0 +1,29 @@ +import mock +from mitmproxy.script.reloader import watch, unwatch +from test.mitmproxy import tutils +from threading import Event + + +def test_simple(): + with tutils.tmpdir(): + with open("foo.py", "wb"): + pass + + script = mock.Mock() + script.filename = "foo.py" + + e = Event() + + def _onchange(): + e.set() + + watch(script, _onchange) + with tutils.raises("already observed"): + watch(script, _onchange) + + with open("foo.py", "ab") as f: + f.write(".") + + assert e.wait(10) + + unwatch(script) |