Handle config error in load config file.
This commit is contained in:
parent
5cc12fd945
commit
f4c55bbc07
|
@ -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
|
||||
|
||||
|
|
|
@ -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):
|
||||
"""
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user