mirror of https://github.com/zulip/zulip.git
51 lines
1.4 KiB
Python
Executable File
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)
|