tests.test_release_workflow_steps moduleΒΆ

Run the exact command of each release step against a mocked GitHub.

A step gated on a release commit runs on no ordinary push, so no CI run between two releases reaches it: a wrong argument would only surface as a failed release. Each test here reads the step’s run: line out of the workflow file, expands its environment variables with plausible values, and invokes the command that line holds. The arguments a release passes are the ones these tests run.

tests.test_release_workflow_steps.REPOSITORY = 'kdeldycke/papaya'ΒΆ

The repository the steps run in.

tests.test_release_workflow_steps.VERSION = '1.2.3'ΒΆ

The version the release publishes.

tests.test_release_workflow_steps.COMMIT = '6f27db47612aaee06fdf08744b09a9f5f6c26a1b'ΒΆ

The release commit.

tests.test_release_workflow_steps.CLI_MARK = '-- repomatic 'ΒΆ

What separates the command that starts the CLI from the arguments it gets.

tests.test_release_workflow_steps.VARIABLE_RE = re.compile('\\$\\{(\\w+)\\}|\\$(\\w+)')ΒΆ

A shell variable, braced or bare.

tests.test_release_workflow_steps.PYPROJECT = '[project]\nname = "papaya"\nversion = "1.2.3"\n\n[tool.repomatic]\nrelease-assets = ["papaya.zip", "mango.zip"]\n'ΒΆ

The project the release steps work on.

tests.test_release_workflow_steps.CHANGELOG = '# Changelog\n\n## [`1.2.3` (2026-10-21)](https://github.com/kdeldycke/papaya/compare/v1.2.2...v1.2.3)\n\n- Add a juicer.\n\n## [`1.2.2` (2026-10-01)](https://github.com/kdeldycke/papaya/compare/v1.2.1...v1.2.2)\n\n- Peel faster.\n'ΒΆ

A changelog holding the section of the release.

tests.test_release_workflow_steps.find_step(document, job, name)[source]ΒΆ

The step of job named name, the one step matching it.

Return type:

dict

tests.test_release_workflow_steps.step_argv(step, env)[source]ΒΆ

The arguments a step passes to the CLI, its variables expanded.

Every variable the line reads must be one the step declares in its env: or one GitHub sets, which env stands in for: an undeclared one would reach the CLI empty.

Parameters:
  • step (dict) – The workflow step.

  • env (dict[str, str]) – The values of the variables the line reads.

Return type:

list[str]

Returns:

The arguments after the repomatic command.

tests.test_release_workflow_steps.project(tmp_path, monkeypatch)[source]ΒΆ

A checkout of the project being released, the working directory.

tests.test_release_workflow_steps.invoke(argv)[source]ΒΆ

Run the CLI on argv, as the step would.

tests.test_release_workflow_steps.test_squashed_release_step(project, monkeypatch, message, reported)[source]ΒΆ

A squash-merged release PR reopens one issue and fails the job.

tests.test_release_workflow_steps.test_create_release_step(project)[source]ΒΆ

The draft gets the release notes, the target commit and the package.

tests.test_release_workflow_steps.test_create_release_step_skips_an_existing_release(project)[source]ΒΆ

A re-run of the job finds the draft its first attempt created.

tests.test_release_workflow_steps.test_compile_binaries_attestation_step(project)[source]ΒΆ

The binary’s provenance is checked, and its bundle named after it.

tests.test_release_workflow_steps.test_manpages_steps(project)[source]ΒΆ

The tarball the attest step names is the one the pack step writes.

tests.test_release_workflow_steps.test_extra_assets_steps(project, landed)[source]ΒΆ

Every declared asset lands on the draft, or the job fails before upload.

tests.test_release_workflow_steps.test_publish_release_steps(project)[source]ΒΆ

The binaries and their aliases reach the draft, which then publishes.

tests.test_release_workflow_steps.test_wait_pypi_step(tmp_path)[source]ΒΆ

The composite action runs the CLI of the tree it was fetched with.

tests.test_release_workflow_steps.release_checkout(tmp_path, monkeypatch, hermetic_git)[source]ΒΆ

A repository whose version was just stripped of its .dev suffix.

tests.test_release_workflow_steps.test_prepare_release_commit_steps(release_checkout, tmp_path, monkeypatch)[source]ΒΆ

The freeze and the unfreeze commits carry the messages the lane reads.

tests.test_release_workflow_steps.test_bump_version_step(project, monkeypatch, allowed)[source]ΒΆ

An allowed bump relocks before its pull request, a stale one closes.