Browse Source

Do not break extension tests if tested with installed extensions.

pull/327/head
Armin Ronacher 13 years ago
parent
commit
56afafae67
  1. 14
      flask/testsuite/__init__.py
  2. 7
      flask/testsuite/ext.py
  3. 2
      run-tests.py

14
flask/testsuite/__init__.py

@ -24,7 +24,10 @@ from werkzeug.utils import import_string, find_modules
def add_to_path(path): def add_to_path(path):
"""Adds an entry to sys.path_info if it's not already there.""" """Adds an entry to sys.path_info if it's not already there. This does
not append it but moves it to the front so that we can be sure it
is loaded.
"""
if not os.path.isdir(path): if not os.path.isdir(path):
raise RuntimeError('Tried to add nonexisting path') raise RuntimeError('Tried to add nonexisting path')
@ -33,13 +36,8 @@ def add_to_path(path):
return os.path.samefile(x, y) return os.path.samefile(x, y)
except (IOError, OSError): except (IOError, OSError):
return False return False
for entry in sys.path: sys.path[:] = [x for x in sys.path if not _samefile(path, x)]
try: sys.path.insert(0, path)
if os.path.samefile(path, entry):
return
except (OSError, IOError):
pass
sys.path.append(path)
def iter_suites(): def iter_suites():

7
flask/testsuite/ext.py

@ -18,10 +18,15 @@ from flask.testsuite import FlaskTestCase
class ExtImportHookTestCase(FlaskTestCase): class ExtImportHookTestCase(FlaskTestCase):
def setup(self): def setup(self):
# we clear this out for various reasons. The most important one is
# that a real flaskext could be in there which would disable our
# fake package. Secondly we want to make sure that the flaskext
# import hook does not break on reloading.
for entry, value in sys.modules.items(): for entry, value in sys.modules.items():
if (entry.startswith('flask.ext.') or if (entry.startswith('flask.ext.') or
entry.startswith('flask_') or entry.startswith('flask_') or
entry.startswith('flaskext.')) and value is not None: entry.startswith('flaskext.') or
entry == 'flaskext') and value is not None:
sys.modules.pop(entry, None) sys.modules.pop(entry, None)
from flask import ext from flask import ext
reload(ext) reload(ext)

2
run-tests.py

@ -1,3 +1,5 @@
#!/usr/bin/env python #!/usr/bin/env python
import sys, os
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
from flask.testsuite import main from flask.testsuite import main
main() main()

Loading…
Cancel
Save