|
80 | 80 | name: Run Tests |
81 | 81 | runs-on: ubuntu-latest |
82 | 82 | strategy: |
| 83 | + fail-fast: false |
83 | 84 | matrix: ${{ fromJson(needs.resolve_php.outputs.test-matrix) }} |
84 | 85 | env: |
85 | 86 | TESTS_ROOT_VERSION: ${{ github.event_name == 'pull_request' && format('dev-{0}', github.event.pull_request.head.ref) || 'dev-main' }} |
@@ -119,6 +120,31 @@ jobs: |
119 | 120 | COMPOSER_ROOT_VERSION: ${{ env.TESTS_ROOT_VERSION }} |
120 | 121 | run: composer dev-tools tests -- --coverage=.dev-tools/coverage --min-coverage=${{ steps.minimum-coverage.outputs.value }} |
121 | 122 |
|
| 123 | + - name: Publish required test status |
| 124 | + if: ${{ always() && inputs.publish-required-statuses }} |
| 125 | + env: |
| 126 | + GH_TOKEN: ${{ github.token }} |
| 127 | + TARGET_SHA: ${{ github.sha }} |
| 128 | + TARGET_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} |
| 129 | + TEST_CONTEXT: Run Tests (${{ matrix.php-version }}) |
| 130 | + TEST_RESULT: ${{ job.status }} |
| 131 | + run: | |
| 132 | + if [ "${TEST_RESULT}" = "success" ]; then |
| 133 | + state="success" |
| 134 | + description="Workflow-dispatched PHPUnit job passed." |
| 135 | + else |
| 136 | + state="failure" |
| 137 | + description="Workflow-dispatched PHPUnit job result: ${TEST_RESULT}." |
| 138 | + fi |
| 139 | +
|
| 140 | + gh api \ |
| 141 | + --method POST \ |
| 142 | + "repos/${GITHUB_REPOSITORY}/statuses/${TARGET_SHA}" \ |
| 143 | + -f state="${state}" \ |
| 144 | + -f context="${TEST_CONTEXT}" \ |
| 145 | + -f description="${description}" \ |
| 146 | + -f target_url="${TARGET_URL}" |
| 147 | +
|
122 | 148 | dependency-health: |
123 | 149 | needs: resolve_php |
124 | 150 | name: Dependency Health |
@@ -184,30 +210,22 @@ jobs: |
184 | 210 | if: ${{ always() && inputs.publish-required-statuses }} |
185 | 211 | name: Publish Required Test Statuses |
186 | 212 | needs: |
187 | | - - tests |
| 213 | + - resolve_php |
188 | 214 | runs-on: ubuntu-latest |
189 | 215 | steps: |
190 | | - - name: Mirror required test matrix contexts |
| 216 | + - name: Publish pending required test statuses |
191 | 217 | env: |
192 | 218 | GH_TOKEN: ${{ github.token }} |
193 | 219 | TARGET_SHA: ${{ github.sha }} |
194 | 220 | TARGET_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} |
195 | | - TESTS_RESULT: ${{ needs.tests.result }} |
| 221 | + TEST_MATRIX: ${{ needs.resolve_php.outputs.test-matrix }} |
196 | 222 | run: | |
197 | | - if [ "${TESTS_RESULT}" = "success" ]; then |
198 | | - state="success" |
199 | | - description="Workflow-dispatched PHPUnit matrix passed." |
200 | | - else |
201 | | - state="failure" |
202 | | - description="Workflow-dispatched PHPUnit matrix result: ${TESTS_RESULT}." |
203 | | - fi |
204 | | -
|
205 | | - for context in "Run Tests (8.3)" "Run Tests (8.4)" "Run Tests (8.5)"; do |
| 223 | + php -r "foreach (json_decode(getenv('TEST_MATRIX'), true, 512, JSON_THROW_ON_ERROR)['php-version'] as \$version) { echo \$version, PHP_EOL; }" | while IFS= read -r php_version; do |
206 | 224 | gh api \ |
207 | 225 | --method POST \ |
208 | 226 | "repos/${GITHUB_REPOSITORY}/statuses/${TARGET_SHA}" \ |
209 | | - -f state="${state}" \ |
210 | | - -f context="${context}" \ |
211 | | - -f description="${description}" \ |
| 227 | + -f state="pending" \ |
| 228 | + -f context="Run Tests (${php_version})" \ |
| 229 | + -f description="Workflow-dispatched PHPUnit job is pending." \ |
212 | 230 | -f target_url="${TARGET_URL}" |
213 | 231 | done |
0 commit comments