Former-commit-id:06a8b51d6d
[formerly 64fa9254b946eae7e61bbc3f513b7c3696c4f54f] Former-commit-id:9f19e3f712
78 lines
2.5 KiB
Python
Executable file
78 lines
2.5 KiB
Python
Executable file
# -*- coding: utf-8 -*-
|
|
|
|
import sys
|
|
import warnings
|
|
from subprocess import Popen, PIPE
|
|
from werkzeug.test import create_environ
|
|
|
|
|
|
import_code = '''\
|
|
import sys
|
|
sys.path.insert(0, '..')
|
|
import werkzeug.%s
|
|
print ':'.join([k[9:] for k, v in sys.modules.iteritems()
|
|
if v is not None and k.startswith('werkzeug.')])
|
|
'''
|
|
|
|
|
|
def perform_import(module, allowed):
|
|
client = Popen([sys.executable, '-c', import_code % module],
|
|
stdout=PIPE)
|
|
imported = set(client.communicate()[0].strip().split(':'))
|
|
rv = imported - allowed - set([module])
|
|
print 'leftovers from %r import: %s' % (module, rv)
|
|
return rv
|
|
|
|
|
|
def test_old_imports():
|
|
"""Make sure everything imports from old places"""
|
|
from werkzeug.utils import Headers, MultiDict, CombinedMultiDict, \
|
|
Headers, EnvironHeaders
|
|
from werkzeug.http import Accept, MIMEAccept, CharsetAccept, \
|
|
LanguageAccept, ETags, HeaderSet, WWWAuthenticate, \
|
|
Authorization
|
|
|
|
|
|
def test_exposed_werkzeug_mod():
|
|
"""Make sure all things are importable."""
|
|
import werkzeug
|
|
for key in werkzeug.__all__:
|
|
getattr(werkzeug, key)
|
|
|
|
|
|
def test_demand_import():
|
|
"""Make sure that we're not importing too much."""
|
|
allowed_imports = set(['_internal', 'utils', 'http', 'exceptions',
|
|
'datastructures'])
|
|
|
|
assert perform_import('http', allowed_imports) == set()
|
|
assert perform_import('utils', allowed_imports) == set()
|
|
|
|
allowed_imports.update(('urls', 'formparser', 'wsgi'))
|
|
assert perform_import('wrappers', allowed_imports) == set()
|
|
|
|
allowed_imports.add('wrappers')
|
|
assert perform_import('useragents', allowed_imports) == set()
|
|
assert perform_import('test', allowed_imports) == set()
|
|
assert perform_import('serving', allowed_imports) == set()
|
|
|
|
|
|
def test_fix_headers_in_response():
|
|
"""Make sure fix_headers still works for backwards compatibility"""
|
|
# ignore some warnings werkzeug emits for backwards compat
|
|
for msg in ['called into deprecated fix_headers',
|
|
'fix_headers changed behavior']:
|
|
warnings.filterwarnings('ignore', message=msg,
|
|
category=DeprecationWarning)
|
|
|
|
from werkzeug import Response
|
|
class MyResponse(Response):
|
|
def fix_headers(self, environ):
|
|
Response.fix_headers(self, environ)
|
|
self.headers['x-foo'] = "meh"
|
|
myresp = MyResponse('Foo')
|
|
resp = Response.from_app(myresp, create_environ(method='GET'))
|
|
assert resp.headers['x-foo'] == 'meh'
|
|
assert resp.data == 'Foo'
|
|
|
|
warnings.resetwarnings()
|