forked from orbit-oss/flask
prevent NoAppException when ImportError occurs within imported module
This commit is contained in:
parent
789715adb9
commit
0832e77b14
3 changed files with 18 additions and 4 deletions
14
flask/cli.py
14
flask/cli.py
|
|
@ -89,10 +89,16 @@ def locate_app(app_id):
|
|||
try:
|
||||
__import__(module)
|
||||
except ImportError:
|
||||
raise NoAppException('The file/path provided (%s) does not appear to '
|
||||
'exist. Please verify the path is correct. If '
|
||||
'app is not on PYTHONPATH, ensure the extension '
|
||||
'is .py' % module)
|
||||
# Reraise the ImportError if it occurred within the imported module.
|
||||
# Determine this by checking whether the trace has a depth > 1.
|
||||
if sys.exc_info()[-1].tb_next:
|
||||
raise
|
||||
else:
|
||||
raise NoAppException('The file/path provided (%s) does not appear'
|
||||
' to exist. Please verify the path is '
|
||||
'correct. If app is not on PYTHONPATH, '
|
||||
'ensure the extension is .py' % module)
|
||||
|
||||
mod = sys.modules[module]
|
||||
if app_obj is None:
|
||||
app = find_best_app(mod)
|
||||
|
|
|
|||
7
tests/test_apps/cliapp/importerrorapp.py
Normal file
7
tests/test_apps/cliapp/importerrorapp.py
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
from __future__ import absolute_import, print_function
|
||||
|
||||
from flask import Flask
|
||||
|
||||
raise ImportError()
|
||||
|
||||
testapp = Flask('testapp')
|
||||
|
|
@ -83,6 +83,7 @@ def test_locate_app(test_apps):
|
|||
pytest.raises(NoAppException, locate_app, "notanpp.py")
|
||||
pytest.raises(NoAppException, locate_app, "cliapp/app")
|
||||
pytest.raises(RuntimeError, locate_app, "cliapp.app:notanapp")
|
||||
pytest.raises(ImportError, locate_app, "cliapp.importerrorapp")
|
||||
|
||||
|
||||
def test_find_default_import_path(test_apps, monkeypatch, tmpdir):
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue