Merge pull request #1342 from hramezani/load_config_file_syntax_error
Handle syntax error in load config file.
This commit is contained in:
commit
6778f4d9e0
|
@ -1,6 +1,8 @@
|
||||||
import os
|
import os
|
||||||
import types
|
import types
|
||||||
|
|
||||||
|
from sanic.exceptions import PyFileError
|
||||||
|
|
||||||
|
|
||||||
SANIC_PREFIX = 'SANIC_'
|
SANIC_PREFIX = 'SANIC_'
|
||||||
|
|
||||||
|
@ -83,6 +85,9 @@ class Config(dict):
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
e.strerror = 'Unable to load configuration file (%s)' % e.strerror
|
e.strerror = 'Unable to load configuration file (%s)' % e.strerror
|
||||||
raise
|
raise
|
||||||
|
except Exception as e:
|
||||||
|
raise PyFileError(filename) from e
|
||||||
|
|
||||||
self.from_object(module)
|
self.from_object(module)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
|
@ -223,6 +223,11 @@ class InvalidRangeType(ContentRangeError):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class PyFileError(Exception):
|
||||||
|
def __init__(self, file):
|
||||||
|
super().__init__('could not execute config file %s', file)
|
||||||
|
|
||||||
|
|
||||||
@add_status_code(401)
|
@add_status_code(401)
|
||||||
class Unauthorized(SanicException):
|
class Unauthorized(SanicException):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -6,6 +6,7 @@ from textwrap import dedent
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from sanic import Sanic
|
from sanic import Sanic
|
||||||
|
from sanic.exceptions import PyFileError
|
||||||
|
|
||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
|
@ -87,6 +88,16 @@ def test_load_from_missing_envvar(app):
|
||||||
"could not be loaded.")
|
"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):
|
def test_overwrite_exisiting_config(app):
|
||||||
app.config.DEFAULT = 1
|
app.config.DEFAULT = 1
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user