mirror of
https://github.com/davidhalter/django-stubs.git
synced 2025-12-10 14:01:56 +08:00
updated package setup (#485)
* updated package setup * updated to use python 3.9 * fixed test runner * fixed typecheck tests * fixed discrepencies * added override to runner * updated travis * updated pre-commit hooks * updated dep
This commit is contained in:
committed by
GitHub
parent
a3624dec36
commit
44151c485d
72
tests/test_error_handling.py
Normal file
72
tests/test_error_handling.py
Normal file
@@ -0,0 +1,72 @@
|
||||
import tempfile
|
||||
import typing
|
||||
|
||||
import pytest
|
||||
|
||||
from mypy_django_plugin.main import extract_django_settings_module
|
||||
|
||||
TEMPLATE = """usage: (config)
|
||||
...
|
||||
[mypy.plugins.django_stubs]
|
||||
django_settings_module: str (required)
|
||||
...
|
||||
(django-stubs) mypy: error: 'django_settings_module' is not set: {}
|
||||
"""
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"config_file_contents,message_part",
|
||||
[
|
||||
pytest.param(
|
||||
None,
|
||||
"mypy config file is not specified or found",
|
||||
id="missing-file",
|
||||
),
|
||||
pytest.param(
|
||||
["[not-really-django-stubs]"],
|
||||
"no section [mypy.plugins.django-stubs]",
|
||||
id="missing-section",
|
||||
),
|
||||
pytest.param(
|
||||
["[mypy.plugins.django-stubs]", "\tnot_django_not_settings_module = badbadmodule"],
|
||||
"the setting is not provided",
|
||||
id="missing-settings-module",
|
||||
),
|
||||
pytest.param(
|
||||
["[mypy.plugins.django-stubs]"],
|
||||
"the setting is not provided",
|
||||
id="no-settings-given",
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_misconfiguration_handling(capsys, config_file_contents, message_part):
|
||||
# type: (typing.Any, typing.List[str], str) -> None
|
||||
"""Invalid configuration raises `SystemExit` with a precise error message."""
|
||||
with tempfile.NamedTemporaryFile(mode="w+") as config_file:
|
||||
if not config_file_contents:
|
||||
config_file.close()
|
||||
else:
|
||||
config_file.write("\n".join(config_file_contents).expandtabs(4))
|
||||
config_file.seek(0)
|
||||
|
||||
with pytest.raises(SystemExit, match="2"):
|
||||
extract_django_settings_module(config_file.name)
|
||||
|
||||
error_message = TEMPLATE.format(message_part)
|
||||
assert error_message == capsys.readouterr().err
|
||||
|
||||
|
||||
def test_correct_configuration() -> None:
|
||||
"""Django settings module gets extracted given valid configuration."""
|
||||
config_file_contents = [
|
||||
"[mypy.plugins.django-stubs]",
|
||||
"\tsome_other_setting = setting",
|
||||
"\tdjango_settings_module = my.module",
|
||||
]
|
||||
with tempfile.NamedTemporaryFile(mode="w+") as config_file:
|
||||
config_file.write("\n".join(config_file_contents).expandtabs(4))
|
||||
config_file.seek(0)
|
||||
|
||||
extracted = extract_django_settings_module(config_file.name)
|
||||
|
||||
assert extracted == "my.module"
|
||||
Reference in New Issue
Block a user