Handle config error in load config file.

This commit is contained in:
Hasan Ramezani 2018-10-03 14:27:59 +02:00
parent 5cc12fd945
commit f4c55bbc07
3 changed files with 21 additions and 0 deletions

View File

@ -1,6 +1,8 @@
import os
import types
from sanic.exceptions import PyFileError
SANIC_PREFIX = 'SANIC_'
@ -83,6 +85,9 @@ class Config(dict):
except IOError as e:
e.strerror = 'Unable to load configuration file (%s)' % e.strerror
raise
except Exception as e:
raise PyFileError(filename) from e
self.from_object(module)
return True

View File

@ -223,6 +223,11 @@ class InvalidRangeType(ContentRangeError):
pass
class PyFileError(Exception):
def __init__(self, file):
super().__init__('could not execute config file %s', file)
@add_status_code(401)
class Unauthorized(SanicException):
"""

View File

@ -3,6 +3,7 @@ import pytest
from tempfile import NamedTemporaryFile
from sanic import Sanic
from sanic.exceptions import PyFileError
def test_load_from_object(app):
@ -79,6 +80,16 @@ def test_load_from_missing_envvar(app):
"could not be loaded.")
def test_load_config_from_file_invalid_syntax(app):
config = b"VALUE = some value"
with NamedTemporaryFile() as config_file:
config_file.write(config)
config_file.seek(0)
with pytest.raises(PyFileError):
app.config.from_pyfile(config_file.name)
def test_overwrite_exisiting_config(app):
app.config.DEFAULT = 1