diff --git a/elsa/_cli.py b/elsa/_cli.py index b668898..6ac08cd 100644 --- a/elsa/_cli.py +++ b/elsa/_cli.py @@ -1,4 +1,5 @@ import os +import sys import urllib.parse import warnings @@ -39,7 +40,11 @@ def freeze_app(app, freezer, path, base_url): # make sure Frozen Flask warnings are treated as errors warnings.filterwarnings('error', category=flask_frozen.FrozenFlaskWarning) - freezer.freeze() + try: + freezer.freeze() + except flask_frozen.FrozenFlaskWarning as w: + print('Error:', w, file=sys.stderr) + sys.exit(1) def inject_cname(app): diff --git a/tests/test_commands.py b/tests/test_commands.py index 73180ee..59e3f07 100644 --- a/tests/test_commands.py +++ b/tests/test_commands.py @@ -291,6 +291,15 @@ def test_freeze_different_warning_is_fine(elsa): # tests just success of the command +def test_freeze_mishmash_decent_error_msg(elsa, capsys): + elsa.run('freeze', script='mishmash.py', should_fail=True) + out, err = capsys.readouterr() + print('OUT', out) + print('ERR', err) + assert 'Traceback' not in err + assert 'does not match' in err + + def test_freeze_cname(elsa): elsa.run('freeze') with open(CNAME_FIXTURES) as f: