ci(config): smoke test installed wheels-module against clean filesystem (#2208)#2217
Merged
Conversation
…em (#2208) Adds a post-build job to release.yml that installs the just-built wheels-module-*.tar.gz into an isolated LUCLI_HOME, extracts wheels-core-*.zip for WHEELS_FRAMEWORK_PATH, and exercises every template-driven generator against a scratch project. Runs on every develop push (via snapshot.yml -> release.yml) and every main push. Would have caught #1944 (codegen templates unbundled) same-day instead of weeks later. The existing test suite can't surface these regressions because it runs in monorepo mode where Templates.cfc::resolveTemplateDir() falls back to source paths that don't exist in installed distributions. The bash script is runnable locally: bash tools/ci/smoke-test-module.sh <module-tar> <core-zip> Verified locally: 29/29 pass on current snapshot tar; 22/29 fail (exit 1) on a tar with templates/codegen/ stripped, pinpointing the regression.
LuCLI only registers 'wheels migrate' (Module.cfc:222); there is no dbmigrate alias. The MCP tool name (wheels_migrate) was already correct — just the CLI column was wrong. Auto-Migration section (lines 644-648) still references 'wheels dbmigrate diff' which doesn't exist in LuCLI either; that command wiring is a separate investigation, not folded in here.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a CI smoke test that installs the just-built
wheels-module-*.tar.gzinto a clean filesystem location and exercises every template-driven generator against a scratch project. Closes #2208.Would have caught #1944 same-day instead of weeks later. The existing test suite runs in monorepo mode where
Templates.cfc::resolveTemplateDir()falls back to source paths that don't exist in installed distributions, masking packaging regressions.What changed
tools/ci/smoke-test-module.sh— new bash smoke test, runnable locally:.github/workflows/release.yml— newsmoke-test-distributionjob,needs: build. Runs on every develop push (viasnapshot.yml→release.ymlworkflow_call) and every main push. Uses isolatedLUCLI_HOMEso nothing pollutes the runner's home dir.What the smoke test checks
templates/codegen/+ 4 key codegen templates (HelperContent.txt,ModelContent.txt,ControllerContent.txt,ApiControllerContent.txt) are bundled — direct LuCLI: release.yml drops codegen templates — all template-driven generators emit empty output in installed module #1944 assertionlucli modules listsees the installed modulewheels new smokescaffolds a working project (withwheels-coreasWHEELS_FRAMEWORK_PATH)model User name:string email:string— extends Model, hasconfig()controller Users index show— hasfunction indexapi-resource Product name price:decimal— controller atapp/controllers/api/Products.cfcwithrenderWith, model atapp/models/Product.cfchelper formatting truncateText— createsapp/helpers/FormattingHelper.cfcscaffold Post title:string body:text— creates model + controller + views + migrationsnippets auth— createsapp/controllers/Sessions.cfcDeviations from the issue text
extends=\"Model\"+function configon generated model instead ofvalidatesPresenceOf. The currentModelContent.txttemplate doesn't emit validations from typed attrs. Worth a separate issue — the generator behavior is a gap, not a packaging bug.api-resourcenamespaces its controller underapp/controllers/api/(notapp/controllers/).wheels dbmigrate latest— LuCLI only registerswheels migrate, and running migrations requires SQLite JDBC + Lucee server setup duplicatingsnapshot.yml's fast-test. Migration template path is covered because scaffold and api-resource create migrations and we assert their presence.Verification (local)
Used a recent snapshot (
wheels-module-4.0.0-SNAPSHOT+1550.tar.gz) + a fake core zip built fromvendor/wheels/:Placement rationale
Placed in
release.yml(notsnapshot.ymlas the issue suggested) becauserelease.ymlis called bysnapshot.ymland triggered directly on main push — one job, both paths. Runs post-hoc to the existing publish step: if a regression ships to snapshot-artifacts, the next develop push's required check fails. A true gate (splittingbuildintobuild → smoke → publish) is a bigger refactor worth doing separately.Test plan
smoke-test-logsartifact on a failing scenario (would need a follow-up regression test to validate)