Skip to content

push-md: e2e suite only exercises the unscoped source, not the built (scoped) zip #70

Description

@robertsreberski

Summary

The push-md e2e suite never functionally imports the built (scoped) plugin zip — it mounts the unscoped source tree directly. This is the testing gap that let the scoping regression in #68 (fixed by #69) ship in v0.6.6 / v0.6.7 uncaught: clone worked, but the first Markdown import/push fataled on the scoped build, and no automated test loaded the scoped artifact.

Details

bin/run-push-md-playground.sh boots Playground against the live source, not the release artifact:

--mount="$ROOT_DIR:/workspace"
--mount="$ROOT_DIR/vendor:/wordpress/wp-content/vendor"
--mount="$ROOT_DIR/components:/wordpress/wp-content/components"
--mount="$ROOT_DIR/plugins/push-md:/wordpress/wp-content/plugins/push-md"

So the e2e flow runs with:

  • the unscoped namespaces (Nette\…, League\…, …), where inline qualified references resolve fine, and
  • the dev bootstrap / composer autoloader, not the generated/scoped php-toolkit/vendor/composer/* classmap.

bin/build-plugins.sh produces the scoped dist/plugins/push-md.zip, but it's only checked structurally by bin/inspect-push-md-zip.sh (file presence + content greps). Nothing ever loads the scoped classes through their autoloader and pushes Markdown, so a scoping bug that fatals at class-load time passes every gate.

Proposed follow-up

Add an e2e path that exercises the built zip:

  1. bash bin/build-plugins.sh to produce dist/plugins/push-md.zip.
  2. Install that zip on a fresh Playground site (a blueprint step that installs the artifact, rather than mounting source).
  3. Run the existing import/push flow: git clone …/wp-json/git/v1/md.git, edit a post/*.md, commit, git push.
  4. Assert success (no bad line length character: <br, no PHP fatal in the receive-pack response).

Wire this into CI (e.g. push-md-e2e.yml) so every change that touches the scoper, prune list, or bundle layout is validated against the shipped artifact.

Notes

  • fix(push-md): fully-qualify scoped inline references in bundle scoper #69 already adds a cheap static canary in inspect-push-md-zip.sh (rejects in-class trait use of a scoped name missing a leading backslash). This issue is about the functional gate that a static grep can't cover.
  • Keep the unscoped-source e2e too (fast inner loop); the scoped-zip run is the release-artifact gate.

Follow-up to #69 / #68.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions