2 changed files with 42 additions and 2 deletions
@ -0,0 +1,40 @@ |
|||
import subprocess |
|||
import sys |
|||
import textwrap |
|||
from pathlib import Path |
|||
|
|||
import pytest |
|||
|
|||
|
|||
REPO_ROOT = Path(__file__).resolve().parents[1] |
|||
|
|||
|
|||
@pytest.mark.parametrize("optional_module_name", ("ujson", "orjson")) |
|||
def test_responses_imports_when_optional_json_import_raises_import_error( |
|||
optional_module_name: str, |
|||
) -> None: |
|||
code = textwrap.dedent( |
|||
f""" |
|||
import importlib |
|||
|
|||
real_import_module = importlib.import_module |
|||
|
|||
def fake_import_module(name, package=None): |
|||
if name == {optional_module_name!r}: |
|||
raise ImportError("simulated optional dependency load failure") |
|||
return real_import_module(name, package) |
|||
|
|||
importlib.import_module = fake_import_module |
|||
|
|||
import fastapi.responses as responses |
|||
|
|||
assert getattr(responses, {optional_module_name!r}) is None |
|||
""" |
|||
) |
|||
result = subprocess.run( |
|||
[sys.executable, "-c", code], |
|||
capture_output=True, |
|||
cwd=REPO_ROOT, |
|||
text=True, |
|||
) |
|||
assert result.returncode == 0, result.stderr + result.stdout |
|||
Loading…
Reference in new issue