mirror of
https://github.com/zulip/zulip.git
synced 2025-11-10 08:56:10 +00:00
The test-all script now calls the symlink, and the run script has been cleaned up to be symlink friendly. (imported from commit 8abb5c1e5744416e94ff843e50c53e0d0f7e1316)
89 lines
2.5 KiB
Python
Executable File
89 lines
2.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
import subprocess
|
|
import requests
|
|
import optparse
|
|
import time
|
|
import sys
|
|
import os
|
|
from os import path
|
|
import glob
|
|
|
|
#
|
|
# In order to use remote casperjs debugging, pass the --remote-debug flag
|
|
# This will start a remote debugging session listening on port 7777
|
|
#
|
|
# See https://wiki.zulip.net/wiki/Testing_the_app for more information
|
|
# on how to use remote debugging
|
|
#
|
|
|
|
os.environ["TORNADO_SERVER"] = "http://localhost:9983"
|
|
|
|
parser = optparse.OptionParser(r"""
|
|
|
|
%prog --remote-debug file1 file2 file3""")
|
|
|
|
parser.add_option('--remote-debug',
|
|
help='Whether or not to enable remote debugging on port 7777',
|
|
action="store_true",
|
|
default=False)
|
|
(options, args) = parser.parse_args()
|
|
|
|
test_files = []
|
|
for file in args:
|
|
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(path.realpath(__file__)), '../../..'))
|
|
|
|
subprocess.check_call('tools/generate-fixtures')
|
|
|
|
subprocess.check_call(['rm', '-f'] + glob.glob('/tmp/casper-failure*.png'))
|
|
|
|
log = open('zerver/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 zerver/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')
|
|
|
|
remote_debug = ""
|
|
if options.remote_debug:
|
|
remote_debug = "--remote-debugger-port=7777 --remote-debugger-autorun=yes"
|
|
cmd = "zerver/tests/frontend/casperjs/bin/casperjs %s test " % (remote_debug,)
|
|
|
|
if test_files:
|
|
cmd += ' '.join(test_files)
|
|
else:
|
|
cmd += 'zerver/tests/frontend/tests'
|
|
print "Running %s" % (cmd,)
|
|
ret = subprocess.call(cmd, shell=True)
|
|
finally:
|
|
assert_server_running()
|
|
server.terminate()
|
|
|
|
sys.exit(ret)
|