Test Results¶
gmshparser is tested against committed mesh fixtures covering the supported MSH version families and several element types.
Current automated checks¶
GitHub Actions separates validation into dedicated jobs.
The quality job runs once on Python 3.12:
uv sync --no-default-groups --group lint
uv run --no-sync ruff format --check gmshparser tests examples benchmarks
uv run --no-sync ruff check gmshparser tests examples benchmarks
The typing job validates package sources and a strict downstream public-API sample:
uv sync --no-default-groups --group typing
uv run --no-sync mypy gmshparser
uv run --no-sync mypy --strict tests/typing/public_api.py
The test matrix runs on Python 3.12, 3.13, and 3.14:
uv sync --no-default-groups --group test
uv run --no-sync pytest --cov=gmshparser --cov-report=xml --cov-report=term
After quality, typing, and tests succeed, a separate package job builds the
wheel and source distribution and smoke-tests the installed package, CLI, and
packaged py.typed marker. The release workflow repeats those package checks
before publishing through PyPI trusted publishing.
The documentation workflow installs only the docs dependency group and runs:
Pull requests validate the documentation build. Pushes to master additionally
upload and deploy the site using GitHub's official Pages actions.
Format coverage¶
Fixtures and parser tests cover:
- MSH 1.0 legacy
$NODand$ELMsections - MSH 2.0, 2.1, and 2.2 node and element layouts
- MSH 2.x element records containing tags
- MSH 4.0 and 4.1 entity-block node and element layouts
- unsupported-version and version-management behavior
Physical-name and physical-tag coverage includes named and anonymous groups, entity assignments, element assignments, and resolution to participating nodes. Declared MSH 4 entities are also tested when they have no node or element blocks.
Element and helper coverage¶
The suite exercises multiple element dimensions and types, including points, lines, triangles, quadrangles, and tetrahedra. It also tests the CLI and the visualization helper return values.
Running tests locally¶
Run one module:
Generate an HTML coverage report:
Authoritative status¶
Mesh files are stored under testdata/; see
testdata/README.md.
Exact test counts and coverage percentages change as the project evolves. The GitHub Actions result and Codecov report for the current commit are the authoritative status rather than numbers copied into documentation.