rewired downstream test drivers#672
Open
RonnyPfannschmidt wants to merge 5 commits intopytest-dev:mainfrom
Open
rewired downstream test drivers#672RonnyPfannschmidt wants to merge 5 commits intopytest-dev:mainfrom
RonnyPfannschmidt wants to merge 5 commits intopytest-dev:mainfrom
Conversation
Replace per-project shell scripts with a PEP 723 uv-runnable driver and validated recipe files under downstream/recipes/. Environment kinds (uv-venv, stdlib-venv, none) pair with nested [environment.install] in each TOML. Document the flow in downstream/README.md and RELEASING.rst. Co-authored-by: Cursor AI <ai@cursor.sh> Co-authored-by: Composer <composer@cursor.com>
Introduce a workflow_dispatch-only workflow that runs each downstream TOML recipe (conda, datasette, devpi, hatch, pytest, python-lsp-server, tox) on ubuntu-latest with Python 3.12 and uv. Matrix jobs are independent (fail-fast: false) and time out after 120 minutes. Trigger from Actions and, when validating a change that needs it, select the relevant branch under "Use workflow from" (for example a pull request head branch). Co-authored-by: Cursor AI <ai@cursor.sh> Co-authored-by: Composer <composer@cursor.com>
Contributor
There was a problem hiding this comment.
Pull request overview
This PR replaces the bitrotted downstream shell scripts with a structured TOML-based downstream test runner (downstream/run_downstream.py) and adds a manual GitHub Actions workflow to execute the recipes in CI. It also updates release/docs guidance to point maintainers at the new driver.
Changes:
- Removed the legacy
downstream/*.shscripts and replaced them with a PEP 723 Python driver plus per-project TOML recipes. - Added a manual-only
downstreamGitHub Actions workflow that runs a matrix of downstream recipes. - Updated
RELEASING.rstanddownstream/README.mdto document the new invocation and recipe format.
Reviewed changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| RELEASING.rst | Updates release instructions to use the new downstream driver. |
| downstream/tox.sh | Removes the legacy tox downstream shell script. |
| downstream/run_downstream.py | Adds the new PEP 723 downstream driver (clone/update, env setup, install, test steps). |
| downstream/recipes/tox.toml | Adds tox downstream recipe definition. |
| downstream/recipes/python-lsp-server.toml | Adds python-lsp-server downstream recipe definition. |
| downstream/recipes/pytest.toml | Adds pytest downstream recipe definition. |
| downstream/recipes/hatch.toml | Adds hatch downstream recipe definition. |
| downstream/recipes/devpi.toml | Adds devpi downstream recipe definition. |
| downstream/recipes/datasette.toml | Adds datasette downstream recipe definition. |
| downstream/recipes/conda.toml | Adds conda downstream recipe definition (bootstrap via sourced script). |
| downstream/README.md | Documents recipe schema and how to run the driver. |
| downstream/python-lsp-server.sh | Removes the legacy python-lsp-server downstream shell script. |
| downstream/pytest.sh | Removes the legacy pytest downstream shell script. |
| downstream/hatch.sh | Removes the legacy hatch downstream shell script. |
| downstream/devpi.sh | Removes the legacy devpi downstream shell script. |
| downstream/datasette.sh | Removes the legacy datasette downstream shell script. |
| downstream/conda.sh | Removes the legacy conda downstream shell script. |
| downstream/.gitignore | Ignores the new python-lsp-server/ clone directory. |
| .github/workflows/downstream.yml | Adds manual workflow to run downstream recipe matrix on GitHub Actions. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| @@ -3,7 +3,8 @@ Release Procedure | |||
|
|
|||
| #. Dependening on the magnitude of the changes in the release, consider testing | |||
| uv run downstream/run_downstream.py pytest --skip-install | ||
| ``` | ||
|
|
||
| Requirements: Python 3.11+ for the driver, `git`, and `uv` where recipes use it. |
workflow_dispatch alone does not show checks on a pull request; add a label-gated pull_request trigger (labeled, synchronize) so maintainers can apply run-downstream to opt in. Document that the workflow file must exist on the default branch to appear under upstream Actions. Co-authored-by: Cursor AI <ai@cursor.sh> Co-authored-by: Composer <composer@cursor.com>
Replace the run-downstream label with a head branch filter so forks without shared labels still opt in (e.g. downstream-driver). Pull requests still target main only. Co-authored-by: Cursor AI <ai@cursor.sh> Co-authored-by: Composer <composer@cursor.com>
actions/checkout defaults to a shallow clone; pluggy installs as -e ../.. need a real tree (e.g. setuptools-scm). Set fetch-depth: 0. Co-authored-by: Cursor AI <ai@cursor.sh> Co-authored-by: Composer <composer@cursor.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.
there was bitrot in the shell scripts
i added a python driver and a workflow to run them on github
testing them now - in particular conda and hatch may need some more details
psa - im also working on actively removing pluggy from hatch as its used in a non-idiomatic way there that doesn’t bring value