Fix type hinting for load_env (#2107)
* Deprecate `load_env` in favor of `env_prefix` `load_env` both enabled/disabled environment variable parsing, while also letting the user modify the env prefix. Deprecate the ability to disable environment parsing, and add a new config variable to track the user's desired prefix for environment-based configuration. Resolves: #2102 * Add a few common .gitignore patterns
This commit is contained in:
committed by
GitHub
parent
30479765cb
commit
e21521f45c
@@ -59,14 +59,14 @@ def test_load_from_object_string_exception(app):
|
||||
app.config.load("test_config.Config.test")
|
||||
|
||||
|
||||
def test_auto_load_env():
|
||||
def test_auto_env_prefix():
|
||||
environ["SANIC_TEST_ANSWER"] = "42"
|
||||
app = Sanic(name=__name__)
|
||||
assert app.config.TEST_ANSWER == 42
|
||||
del environ["SANIC_TEST_ANSWER"]
|
||||
|
||||
|
||||
def test_auto_load_bool_env():
|
||||
def test_auto_bool_env_prefix():
|
||||
environ["SANIC_TEST_ANSWER"] = "True"
|
||||
app = Sanic(name=__name__)
|
||||
assert app.config.TEST_ANSWER is True
|
||||
@@ -80,6 +80,12 @@ def test_dont_load_env():
|
||||
del environ["SANIC_TEST_ANSWER"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize('load_env', [None, False, "", "MYAPP_"])
|
||||
def test_load_env_deprecation(load_env):
|
||||
with pytest.warns(DeprecationWarning, match=r"21\.12"):
|
||||
_ = Sanic(name=__name__, load_env=load_env)
|
||||
|
||||
|
||||
def test_load_env_prefix():
|
||||
environ["MYAPP_TEST_ANSWER"] = "42"
|
||||
app = Sanic(name=__name__, load_env="MYAPP_")
|
||||
@@ -87,6 +93,14 @@ def test_load_env_prefix():
|
||||
del environ["MYAPP_TEST_ANSWER"]
|
||||
|
||||
|
||||
@pytest.mark.parametrize('env_prefix', [None, ""])
|
||||
def test_empty_load_env_prefix(env_prefix):
|
||||
environ["SANIC_TEST_ANSWER"] = "42"
|
||||
app = Sanic(name=__name__, env_prefix=env_prefix)
|
||||
assert getattr(app.config, "TEST_ANSWER", None) is None
|
||||
del environ["SANIC_TEST_ANSWER"]
|
||||
|
||||
|
||||
def test_load_env_prefix_float_values():
|
||||
environ["MYAPP_TEST_ROI"] = "2.3"
|
||||
app = Sanic(name=__name__, load_env="MYAPP_")
|
||||
@@ -101,6 +115,27 @@ def test_load_env_prefix_string_value():
|
||||
del environ["MYAPP_TEST_TOKEN"]
|
||||
|
||||
|
||||
def test_env_prefix():
|
||||
environ["MYAPP_TEST_ANSWER"] = "42"
|
||||
app = Sanic(name=__name__, env_prefix="MYAPP_")
|
||||
assert app.config.TEST_ANSWER == 42
|
||||
del environ["MYAPP_TEST_ANSWER"]
|
||||
|
||||
|
||||
def test_env_prefix_float_values():
|
||||
environ["MYAPP_TEST_ROI"] = "2.3"
|
||||
app = Sanic(name=__name__, env_prefix="MYAPP_")
|
||||
assert app.config.TEST_ROI == 2.3
|
||||
del environ["MYAPP_TEST_ROI"]
|
||||
|
||||
|
||||
def test_env_prefix_string_value():
|
||||
environ["MYAPP_TEST_TOKEN"] = "somerandomtesttoken"
|
||||
app = Sanic(name=__name__, env_prefix="MYAPP_")
|
||||
assert app.config.TEST_TOKEN == "somerandomtesttoken"
|
||||
del environ["MYAPP_TEST_TOKEN"]
|
||||
|
||||
|
||||
def test_load_from_file(app):
|
||||
config = dedent(
|
||||
"""
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import asyncio
|
||||
import platform
|
||||
|
||||
from asyncio import sleep as aio_sleep
|
||||
from json import JSONDecodeError
|
||||
@@ -6,7 +7,6 @@ from os import environ
|
||||
|
||||
import httpcore
|
||||
import httpx
|
||||
import platform
|
||||
import pytest
|
||||
|
||||
from sanic_testing.testing import HOST, SanicTestClient
|
||||
|
||||
Reference in New Issue
Block a user