kumarUjjawal opened a new pull request, #25313: URL: https://github.com/apache/datafusion/pull/25313
## Which issue does this PR close? - Part of #21048. The issue stays open for the other checklist items. ## Rationale for this change `.asf.yaml` lists the GitHub Actions jobs that must pass before a PR can merge. If a job is renamed and `.asf.yaml` still requires the old name, PRs wait for a status that never arrives. CI runs `ci/scripts/check_asf_yaml_status_checks.py` in `dev.yml` to catch this, but `dev/rust_lint.sh` does not. A contributor can pass the local lint suite and then see the failure only in CI. This PR adds the existing validator to the local suite. ## What changes are included in this PR? - `dev/rust_lint.sh` runs `ci/scripts/check_asf_yaml_status_checks.py` as a read-only step, after the workflow install check and before the Markdown link check. The `--write` and `--allow-dirty` flags never reach it. - The runner needs `python3` on `PATH` with PyYAML installed. It checks both after argument parsing and before any tool install or formatter, and it reports a distinct error for each missing prerequisite. It does not install Python packages. Help output does not run these checks. - `ci/scripts/check_asf_yaml_status_checks.py` becomes executable, because the runner invokes each registered script directly. The script body, `.asf.yaml`, and the GitHub workflow do not change. - `docs/source/contributor-guide/testing.md` documents the purpose of the check, the Python setup, the standalone command, and the local lint integration. ## What is the testing strategy for this PR? - The real validator passes on this branch through `python3 ci/scripts/check_asf_yaml_status_checks.py` and through direct invocation, with Python 3.14.7 and PyYAML 6.0.3. - Disposable configurations exercised the real validator. A valid configuration passes. A required name with no matching job fails with the existing diagnostic. A name served only by a path-filtered workflow fails, and an added unfiltered workflow makes it pass. - A disposable fixture with stubbed steps and tools exercised the runner. The validator runs once with no arguments in check mode and in both write modes. A missing `python3` and a missing PyYAML each stop the suite with their own error before any tool install or formatter. Help output skips the checks. A validator failure stops the later steps. - A disposable clone with a bogus required name in `.asf.yaml`: `./dev/rust_lint.sh` fails with the validator diagnostic before the link check, and passes again after the file is restored. - The full `./dev/rust_lint.sh` passes on this branch. ## Are there any user-facing changes? No. The local lint suite gains the check and needs Python 3 with PyYAML. CI is unchanged. 🤖 Generated with [Claude Code](https://claude.com/claude-code) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
