Robert Brewer avatar Robert Brewer committed 8967137

New --server and --client=<host> switches to individual tests. This allows you to run a test across a network in order to capture TCP traffic, compare platforms, etc.

Comments (0)

Files changed (1)

cherrypy/test/helper.py

 
 def testmain(conf=None):
     """Run __main__ as a test module, with webtest debugging."""
-    if conf is None:
-        conf = {'server.socket_host': '127.0.0.1'}
-    setConfig(conf)
-    cherrypy.engine.start_with_callback(_test_main_thread)
-    cherrypy.engine.block()
+    if '--server' in sys.argv:
+        # Run the test module server-side only; wait for Ctrl-C to break.
+        if conf is None:
+            conf = {'server.socket_host': '0.0.0.0'}
+        setConfig(conf)
+        cherrypy.engine.start()
+        cherrypy.engine.block()
+    else:
+        for arg in sys.argv:
+            if arg.startswith('--client='):
+                # Run the test module client-side only.
+                sys.argv.remove(arg)
+                conf = conf or {}
+                conf['server.socket_host'] = host = arg.split('=', 1)[1].strip()
+                setConfig(conf)
+                webtest.WebCase.HOST = host
+                webtest.WebCase.PORT = cherrypy.server.socket_port
+                webtest.main()
+                break
+        else:
+            # Run normally (both server and client in same process).
+            if conf is None:
+                conf = {'server.socket_host': '127.0.0.1'}
+            setConfig(conf)
+            cherrypy.engine.start_with_callback(_test_main_thread)
+            cherrypy.engine.block()
 
 def _test_main_thread():
     try:
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.