2023-10-20 04:20:50 +00:00
|
|
|
import os
|
2024-07-02 07:34:01 +00:00
|
|
|
from pathlib import Path
|
2023-10-20 04:20:50 +00:00
|
|
|
|
2024-07-02 04:44:35 +00:00
|
|
|
import pytest
|
2024-07-02 07:34:01 +00:00
|
|
|
import requests_cache
|
2023-10-20 04:20:50 +00:00
|
|
|
|
2024-07-02 07:01:54 +00:00
|
|
|
from .fixtures import * # noqa: F403
|
|
|
|
|
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")
|
2023-10-20 04:20:50 +00:00
|
|
|
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)
|