mirror of https://github.com/zulip/zulip.git
63 lines
1.7 KiB
Python
Executable File
63 lines
1.7 KiB
Python
Executable File
#!/usr/bin/env python
|
|
import subprocess
|
|
import requests
|
|
import time
|
|
import sys
|
|
import os
|
|
from os import path
|
|
|
|
os.environ["TORNADO_SERVER"] = "http://localhost:9983"
|
|
|
|
test_files = []
|
|
for file in sys.argv[1:]:
|
|
if not os.path.exists(file):
|
|
file = path.join(path.dirname(__file__), 'tests', file)
|
|
test_files.append(path.abspath(file))
|
|
|
|
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')
|
|
|
|
cmd = 'zephyr/tests/frontend/casperjs/bin/casperjs test '
|
|
if test_files:
|
|
cmd += ' '.join(test_files)
|
|
else:
|
|
cmd += 'zephyr/tests/frontend/tests'
|
|
print "Running %s" % (cmd,)
|
|
ret = subprocess.call(cmd, shell=True)
|
|
finally:
|
|
assert_server_running()
|
|
server.terminate()
|
|
|
|
sys.exit(ret)
|