from pathlib import Path import pytest from git import Repo from .utils import TEST_MODULE_NAME CONFIG = """ 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} """ @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) # 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) with open(wrapper_dir / f"{TEST_MODULE_NAME}.Makefile", "w") as f: f.write(MODULE_MAKEFILE.format(**request.param)) with open(wrapper_dir / TEST_MODULE_NAME / "test.dbd", "w") as f: f.write("") yield wrapper_dir