mustmatch
mustmatch is a single Rust CLI for assertion pipelines and executable
Markdown specs. Pipe a command's output in and assert it matches an expected
text / JSON / regex contract, or run documentation-first Markdown with
mustmatch test so your examples are also your tests. It ships static quality
commands (lint, verify-matrix) too.
This README is itself a spec: the assertion examples below run under make spec.
Install
uv tool install mustmatch
(The install line above is documentation — mustmatch test only runs a bash
block when it pipes into | mustmatch, so commands shown for reference are never
executed.)
Assertion pipelines
Compare stdin against one expected value — exactly, as a substring with like,
as a regex in /slashes/, or as a JSON subset.
printf 'hello world\n' | mustmatch like "world"
printf 'v1.2.3\n' | mustmatch "/^v[0-9]+[.][0-9]+[.][0-9]+$/"
printf '{"status":"ok","count":42}\n' | mustmatch like '{"status":"ok"}'
printf 'all systems go\n' | mustmatch not like "error"
Executable Markdown
mustmatch test PATH... runs the code blocks in your Markdown as tests. A
document is the documentation a reader sees and the contract make spec
enforces — at once.
$ mustmatch test spec/
...
passed
The full, runnable guide lives in spec/, one feature per file:
| Topic | File |
|---|---|
| CLI assertions | spec/01-cli-assertions.md |
| Comparison modes | spec/02-comparison-modes.md |
Ellipsis (...) |
spec/03-ellipsis.md |
| Normalization | spec/04-normalization.md |
| Executable Markdown & the safety model | spec/05-executable-markdown.md |
| Console examples & streams | spec/06-console-and-streams.md |
| Named runs | spec/07-named-runs.md |
| Tables & scenario outlines | spec/08-tables-and-outlines.md |
| Embedded fixture files | spec/09-embedded-files.md |
| Contexts | spec/contexts/10-contexts.md |
| Lifecycle hooks | spec/lifecycle/11-lifecycle-hooks.md |
| Linting specs | spec/12-lint.md |
| Verifying a proof matrix | spec/13-verify-matrix.md |
| Authoring guide & runner self-test | spec/14-authoring-and-self-test.md |
| Release smoke gate | spec/15-release-smoke.md |
Quality commands
mustmatch lint spec/14-authoring-and-self-test.md | mustmatch like "findings=0"
mustmatch verify-matrix DESIGN --repo-root ROOT confirms a design document's
backticked file references resolve inside the repo.
Gates
make lint
make test
make spec
make smoke
make spec builds the binary and runs both the runner and every inline
assertion against the build under test, so CI always exercises the current
source. make smoke builds or selects a wheel, installs it into an isolated
environment, and runs the package smoke document through the installed
mustmatch entry point before release.
License
MIT
Metadata
Release files for mustmatch 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mustmatch-0.1.0.tar.gz | 43.8 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| mustmatch-0.1.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| mustmatch-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64 | Details |
| mustmatch-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64 | Details |
| mustmatch-0.1.0-py3-none-macosx_11_0_arm64.whl | Python 3 | none | macOS 11.0+ ARM64 | Details |
| mustmatch-0.1.0-py3-none-macosx_10_12_x86_64.whl | Python 3 | none | macOS 10.12+ x86-64 | Details |
Total release size: 6.8 MB
Release files / mustmatch-0.1.0.tar.gz
| Download URL | mustmatch-0.1.0.tar.gz |
|---|---|
| Size | 43.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bdac3f3b36f588dd801b6c9521f2f158addd7f329d13c775b999941dd2727320
|
|
BLAKE2b-256 checksum How to use checksums |
b1447ca6f5742dc43099e4dec129158c472e63c6fc38835a5775e3c1401df05e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 8, 2026.
Transparency logRelease files / mustmatch-0.1.0-py3-none-win_amd64.whl
| Download URL | mustmatch-0.1.0-py3-none-win_amd64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
efeb6adf266f5f98c53be99583611a64458984a7df5502e97188abdbb4c60217
|
|
BLAKE2b-256 checksum How to use checksums |
af687784ac40a8b1e7a0aedbcd8695d3ecbb913720654e56402c671b9c9cba3c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 8, 2026.
Transparency logRelease files / mustmatch-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | mustmatch-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | Linux glibc 2.17+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
86c6c250578413009eed9ff591d5fa3107c9695176d418dbfc2ccae87d472e77
|
|
BLAKE2b-256 checksum How to use checksums |
ab301260a42494e3a19d91f0820e1ca9d23a7d4c1428c0ccfce56fd07e7d9b4a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 8, 2026.
Transparency logRelease files / mustmatch-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | mustmatch-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | Linux glibc 2.17+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
f5135a5bdb43fac45217ebad723169eb92629630b931b0fdd78b763ae2468bd4
|
|
BLAKE2b-256 checksum How to use checksums |
940b7919757b9ab110f401119d3b93b15968d0186817c19ccb466a70f8412452
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 8, 2026.
Transparency logRelease files / mustmatch-0.1.0-py3-none-macosx_11_0_arm64.whl
| Download URL | mustmatch-0.1.0-py3-none-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | Python 3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
92e8395793d175525f241158a4833a02b00fcf889321e228973cff643eff2411
|
|
BLAKE2b-256 checksum How to use checksums |
1ca8f250355c74b95aa6098b05b211de5ca93da7996e141b3bdb098ca1188cf9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 8, 2026.
Transparency logRelease files / mustmatch-0.1.0-py3-none-macosx_10_12_x86_64.whl
| Download URL | mustmatch-0.1.0-py3-none-macosx_10_12_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | Python 3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
be600301724e3cac580cbe4c14d109bd9e4c41e054d63f6484199a66fa6d5ba1
|
|
BLAKE2b-256 checksum How to use checksums |
e474d52dc2957269254828271c5923e48e8b11aa4e24e5b81db138a8be186b58
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 8, 2026.
Transparency log