Browse Source

Add possible overriding of builtin cli cmds

pull/2053/head
Michael Recachinas 8 years ago
parent
commit
49a298791f
  1. 6
      flask/cli.py
  2. 13
      tests/test_cli.py

6
flask/cli.py

@ -336,15 +336,15 @@ class FlaskGroup(AppGroup):
# #
# This also means that the script stays functional in case the # This also means that the script stays functional in case the
# application completely fails. # application completely fails.
rv = AppGroup.get_command(self, ctx, name) builtin_rv = AppGroup.get_command(self, ctx, name)
if rv is not None:
return rv
info = ctx.ensure_object(ScriptInfo) info = ctx.ensure_object(ScriptInfo)
try: try:
rv = info.load_app().cli.get_command(ctx, name) rv = info.load_app().cli.get_command(ctx, name)
if rv is not None: if rv is not None:
return rv return rv
elif builtin_rv is not None:
return builtin_rv
except NoAppException: except NoAppException:
pass pass

13
tests/test_cli.py

@ -190,3 +190,16 @@ def test_flaskgroup():
result = runner.invoke(cli, ['test']) result = runner.invoke(cli, ['test'])
assert result.exit_code == 0 assert result.exit_code == 0
assert result.output == 'flaskgroup\n' assert result.output == 'flaskgroup\n'
def test_override_builtin_cli():
cli = FlaskGroup(create_app=lambda info: Flask('override_builtin'))
@cli.command('run', help="foo")
def run():
click.echo(current_app.name)
runner = CliRunner()
result = runner.invoke(cli, ['run'])
assert result.exit_code == 0
assert result.output == 'override_builtin\n'

Loading…
Cancel
Save