##// END OF EJS Templates
start and use notebook server for js test suite
Paul Ivanov -
Show More
@@ -4,7 +4,7 b''
4
4
5 // Get the URL of a notebook server on which to run tests.
5 // Get the URL of a notebook server on which to run tests.
6 casper.getNotebookServer = function () {
6 casper.getNotebookServer = function () {
7 return 'http://127.0.0.1:8888';
7 return 'http://127.0.0.1:' + casper.cli.get("port");
8 };
8 };
9
9
10 // Create and open a new notebook.
10 // Create and open a new notebook.
@@ -20,6 +20,7 b' from __future__ import print_function'
20
20
21 import argparse
21 import argparse
22 import multiprocessing.pool
22 import multiprocessing.pool
23 from multiprocessing import Process, Queue
23 import os
24 import os
24 import shutil
25 import shutil
25 import signal
26 import signal
@@ -164,13 +165,40 b' class JSController(TestController):'
164 """Create new test runner."""
165 """Create new test runner."""
165 TestController.__init__(self)
166 TestController.__init__(self)
166 self.section = section
167 self.section = section
167
168
169 # start the ipython notebook, so we get the port number
170 self._init_server()
171
168 import IPython.html.tests as t
172 import IPython.html.tests as t
169 test_dir = os.path.join(os.path.dirname(t.__file__), 'casperjs')
173 test_dir = os.path.join(os.path.dirname(t.__file__), 'casperjs')
170 includes = '--includes=' + os.path.join(test_dir,'util.js')
174 includes = '--includes=' + os.path.join(test_dir,'util.js')
171 test_cases = os.path.join(test_dir, 'test_cases')
175 test_cases = os.path.join(test_dir, 'test_cases')
172 self.cmd = ['casperjs', 'test', includes, test_cases]
176 port = '--port=' + str(self.server_port)
177 self.cmd = ['casperjs', 'test', port, includes, test_cases]
178
173
179
180 def _init_server(self):
181 "Start the notebook server in a separate process"
182 self.queue = q = Queue()
183 self.server = server = Process(target=run_webapp, args=(q,))
184 server.start()
185 self.server_port = q.get()
186
187 def cleanup(self):
188 self.server.terminate()
189 TestController.cleanup(self)
190
191
192 def run_webapp(q):
193 """start the IPython Notebook, and pass port back to the queue"""
194 import IPython.html.notebookapp as nbapp
195 # get rid of command line flags used to launch the testing framework
196 sys.argv = [sys.executable]
197 server = nbapp.NotebookApp()
198 server.initialize()
199 # communicate the port number to the parent process
200 q.put(server.port)
201 server.start()
174
202
175 def prepare_controllers(options):
203 def prepare_controllers(options):
176 """Returns two lists of TestController instances, those to run, and those
204 """Returns two lists of TestController instances, those to run, and those
General Comments 0
You need to be logged in to leave comments. Login now