feat: add bashunit and rename Python test component
Plan
- Add a bashunit component with the Python test component's configurable job, discovery, and JUnit-report inputs; include a pinned, checksum-verified runner in the tools image.
- Rename python-unit-tests to python-unittest, including child CI and migration guidance for the default job and report names.
- Verify passing/failing suites, discovery boundaries, documentation examples, and complete required catalog CI.
Acceptance criteria
- bashunit discovers configured files and publishes JUnit results; assertion failures retain a report and fail the job by default.
- name, image, stage, needs, allow-failure, path, pattern, junit-report, and rules are configurable.
- Default tools image installation pins bashunit 0.52.0 and verifies the official release checksum.
- The Python component, fixture paths, and catalog test registration use python-unittest; migration guidance covers renamed job/report defaults.
- Eight real-runner regressions pass, covering both frameworks, failure reports, custom discovery, filenames with spaces, empty matches, missing directories, and the documented Python default-discovery example.
- Markdown, spelling, generated-document rendering, MDX table safety, Bash/YAML syntax, and final diff checks pass locally.
- Complete required current-head catalog pipeline succeeds, including actual tools-image build and both component child pipelines.
- Final rebase/DoD and deterministic review selection are complete.
Validation and queue
Ran the real bashunit release after checking its published SHA-256, the component scripts against real bashunit/unittest-xml-reporting, all workflow-trunkbased local regressions, generated documentation checks, Markdown lint and Vale. No required check is waived.
Source de8a7c55 passed complete required MR CI. The actual checksum-verified tools-image build, all eight real-runner regressions, both component test jobs and both JUnit assertion jobs succeeded. All catalog root jobs and component child bridges passed, including connected workflow integration checks. Fetched, fast-forwarded and rebased against current main without changing the validated SHA; reviewed the final scoped diff. All MR notes and discussion pages are inspected and no feedback is unresolved. DoD is met. The deterministic helper selected owner as the linked work-item author; its apply pass revalidated the choice and requested human review.
The approval-policy regression tracked by #418 (closed) is fixed by merged !586 (merged). This branch is rebased onto that main revision; its five/six-approver fixture now comes from main, without an additional runtime-policy change.
Breaking change: replace includes of python-unit-tests with python-unittest; the default job/report names change with the component. Explicit name and junit-report inputs preserve old job/report names when needed.
Closes #421 (closed)
Related to #418 (closed)