From b005d7e8d40e4b648d34e2d075e5c71ce830d387 Mon Sep 17 00:00:00 2001 From: Tony Hegyes <36231502+ahegyes@users.noreply.github.com> Date: Mon, 9 Nov 2026 16:25:53 +0100 Subject: [PATCH 1/2] Give the stubbed update checks the keys the theme check reads The admin-request harness answered WordPress.org's update checks with an empty JSON object. wp_update_themes() reads themes, no_update and translations from any array it decodes without checking them, so on a site whose theme update transient was stale, as every fresh CI site's is, each admin request warned three times and failed its test: trunk's Tests run on the merge of #70 failed one row in Integration, the multisite lane and the lowest lane. The core check returns without offers and the plugin check skips an empty array, so only the theme check warned, and local runs whose transients were fresh never ran it. The reply carries empty plugins, themes, no_update and translations, which every check reads as no updates. Assisted-by: Claude Code:claude-opus-5-5 --- tests/Integration/Support/admin-request.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/Integration/Support/admin-request.php b/tests/Integration/Support/admin-request.php index 4617ecf..09c2c27 100644 --- a/tests/Integration/Support/admin-request.php +++ b/tests/Integration/Support/admin-request.php @@ -103,11 +103,11 @@ static function ( int $level, string $message, string $file, int $line ) use ( & 'accepted_args' => 0, ); -// WordPress's update checks give WordPress.org a few seconds and warn when it answers late, which would fail the request's test, so they read an answer with no updates. +// WordPress's update checks give WordPress.org a few seconds and warn when it answers late, which would fail the request's test, so they read an answer listing no updates, with every key wp_update_themes() reads unguarded. $wp_filter['pre_http_request'][10][] = array( // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Hooks the request before WordPress loads. 'function' => static fn ( mixed $response, array $args, string $url ): mixed => 1 === preg_match( '#^https?://api\.wordpress\.org/(core/version-check|plugins/update-check|themes/update-check)/#', $url ) ? array( 'headers' => array(), - 'body' => '{}', + 'body' => '{"plugins":[],"themes":[],"no_update":[],"translations":[]}', 'response' => array( 'code' => 200, 'message' => 'OK', From 73d9213e60bc12665ddb85a18544d0e57abe4e80 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Nov 2026 15:15:29 +0000 Subject: [PATCH 2/2] Bump actions/upload-artifact Bumps the github-actions group with 1 update: [actions/upload-artifact](https://github.com/actions/upload-artifact). Updates `actions/upload-artifact` from 7.0.1 to 7.0.2 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/043fb46d1a93c77aae656e7c1c64a875d1fc6a0a...cf430e030ddbb5b0abf93d22962f4752f3646cd9) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: 7.0.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: github-actions ... Signed-off-by: dependabot[bot] (cherry picked from commit dbc6d1c4895876f2151f7dcd3295ecf181bce256) --- .github/workflows/quality.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 4498ca5..5d3394d 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -60,7 +60,7 @@ jobs: # A release ships neither config, and Plugin Check flags scoper.inc.php's missing direct-access guard. - name: Upload the build - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 with: name: consumer-a path: |