nwb-linkml/nwb_linkml/tests/conftest.py

57 lines
1.6 KiB
Python
Raw Normal View History

import os
from doctest import ELLIPSIS, NORMALIZE_WHITESPACE
2024-07-02 07:34:01 +00:00
from pathlib import Path
2024-07-02 04:44:35 +00:00
import pytest
2024-07-02 07:34:01 +00:00
import requests_cache
from sybil import Sybil
from sybil.parsers.rest import DocTestParser, PythonCodeBlockParser
2024-07-02 07:01:54 +00:00
from .fixtures import * # noqa: F403
pytest_collect_file = Sybil(
parsers=[
DocTestParser(optionflags=ELLIPSIS + NORMALIZE_WHITESPACE),
PythonCodeBlockParser(),
],
2024-07-02 04:23:31 +00:00
patterns=["*.py"],
).pytest()
2024-07-02 04:23:31 +00:00
2024-07-02 07:34:01 +00:00
def pytest_addoption(parser):
parser.addoption(
"--with-output",
action="store_true",
help="dump output in compliance test for richer debugging information",
)
parser.addoption(
"--without-cache", action="store_true", help="Don't use a sqlite cache for network requests"
)
2024-07-02 04:23:31 +00:00
@pytest.fixture(autouse=True, scope="session")
def set_config_vars(tmp_output_dir):
2024-07-02 04:23:31 +00:00
os.environ["NWB_LINKML_CACHE_DIR"] = str(tmp_output_dir)
2024-07-02 07:34:01 +00:00
@pytest.fixture(scope="session", autouse=True)
def patch_requests_cache(pytestconfig):
"""
Cache network requests - for each unique network request, store it in
an sqlite cache. only do unique requests once per session.
"""
if pytestconfig.getoption("--without-cache"):
yield
return
cache_file = Path(__file__).parent / "output" / "requests-cache.sqlite"
requests_cache.install_cache(
str(cache_file),
backend="sqlite",
urls_expire_after={"localhost": requests_cache.DO_NOT_CACHE},
)
requests_cache.clear()
yield
# delete cache file unless we have requested it to persist for inspection
if not pytestconfig.getoption("--with-output"):
cache_file.unlink(missing_ok=True)