refactor: extract txtar contract runner into pytest-txtar - #26
Merged
Conversation
…usable module — package core: txtar parser and pytest-free runner core Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…usable module — pytest plugin layer Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…usable module — booping e2e rewired onto pytest-txtar Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…usable module split pytest-txtar into its own repo and depend on the published 0.1.0 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
Extracts the e2e contract-corpus runner into a standalone, published pytest-txtar package and rewires booping as its first consumer.
golang.org/x/tools/txtar, BSD-3 attribution) plus a pytest-free runner core (case/sandbox/compare/update) parameterized by a frozenTxtarSpec; no booping references.*.txtarfiles collect as native pytest items (nodeid = case path), failures render the core's unified diff, consumers supply their spec via apytest_txtar_spec(config)hook inconftest.py, rebaselining via--txtar-update(fixed to rewrite only genuinely mismatching cases — the old runner flattened holding[..]wildcards).e2e/run.py+e2e/_txtar.pydeleted;e2e/conftest.pysupplies the spec;just e2ebecomesuv run pytest e2ewith patterns mapped to-k; the generic case-format spec moved to the package README,e2e/README.mdkeeps booping-specific notes.A/pytest-txtarwith its own CI (test job on push/PR, tag-gated publish authenticating via thePYPI_TOKENsecret); v0.1.0 is live on PyPI and booping depends onpytest-txtar>=0.1.0with no path source and no in-repo copy.All 38 corpus cases pass unmodified;
just ciinterface unchanged.Plan:
vault/plans/202608121206_txtar-runner-extraction/🤖 Generated with Claude Code