from pathlib import Path import pytest from git import Repo from .utils import TEST_MODULE_NAME @pytest.fixture def wrapper(tmpdir, request): """ Sets up a wrapper with the minimal necessary configuration in order to build a module Note that a number of necessary variables are expected to be present in the environment """ wrapper_dir = Path(tmpdir / "wrapper") test_dir = wrapper_dir / TEST_MODULE_NAME test_dir.mkdir(parents=True) config_file = """ TOP:=$(CURDIR) include $(REQUIRE_CONFIG)/CONFIG include $(REQUIRE_CONFIG)/RULES_SITEMODS """ module_makefile = """ where_am_I := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) include $(E3_REQUIRE_TOOLS)/driver.makefile TEMPLATES += {templates} SOURCES += {sources} DBDS += {dbds} HEADERS += {headers} """ # TODO: This should not be necessary, but it is for patching. Repo.init(wrapper_dir) with open(wrapper_dir / "Makefile", "w") as f: f.write(config_file) make_vars = {"templates": "", "sources": "", "dbds": "", "headers": ""} make_vars.update(**request.param) with open(wrapper_dir / f"{TEST_MODULE_NAME}.Makefile", "w") as f: f.write(module_makefile.format(**make_vars)) with open(wrapper_dir / TEST_MODULE_NAME / "test.dbd", "w") as f: pass yield wrapper_dir