Hi folks,
TL;DR: If tests haven't run at all on a PR, use /test all. /retest and /retest-required only act on jobs that have already run.
A quick note on the differences between Prow's test trigger commands, since this recently caused confusion with the dependabot auto-merge setup.
We introduced automatic labeling and merging for dependabot PRs in
https://github.com/kubevirt/project-infra/pull/4896. The commenter periodic was using /retest-required to trigger tests, but this turned out to be a no-op -- as seen on
https://github.com/kubevirt/project-infra/pull/4924, where tests were only triggered after a human manually approved the PR. The fix is in
https://github.com/kubevirt/project-infra/pull/4945.
Here's the breakdown:
* /test all - triggers all matching presubmit jobs unconditionally, whether they've run before or not.
* /retest - re-triggers jobs that have failed, plus automatic jobs that haven't run yet.
* /retest-required - re-triggers only required jobs that have failed. Optional jobs and jobs that haven't run are skipped entirely. If nothing has failed, this command does nothing.
Why this matters for reviewers and approvers: PRs from untrusted users (external contributors, bots like dependabot) don't get tests auto-triggered by Prow. If you're reviewing such a PR and see no test results, commenting /retest-required won't help -- there are no failed jobs to retest. Use /test all to kick off the initial test run.
How to tell if tests actually ran: GitHub's PR status area can be misleading here. GitHub shows two different things that look similar but have different sources:
* "Expected" checks (shown with a yellow dot) come from branch protection rules. These are always shown for every PR regardless of whether any test has been triggered. They tell you what's required, not what's running.
* Actual commit statuses (shown as pending/success/failure with a details link) come from Prow reporting back. These only appear once a job has actually been triggered.
If you see only "Expected" checks with no details links, no tests have run -- branch protection is just listing what it's waiting for. This is the situation where /retest-required does nothing and you need /test all.
Thanks,