summaryrefslogtreecommitdiff
path: root/src/server-tests/test_util__pydev.py
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2015-03-30 21:24:44 +0300
committerLV-426 <lv-426@taproot.org.il>2015-04-01 22:25:55 +0300
commit6428b2da00c0c3e7165a2997178be689409a886f (patch)
treebb49105a1f59509b9ed38c2a5242881ee5a4594c /src/server-tests/test_util__pydev.py
parent2badf757282eed92a8e1ebcebd9434d3726c1c06 (diff)
test_util__pydev.py: @debug__pydev_pd_arg main function decorator
Diffstat (limited to 'src/server-tests/test_util__pydev.py')
-rw-r--r--src/server-tests/test_util__pydev.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/server-tests/test_util__pydev.py b/src/server-tests/test_util__pydev.py
new file mode 100644
index 00000000..87e9f7b4
--- /dev/null
+++ b/src/server-tests/test_util__pydev.py
@@ -0,0 +1,36 @@
+"""
+PYDev test utilities
+"""
+import sys
+import logging
+
+log = logging.getLogger('rhizi')
+
+def py_dev():
+ try: # enable pydev remote debugging
+ import pydevd
+ pydevd.settrace(trace_only_current_thread=False)
+ except ImportError as e:
+ pass
+
+
+def debug__pydev_pd_arg(f_main):
+ """
+ PyDev Eclipse remote debug decorator:
+ - follow PyDev's remote debugging instructions: http://pydev.org/manual_adv_remote_debugger.html
+ - decorate main test function with @debug__pydev_pd_arg
+ - pass the -pd command line argument
+ """
+
+ def main_decorated(*args, **kwargs):
+ if len(sys.argv) > 1 and sys.argv[1] == '-pd':
+ try: # enable pydev remote debugging
+ import pydevd
+ pydevd.settrace(trace_only_current_thread=False)
+ except ImportError as e:
+ log.exception('failed to import pydevd')
+
+ sys.argv.pop() # hide extra arg from main()
+ f_main(*args, **kwargs)
+
+ return main_decorated