diff --git a/flask/cli.py b/flask/cli.py index 90eb0353..9dfd339f 100644 --- a/flask/cli.py +++ b/flask/cli.py @@ -55,10 +55,10 @@ def prepare_exec_for_file(filename): module = [] # Chop off file extensions or package markers - if filename.endswith('.py'): - filename = filename[:-3] - elif os.path.split(filename)[1] == '__init__.py': + if os.path.split(filename)[1] == '__init__.py': filename = os.path.dirname(filename) + elif filename.endswith('.py'): + filename = filename[:-3] else: raise NoAppException('The file provided (%s) does exist but is not a ' 'valid Python file. This means that it cannot ' diff --git a/tests/test_cli.py b/tests/test_cli.py index 0a479857..1e8feb02 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -19,7 +19,7 @@ from click.testing import CliRunner from flask import Flask, current_app from flask.cli import AppGroup, FlaskGroup, NoAppException, ScriptInfo, \ - find_best_app, locate_app, with_appcontext + find_best_app, locate_app, with_appcontext, prepare_exec_for_file def test_cli_name(test_apps): @@ -49,6 +49,13 @@ def test_find_best_app(test_apps): pytest.raises(NoAppException, find_best_app, mod) +def test_prepare_exec_for_file(test_apps): + assert prepare_exec_for_file('test.py') == 'test' + assert prepare_exec_for_file('/usr/share/__init__.py') == 'share' + with pytest.raises(NoAppException): + prepare_exec_for_file('test.txt') + + def test_locate_app(test_apps): """Test of locate_app.""" assert locate_app("cliapp.app").name == "testapp"