Skip to content

Commit

Permalink
[Test] Use Jinja2 for expected content templates
Browse files Browse the repository at this point in the history
  • Loading branch information
tttapa committed Aug 27, 2023
1 parent 6e7abf4 commit de5a8c0
Show file tree
Hide file tree
Showing 13 changed files with 124 additions and 102 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/wheel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:
path: dist
- name: Run Nox
run: |
python -m pip install -U pip nox distlib
python -m pip install -U pip nox distlib jinja2
python -m nox
env:
PY_BUILD_CMAKE_WHEEL_DIR: ${{ github.workspace }}/dist
Expand Down Expand Up @@ -113,7 +113,7 @@ jobs:
path: dist
- name: Run Nox
run: |
python -m pip install -U pip nox distlib
python -m pip install -U pip nox distlib jinja2
python -m nox
env:
PY_BUILD_CMAKE_WHEEL_DIR: ${{ github.workspace }}/dist
Expand Down Expand Up @@ -166,7 +166,7 @@ jobs:
path: dist
- name: Run Nox
run: |
python -m pip install -U pip nox distlib
python -m pip install -U pip nox distlib jinja2
python -m nox
env:
PY_BUILD_CMAKE_WHEEL_DIR: ${{ github.workspace }}/dist
Expand Down
17 changes: 13 additions & 4 deletions noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
from tarfile import open as open_tar
from zipfile import ZipFile

import jinja2
import nox
from distlib.util import get_platform

Expand All @@ -48,20 +49,28 @@ def get_contents_subs(ext_suffix: str):
"ext_suffix": ext_suffix,
"dbg_suffix": dbg_suffix,
"exe_suffix": exe_suffix,
"sys": {
"version_info": sys.version_info,
"implementation": sys.implementation,
"platform": sys.platform,
},
}


def check_pkg_contents(
session: nox.Session, name: str, ext_suffix: str, with_sdist=True
):
d = project_dir / "tests" / "expected_contents" / name
template_env = jinja2.Environment(loader=jinja2.FileSystemLoader(d))
normname = re.sub(r"[-_.]+", "_", name).lower()
plat = get_platform().replace(".", "_").replace("-", "_")
subs = get_contents_subs(ext_suffix)
# Compare sdist contents
sdist = Path(f"dist-nox/{normname}-{version}.tar.gz")
if with_sdist:
sdist_expect = (d / "sdist.txt").read_text().format(**subs).split("\n")
sdist_template = template_env.get_template("sdist.txt")
sdist_expect = sdist_template.render(**subs).split("\n")
sdist_expect = sorted(filter(bool, sdist_expect))
sdist_actual = sorted(open_tar(sdist).getnames())
if sdist_expect != sdist_actual:
diff = "\n".join(unified_diff(sdist_expect, sdist_actual))
Expand All @@ -73,7 +82,9 @@ def check_pkg_contents(
session.error(f"Unexpected number of Wheels {whls} ({whl_pattern})")
whl = whls[0]
# Compare Wheel contents
whl_expect = (d / "whl.txt").read_text().format(**subs).split("\n")
whl_template = template_env.get_template("whl.txt")
whl_expect = whl_template.render(**subs).split("\n")
whl_expect = sorted(filter(bool, whl_expect))
whl_actual = sorted(ZipFile(whl).namelist())
if whl_expect != whl_actual:
diff = "\n".join(unified_diff(whl_expect, whl_actual))
Expand Down Expand Up @@ -124,8 +135,6 @@ def example_projects(session: nox.Session):

@nox.session
def component(session: nox.Session):
if sys.platform not in ("linux", "win32"):
return
session.install("-U", "pip", "build", "pytest")
dist_dir = os.getenv("PY_BUILD_CMAKE_WHEEL_DIR")
if dist_dir is None:
Expand Down
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ Tracker = "https://github.com/tttapa/py-build-cmake/issues"
[project.scripts]
py-build-cmake = "py_build_cmake.cli:cli"

[project.optional-dependencies]
test = ["nox>=2023.4.22,<2024","jinja2~=3.1.2"]

[tool.py-build-cmake.module]
name = "py_build_cmake"

Expand Down
14 changes: 8 additions & 6 deletions tests/expected_contents/minimal-comp-debug/whl.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
minimal_comp/_add_module{dbg_suffix}
minimal_comp_debug-{version}.dist-info/LICENSE
minimal_comp_debug-{version}.dist-info/METADATA
minimal_comp_debug-{version}.dist-info/RECORD
minimal_comp_debug-{version}.dist-info/WHEEL
minimal_comp_debug-{version}.dist-info/entry_points.txt
{% if sys.platform in ("linux", "win32") %}
minimal_comp/_add_module{{dbg_suffix}}
{% endif %}
minimal_comp_debug-{{version}}.dist-info/LICENSE
minimal_comp_debug-{{version}}.dist-info/METADATA
minimal_comp_debug-{{version}}.dist-info/RECORD
minimal_comp_debug-{{version}}.dist-info/WHEEL
minimal_comp_debug-{{version}}.dist-info/entry_points.txt
18 changes: 10 additions & 8 deletions tests/expected_contents/minimal-comp/whl.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
minimal_comp-{version}.dist-info/LICENSE
minimal_comp-{version}.dist-info/METADATA
minimal_comp-{version}.dist-info/RECORD
minimal_comp-{version}.dist-info/WHEEL
minimal_comp-{version}.dist-info/entry_points.txt
minimal_comp-{{version}}.dist-info/LICENSE
minimal_comp-{{version}}.dist-info/METADATA
minimal_comp-{{version}}.dist-info/RECORD
minimal_comp-{{version}}.dist-info/WHEEL
minimal_comp-{{version}}.dist-info/entry_points.txt
minimal_comp/__init__.py
minimal_comp/__init__.pyi
minimal_comp/_add_module{ext_suffix}
minimal_comp/_add_module{{ext_suffix}}
minimal_comp/_add_module.pyi
minimal_comp/add_module.py
minimal_comp/py.typed
{% if sys.implementation.name != 'pypy' or sys.version_info >= (3, 8) %}
minimal_comp/__init__.pyi
minimal_comp/add_module.pyi
minimal_comp/py.typed
{% endif %}
16 changes: 8 additions & 8 deletions tests/expected_contents/minimal-program/sdist.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
minimal_program-{version}/CMakeLists.txt
minimal_program-{version}/LICENSE
minimal_program-{version}/PKG-INFO
minimal_program-{version}/README.md
minimal_program-{version}/pyproject.toml
minimal_program-{version}/src-python/minimal_program_module/__init__.py
minimal_program-{version}/src/CMakeLists.txt
minimal_program-{version}/src/minimal_program.cpp
minimal_program-{{version}}/CMakeLists.txt
minimal_program-{{version}}/LICENSE
minimal_program-{{version}}/PKG-INFO
minimal_program-{{version}}/README.md
minimal_program-{{version}}/pyproject.toml
minimal_program-{{version}}/src-python/minimal_program_module/__init__.py
minimal_program-{{version}}/src/CMakeLists.txt
minimal_program-{{version}}/src/minimal_program.cpp
12 changes: 6 additions & 6 deletions tests/expected_contents/minimal-program/whl.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
minimal_program-{version}.data/scripts/minimal_program{exe_suffix}
minimal_program-{version}.dist-info/LICENSE
minimal_program-{version}.dist-info/METADATA
minimal_program-{version}.dist-info/RECORD
minimal_program-{version}.dist-info/WHEEL
minimal_program-{version}.dist-info/entry_points.txt
minimal_program-{{version}}.data/scripts/minimal_program{{exe_suffix}}
minimal_program-{{version}}.dist-info/LICENSE
minimal_program-{{version}}.dist-info/METADATA
minimal_program-{{version}}.dist-info/RECORD
minimal_program-{{version}}.dist-info/WHEEL
minimal_program-{{version}}.dist-info/entry_points.txt
minimal_program_module/__init__.py
22 changes: 11 additions & 11 deletions tests/expected_contents/minimal/sdist.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
minimal-{version}/CMakeLists.txt
minimal-{version}/LICENSE
minimal-{version}/PKG-INFO
minimal-{version}/README.md
minimal-{version}/pyproject.toml
minimal-{version}/src-python/minimal/__init__.py
minimal-{version}/src-python/minimal/add_module.py
minimal-{version}/src-python/minimal/py.typed
minimal-{version}/src/CMakeLists.txt
minimal-{version}/src/_add_module.pyi
minimal-{version}/src/add_module.c
minimal-{{version}}/CMakeLists.txt
minimal-{{version}}/LICENSE
minimal-{{version}}/PKG-INFO
minimal-{{version}}/README.md
minimal-{{version}}/pyproject.toml
minimal-{{version}}/src-python/minimal/__init__.py
minimal-{{version}}/src-python/minimal/add_module.py
minimal-{{version}}/src-python/minimal/py.typed
minimal-{{version}}/src/CMakeLists.txt
minimal-{{version}}/src/_add_module.pyi
minimal-{{version}}/src/add_module.c
18 changes: 10 additions & 8 deletions tests/expected_contents/minimal/whl.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
minimal-{version}.dist-info/LICENSE
minimal-{version}.dist-info/METADATA
minimal-{version}.dist-info/RECORD
minimal-{version}.dist-info/WHEEL
minimal-{version}.dist-info/entry_points.txt
minimal-{{version}}.dist-info/LICENSE
minimal-{{version}}.dist-info/METADATA
minimal-{{version}}.dist-info/RECORD
minimal-{{version}}.dist-info/WHEEL
minimal-{{version}}.dist-info/entry_points.txt
minimal/__init__.py
minimal/__init__.pyi
minimal/_add_module{ext_suffix}
minimal/_add_module{{ext_suffix}}
minimal/_add_module.pyi
minimal/add_module.py
minimal/py.typed
{% if sys.implementation.name != 'pypy' or sys.version_info >= (3, 8) %}
minimal/__init__.pyi
minimal/add_module.pyi
minimal/py.typed
{% endif %}
26 changes: 13 additions & 13 deletions tests/expected_contents/nanobind-project/sdist.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
nanobind_project-{version}/CMakeLists.txt
nanobind_project-{version}/LICENSE
nanobind_project-{version}/PKG-INFO
nanobind_project-{version}/README.md
nanobind_project-{version}/cmake/NanobindStubgen.cmake
nanobind_project-{version}/cmake/QueryPythonForNanobind.cmake
nanobind_project-{version}/pyproject.toml
nanobind_project-{version}/python-src/nanobind_project/__init__.py
nanobind_project-{version}/python-src/nanobind_project/add.py
nanobind_project-{version}/python-src/nanobind_project/add_module.py
nanobind_project-{version}/python-src/nanobind_project/py.typed
nanobind_project-{version}/python-src/nanobind_project/sub_package/__init__.py
nanobind_project-{version}/src/add_module.cpp
nanobind_project-{{version}}/CMakeLists.txt
nanobind_project-{{version}}/LICENSE
nanobind_project-{{version}}/PKG-INFO
nanobind_project-{{version}}/README.md
nanobind_project-{{version}}/cmake/NanobindStubgen.cmake
nanobind_project-{{version}}/cmake/QueryPythonForNanobind.cmake
nanobind_project-{{version}}/pyproject.toml
nanobind_project-{{version}}/python-src/nanobind_project/__init__.py
nanobind_project-{{version}}/python-src/nanobind_project/add.py
nanobind_project-{{version}}/python-src/nanobind_project/add_module.py
nanobind_project-{{version}}/python-src/nanobind_project/py.typed
nanobind_project-{{version}}/python-src/nanobind_project/sub_package/__init__.py
nanobind_project-{{version}}/src/add_module.cpp
24 changes: 13 additions & 11 deletions tests/expected_contents/nanobind-project/whl.txt
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
nanobind_project-{version}.dist-info/LICENSE
nanobind_project-{version}.dist-info/METADATA
nanobind_project-{version}.dist-info/RECORD
nanobind_project-{version}.dist-info/WHEEL
nanobind_project-{version}.dist-info/entry_points.txt
nanobind_project-{{version}}.dist-info/LICENSE
nanobind_project-{{version}}.dist-info/METADATA
nanobind_project-{{version}}.dist-info/RECORD
nanobind_project-{{version}}.dist-info/WHEEL
nanobind_project-{{version}}.dist-info/entry_points.txt
nanobind_project/__init__.py
nanobind_project/__init__.pyi
nanobind_project/_add_module{ext_suffix}
nanobind_project/_add_module{{ext_suffix}}
nanobind_project/_add_module/__init__.pyi
nanobind_project/_add_module_d{ext_suffix}
nanobind_project/_add_module_d{{ext_suffix}}
nanobind_project/_add_module_d/__init__.pyi
nanobind_project/add.py
nanobind_project/add.pyi
nanobind_project/add_module.py
nanobind_project/add_module.pyi
nanobind_project/py.typed
nanobind_project/sub_package/__init__.py
nanobind_project/sub_package/__init__.pyi
{% if sys.implementation.name != 'pypy' or sys.version_info >= (3, 8) %}
nanobind_project/__init__.pyi
nanobind_project/add.pyi
nanobind_project/add_module.pyi
nanobind_project/sub_package/__init__.pyi
{% endif %}
26 changes: 13 additions & 13 deletions tests/expected_contents/pybind11-project/sdist.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
pybind11_project-{version}/CMakeLists.txt
pybind11_project-{version}/LICENSE
pybind11_project-{version}/PKG-INFO
pybind11_project-{version}/README.md
pybind11_project-{version}/cmake/Pybind11Stubgen.cmake
pybind11_project-{version}/cmake/QueryPythonForPybind11.cmake
pybind11_project-{version}/pyproject.toml
pybind11_project-{version}/python-src/pybind11_project/__init__.py
pybind11_project-{version}/python-src/pybind11_project/add.py
pybind11_project-{version}/python-src/pybind11_project/add_module.py
pybind11_project-{version}/python-src/pybind11_project/py.typed
pybind11_project-{version}/python-src/pybind11_project/sub_package/__init__.py
pybind11_project-{version}/src/add_module.cpp
pybind11_project-{{version}}/CMakeLists.txt
pybind11_project-{{version}}/LICENSE
pybind11_project-{{version}}/PKG-INFO
pybind11_project-{{version}}/README.md
pybind11_project-{{version}}/cmake/Pybind11Stubgen.cmake
pybind11_project-{{version}}/cmake/QueryPythonForPybind11.cmake
pybind11_project-{{version}}/pyproject.toml
pybind11_project-{{version}}/python-src/pybind11_project/__init__.py
pybind11_project-{{version}}/python-src/pybind11_project/add.py
pybind11_project-{{version}}/python-src/pybind11_project/add_module.py
pybind11_project-{{version}}/python-src/pybind11_project/py.typed
pybind11_project-{{version}}/python-src/pybind11_project/sub_package/__init__.py
pybind11_project-{{version}}/src/add_module.cpp
24 changes: 13 additions & 11 deletions tests/expected_contents/pybind11-project/whl.txt
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
pybind11_project-{version}.dist-info/LICENSE
pybind11_project-{version}.dist-info/METADATA
pybind11_project-{version}.dist-info/RECORD
pybind11_project-{version}.dist-info/WHEEL
pybind11_project-{version}.dist-info/entry_points.txt
pybind11_project-{{version}}.dist-info/LICENSE
pybind11_project-{{version}}.dist-info/METADATA
pybind11_project-{{version}}.dist-info/RECORD
pybind11_project-{{version}}.dist-info/WHEEL
pybind11_project-{{version}}.dist-info/entry_points.txt
pybind11_project/__init__.py
pybind11_project/__init__.pyi
pybind11_project/_add_module{ext_suffix}
pybind11_project/_add_module{{ext_suffix}}
pybind11_project/_add_module/__init__.pyi
pybind11_project/_add_module_d{ext_suffix}
pybind11_project/_add_module_d{{ext_suffix}}
pybind11_project/_add_module_d/__init__.pyi
pybind11_project/add.py
pybind11_project/add.pyi
pybind11_project/add_module.py
pybind11_project/add_module.pyi
pybind11_project/py.typed
pybind11_project/sub_package/__init__.py
pybind11_project/sub_package/__init__.pyi
{% if sys.implementation.name != 'pypy' or sys.version_info >= (3, 8) %}
pybind11_project/__init__.pyi
pybind11_project/add.pyi
pybind11_project/add_module.pyi
pybind11_project/sub_package/__init__.pyi
{% endif %}

0 comments on commit de5a8c0

Please sign in to comment.