from flask.testing import FlaskCliRunner


class TealCliRunner(FlaskCliRunner):
    """The same as FlaskCliRunner but with invoke's
    'catch_exceptions' as False.
    """

    def invoke(self, *args, cli=None, **kwargs):
        kwargs.setdefault('catch_exceptions', False)
        r = super().invoke(cli, args, **kwargs)
        assert r.exit_code == 0, 'CLI code {}: {}'.format(r.exit_code, r.output)
        return r