You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
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:
bash bin/build-plugins.sh to produce dist/plugins/push-md.zip.
Install that zip on a fresh Playground site (a blueprint step that installs the artifact, rather than mounting source).
Run the existing import/push flow: git clone …/wp-json/git/v1/md.git, edit a post/*.md, commit, git push.
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.
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.shboots Playground against the live source, not the release artifact:So the e2e flow runs with:
Nette\…,League\…, …), where inline qualified references resolve fine, andphp-toolkit/vendor/composer/*classmap.bin/build-plugins.shproduces the scopeddist/plugins/push-md.zip, but it's only checked structurally bybin/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:
bash bin/build-plugins.shto producedist/plugins/push-md.zip.git clone …/wp-json/git/v1/md.git, edit apost/*.md, commit,git push.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
inspect-push-md-zip.sh(rejects in-class traituseof a scoped name missing a leading backslash). This issue is about the functional gate that a static grep can't cover.Follow-up to #69 / #68.