|
1 | | -# Testing Instructions: Restore Repository Lint Gate (#750) |
| 1 | +# Testing Instructions: PR #842 CI Gate Fix (REST URL imports through the import-url ability) |
2 | 2 |
|
3 | | -## What Changed |
| 3 | +## What this change does |
4 | 4 |
|
5 | | -1. Restored `review lint` alongside `review test` in the Homeboy CI matrix. |
6 | | -2. Applied PHPCBF to current production PHP, resolving 4,021 mechanical findings introduced before the gate was restored. |
7 | | -3. Recorded the remaining 237 findings in Homeboy's repository baseline so unchanged debt passes and new findings fail the gate. |
8 | | -4. Removed the stale PHPStan baseline entry for the deleted transformer adapter. |
9 | | -5. Dropped the unsupported second argument to `ArtifactCompiler::compile()` while retaining `compiler_options` as an explicitly diagnosed compatibility no-op. |
10 | | -6. Preserved the resumable import and SVG font behavior merged after the contributor branch was opened. |
| 5 | +PR #842 routes URL-only REST imports through the canonical `static-site-importer/import-url` ability and adds REST-coverage smoke tests. CI was red on three independent failures. This follow-up fixes all three so the PR can merge. |
11 | 6 |
|
12 | | -## Verification |
| 7 | +## The three CI fixes |
| 8 | + |
| 9 | +1. **PHPStan `method.unused`** — `Static_Site_Importer_URL_Import_Runtime::resolve_provider_output()` was dead code orphaned by the issue #837 refactor (`import_url()` already inlines the provider-output call). Deleted the method and its docblock. |
| 10 | + |
| 11 | +2. **PHPStan `argument.type`** — the new REST caller passed a function-name string literal to `static_site_importer_rest_execute_import_ability()`, whose docblock declared the param `callable-string`. PHPStan could not prove the literal names a defined function. Kept the runtime type as `string` (the function body resolves it via `call_user_func`), widened the docblock to `string`, and added a `@phpstan-ignore-next-line argument.type` at the single new call site. The two pre-existing callers are untouched and now match the docblock. |
| 12 | + |
| 13 | +3. **Homeboy test sidecar schema** — not repo-introduced. Homeboy core 0.331.0 added strict validation that requires the `test.failures` sidecar to be a JSON array, but the `wordpress` extension's wp-codebox adapter still emits an object sidecar. Pinned the homeboy **core** version to `0.330.0` (last known-good) on both `homeboy-action` steps in `.github/workflows/test.yml`. The action SHA stays pinned. This pin should be removed once the `Extra-Chill/homeboy-extensions` adapter ships an array-shaped sidecar. |
| 14 | + |
| 15 | +## Local verification (CI-exact where possible) |
13 | 16 |
|
14 | 17 | ```bash |
15 | | -homeboy review lint --summary |
| 18 | +# PHP syntax on the two changed PHP files (PHP 8.1+). |
| 19 | +php -l includes/class-static-site-importer-url-import-runtime.php |
| 20 | +php -l includes/rest.php |
| 21 | + |
| 22 | +# Standalone smokes affected by the change (PHP 8.2 per the CI matrix minimum). |
| 23 | +php tests/smoke-url-import-runtime.php |
| 24 | +php tests/smoke-rest-url-import-helpers.php |
| 25 | + |
| 26 | +# Test inventory integrity + runtime package manifest contract. |
| 27 | +npm run test:inventory |
| 28 | +npm run test:runtime-package |
| 29 | + |
| 30 | +# Fast lane: standalone PHP + Node tests. |
16 | 31 | npm test |
17 | | -for file in static-site-importer.php includes/*.php; do php -l "$file" >/dev/null || exit 1; done |
18 | 32 | ``` |
19 | 33 |
|
20 | 34 | Expected results: |
21 | 35 |
|
22 | | -- Homeboy lint passes with no drift from the 237-finding baseline. |
23 | | -- The test manifest passes 42 selected checks: 34 standalone PHP and eight Node lanes. |
24 | | -- Every production PHP file passes syntax validation. |
| 36 | +- `php -l` reports no syntax errors on both files. |
| 37 | +- `tests/smoke-url-import-runtime.php` prints `URL import runtime smoke passed (20 assertions).` |
| 38 | +- `tests/smoke-rest-url-import-helpers.php` prints `REST URL import helper smoke passed (28 assertions).` |
| 39 | +- Inventory and runtime-package checks pass clean. |
| 40 | +- `npm test` reports `passed: 46` standalone+node lanes. The three `wordpress-runtime` smokes this PR adds are skipped locally (they require a live WordPress site); they run in CI. |
| 41 | + |
| 42 | +Note: the node test `tests/form-materializer-topology.test.mjs` ("Jetpack runtime preparation tolerates optional APIs missing from older versions") fails on `main` too. It is a pre-existing test/code mismatch unrelated to this change. |
| 43 | + |
| 44 | +## Manual smoke (the three wordpress-runtime REST tests) |
| 45 | + |
| 46 | +These are not run automatically in CI's standalone lane. Run them on a WordPress site with the plugin active: |
| 47 | + |
| 48 | +```bash |
| 49 | +wp eval-file tests/smoke-rest-url-import-via-ability.php |
| 50 | +wp eval-file tests/smoke-rest-url-import-continuation.php |
| 51 | +wp eval-file tests/smoke-rest-url-import-private-ip.php |
| 52 | +``` |
| 53 | + |
| 54 | +Each should print a `... passed (N assertions).` line and exit 0. |
| 55 | + |
| 56 | +## CI |
| 57 | + |
| 58 | +After push, the following must all pass: |
| 59 | + |
| 60 | +- `Homeboy Lint` (PHP 8.2) — with the homeboy core pin, the sidecar regression is bypassed and PHPStan runs clean on the changed files. |
| 61 | +- `Homeboy Test (PHP 8.1 / 8.2 / 8.3 / 8.4)` — all four matrix jobs pass. |
| 62 | +- `Solved site promotion gate` — unaffected, already passing. |
| 63 | + |
| 64 | +## Rollback |
25 | 65 |
|
26 | | -## Ratcheting |
| 66 | +Each fix is small and independent. To revert: |
27 | 67 |
|
28 | | -When existing findings are repaired, run `homeboy review lint --ratchet` to remove resolved fingerprints from `homeboy.json`. New findings fail CI without requiring the existing debt to be repaired in the same change. |
| 68 | +- Restore `resolve_provider_output()` from git history if anything depends on it (nothing in-repo does). |
| 69 | +- Remove the `@phpstan-ignore-next-line` and the docblock widening if the PHPStan rule is reconfigured upstream. |
| 70 | +- Remove the `version: 0.330.0` lines from `.github/workflows/test.yml` once the homeboy-extensions sidecar is array-shaped. |
0 commit comments