Former-commit-id:9f19e3f712
[formerly 64fa9254b946eae7e61bbc3f513b7c3696c4f54f] Former-commit-id:06a8b51d6d
56 lines
1.5 KiB
Python
Executable file
56 lines
1.5 KiB
Python
Executable file
# -*- coding: utf-8 -*-
|
|
"""
|
|
werkzeug.serving test
|
|
~~~~~~~~~~~~~~~~~~~~
|
|
|
|
:copyright: (c) 2010 by the Werkzeug Team, see AUTHORS for more details.
|
|
:license: BSD, see LICENSE for more details.
|
|
"""
|
|
import time
|
|
import urllib
|
|
from werkzeug import serving, test_app, __version__ as version
|
|
from threading import Thread
|
|
|
|
|
|
real_make_server = serving.make_server
|
|
|
|
|
|
def run_dev_server(application):
|
|
servers = []
|
|
def tracking_make_server(*args, **kwargs):
|
|
srv = real_make_server(*args, **kwargs)
|
|
servers.append(srv)
|
|
return srv
|
|
serving.make_server = tracking_make_server
|
|
try:
|
|
t = Thread(target=serving.run_simple, args=('localhost', 0, application))
|
|
t.setDaemon(True)
|
|
t.start()
|
|
time.sleep(0.25)
|
|
finally:
|
|
serving.make_server = real_make_server
|
|
if not servers:
|
|
return None, None
|
|
server ,= servers
|
|
ip, port = server.socket.getsockname()[:2]
|
|
if ':' in ip:
|
|
ip = '[%s]' % ip
|
|
return server, '%s:%d' % (ip, port)
|
|
|
|
|
|
def test_serving():
|
|
"""Test server"""
|
|
server, addr = run_dev_server(test_app)
|
|
rv = urllib.urlopen('http://%s/?foo=bar&baz=blah' % addr).read()
|
|
assert 'WSGI Information' in rv
|
|
assert 'foo=bar&baz=blah' in rv
|
|
assert ('Werkzeug/%s' % version) in rv
|
|
|
|
|
|
def test_broken_app():
|
|
"""Broken apps in server"""
|
|
def broken_app(environ, start_response):
|
|
1/0
|
|
server, addr = run_dev_server(broken_app)
|
|
rv = urllib.urlopen('http://%s/?foo=bar&baz=blah' % addr).read()
|
|
assert 'Internal Server Error' in rv
|