Repository navigation
Conversation
|
Hi there, @MohamedRF! 👋 Thank you for sending this PR! We expect the following in all Pull Requests (PRs).
Important We expect all code changes or bug-fixes to be accompanied by one or more tests added to our test suite to prove the code works. If pull requests do not comply with the above, they will likely be closed. Since we are a team of volunteers, we don't have any more time to work See https://github.com/codeigniter4/CodeIgniter4/blob/develop/contributing/pull_request.md |
| { | ||
| parent::setUp(); | ||
|
|
||
| if (PHP_OS_FAMILY === 'Windows') { |
| { | ||
| // Bound the command so a scheduler regression fails instead of hanging PHPUnit. | ||
| exec(sprintf( | ||
| 'GITHUB_ACTIONS=true timeout --kill-after=1s 5s bash %s --max-jobs %d --repeat 2 --timeout 0 2>&1', |
There was a problem hiding this comment.
why do you need to set GITHUB_ACTIONS env explicitly here?
| { | ||
| // Bound the command so a scheduler regression fails instead of hanging PHPUnit. | ||
| exec(sprintf( | ||
| 'GITHUB_ACTIONS=true timeout --kill-after=1s 5s bash %s --max-jobs %d --repeat 2 --timeout 0 2>&1', |
There was a problem hiding this comment.
timeout is unavailable on my macos. can this unconditional timeout be tested for availability first, then for gtimeout, then skip if none available?
Description
Running
.github/scripts/run-random-tests.sh --max-jobs 1hangs before starting PHPUnit. When no child processes remain,cleanup_finished_pids()assigns("${active[@]:-}"), creating an array with one empty element. The scheduler counts that element as an active job and waits indefinitely.Keep the process list empty when there are no active PIDs. Add
RunRandomTestsTesttotests/system/AutoReview/, following the existing script-test convention. Each case builds an isolated temporary project with two stub components and calls the runner throughexec(), checking its exit code, success output, and two executions per component. The data provider covers job limits of one and two. A five-secondtimeoutwith a one-second kill grace prevents a regression from hanging PHPUnit; the temporary project is removed in teardown. The existing AutoReview workflow discovers the test without workflow changes.Refs #9968. This fixes the runner rather than completing the component migration tracked by that issue.
Validation
vendor/bin/phpunit tests/system/AutoReview/RunRandomTestsTest.php --no-coverage: 2 tests, 12 assertions pass.git diff --checkpasses.Checklist: