zulip/zephyr/tests/frontend/run

51 lines
1.4 KiB
Python
Executable File

#!/usr/bin/env python
import subprocess
import requests
import time
import sys
import os
from os import path
os.chdir(path.join(path.dirname(__file__), '../../..'))
subprocess.check_call('zephyr/tests/generate-fixtures')
log = open('zephyr/tests/frontend/server.log', 'w')
# Run this not through the shell, so that we have the actual PID.
server = subprocess.Popen(('tools/run-dev.py', '--test'),
stdout=log, stderr=log)
def assert_server_running():
# Get the exit code of the server, or None if it is still running.
if server.poll() is not None:
raise RuntimeError, 'Server died unexpectedly! Check zephyr/tests/frontend/server.log'
def server_is_up():
assert_server_running()
try:
# We could get a 501 error if the reverse proxy is up but the Django app isn't.
return requests.get('http://localhost:9981/accounts/home').status_code == 200
except:
return False
ret = 1
try:
# Wait for the server to start up.
sys.stdout.write('Waiting for test server')
while not server_is_up():
sys.stdout.write('.')
sys.stdout.flush()
time.sleep(0.1)
sys.stdout.write('\n')
ret = subprocess.call(
'zephyr/tests/frontend/casperjs/bin/casperjs zephyr/tests/frontend/tests.js',
shell=True)
finally:
assert_server_running()
server.terminate()
sys.exit(ret)