diff --git a/IPython/html/tests/launchnotebook.py b/IPython/html/tests/launchnotebook.py
index 4a78242f7..d9ef86f4d 100644
--- a/IPython/html/tests/launchnotebook.py
+++ b/IPython/html/tests/launchnotebook.py
@@ -24,19 +24,24 @@ class NotebookTestBase(TestCase):
def wait_until_alive(cls):
"""Wait for the server to be alive"""
url = 'http://localhost:%i/api/notebooks' % cls.port
- while True:
+ for _ in range(300):
try:
requests.get(url)
except requests.exceptions.ConnectionError:
+ if cls.notebook.poll() is not None:
+ raise RuntimeError("The notebook server exited with status %s" \
+ % cls.notebook.poll())
time.sleep(.1)
else:
- break
+ return
+
+ raise TimeoutError("The notebook server didn't start up correctly.")
@classmethod
def wait_until_dead(cls):
"""Wait for the server to stop getting requests after shutdown"""
url = 'http://localhost:%i/api/notebooks' % cls.port
- while True:
+ for _ in range(300):
try:
requests.get(url)
except requests.exceptions.ConnectionError:
@@ -44,6 +49,8 @@ class NotebookTestBase(TestCase):
else:
time.sleep(.1)
+ raise TimeoutError("Undead notebook server")
+
@classmethod
def setup_class(cls):
cls.ipython_dir = TemporaryDirectory()
@@ -52,6 +59,7 @@ class NotebookTestBase(TestCase):
sys.executable, '-c',
'from IPython.html.notebookapp import launch_new_instance; launch_new_instance()',
'--port=%d' % cls.port,
+ '--port-retries=0',
'--no-browser',
'--ipython-dir=%s' % cls.ipython_dir.name,
'--notebook-dir=%s' % cls.notebook_dir.name,