import os import json import urllib import pytest from sherlock_project.sites import SitesInformation def fetch_local_manifest(honor_exclusions: bool = True) -> dict[str, dict[str, str]]: sites_obj = SitesInformation(data_file_path=os.path.join(os.path.dirname(__file__), "../sherlock_project/resources/data.json"), honor_exclusions=honor_exclusions) sites_iterable = {site.name: site.information for site in sites_obj} return sites_iterable @pytest.fixture() def sites_obj(): sites_obj = SitesInformation(data_file_path=os.path.join(os.path.dirname(__file__), "../sherlock_project/resources/data.json")) yield sites_obj @pytest.fixture(scope="session") def sites_info(): yield fetch_local_manifest() @pytest.fixture(scope="session") def remote_schema(): schema_url: str = 'https://raw.githubusercontent.com/sherlock-project/sherlock/master/sherlock_project/resources/data.schema.json' with urllib.request.urlopen(schema_url) as remoteschema: schemadat = json.load(remoteschema) yield schemadat def pytest_generate_tests(metafunc): if "chunked_sites" in metafunc.fixturenames: sites_info = fetch_local_manifest(honor_exclusions=False) params = [{name: data} for name, data in sites_info.items()] ids = list(sites_info.keys()) metafunc.parametrize("chunked_sites", params, ids=ids)