* tests: fully type the test suite * chore: require more typing Signed-off-by: Henry Schreiner <henryfs@princeton.edu> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Signed-off-by: Henry Schreiner <henryfs@princeton.edu> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
58 lines
1.6 KiB
Python
58 lines
1.6 KiB
Python
from pathlib import Path
|
|
|
|
import jinja2
|
|
import pytest
|
|
|
|
from . import utils
|
|
from .test_projects import TestProject
|
|
from .test_projects.c import SPAM_C_TEMPLATE
|
|
|
|
subdir_package_project = TestProject()
|
|
|
|
subdir_package_project.files["src/spam/spam.c"] = jinja2.Template(SPAM_C_TEMPLATE)
|
|
subdir_package_project.template_context["spam_c_top_level_add"] = ""
|
|
subdir_package_project.template_context["spam_c_function_add"] = ""
|
|
|
|
subdir_package_project.files["src/spam/setup.py"] = r"""
|
|
from setuptools import Extension, setup
|
|
|
|
setup(
|
|
name="spam",
|
|
ext_modules=[Extension('spam', sources=['spam.c'])],
|
|
version="0.1.0",
|
|
)
|
|
"""
|
|
|
|
subdir_package_project.files["src/spam/test/run_tests.py"] = r"""
|
|
print('run_tests.py executed!')
|
|
"""
|
|
|
|
subdir_package_project.files["bin/before_build.py"] = r"""
|
|
print('before_build.py executed!')
|
|
"""
|
|
|
|
|
|
def test(capfd: pytest.CaptureFixture[str], tmp_path: Path) -> None:
|
|
project_dir = tmp_path / "project"
|
|
subdir_package_project.generate(project_dir)
|
|
|
|
package_dir = Path("src", "spam")
|
|
# build the wheels
|
|
actual_wheels = utils.cibuildwheel_run(
|
|
project_dir,
|
|
package_dir=package_dir,
|
|
add_env={
|
|
"CIBW_BEFORE_BUILD": "python {project}/bin/before_build.py",
|
|
"CIBW_TEST_COMMAND": "python {package}/test/run_tests.py",
|
|
},
|
|
single_python=True,
|
|
)
|
|
|
|
# check that the expected wheels are produced
|
|
expected_wheels = utils.expected_wheels("spam", "0.1.0", single_python=True)
|
|
assert set(actual_wheels) == set(expected_wheels)
|
|
|
|
captured = capfd.readouterr()
|
|
assert "before_build.py executed!" in captured.out
|
|
assert "run_tests.py executed!" in captured.out
|