aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaximilian Hils <git@maximilianhils.com>2016-03-18 19:03:56 +0100
committerMaximilian Hils <git@maximilianhils.com>2016-03-19 03:04:55 +0100
commit7e49b8c186c45bd2284f45fc181192aa0025be87 (patch)
tree4eb0fed1f984e48c0f9e4cc4017c2fefed6e2962
parent898f5d10b999a14835286d2a22f2519815fc6d92 (diff)
downloadmitmproxy-7e49b8c186c45bd2284f45fc181192aa0025be87.tar.gz
mitmproxy-7e49b8c186c45bd2284f45fc181192aa0025be87.tar.bz2
mitmproxy-7e49b8c186c45bd2284f45fc181192aa0025be87.zip
add tests for mitmproxy.script.reloader
-rw-r--r--mitmproxy/script/reloader.py6
-rw-r--r--test/mitmproxy/script/test_reloader.py29
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)