Skip to content

v3.1 internal refactor: replace WireBox/TestBox, decompose init#1883

Merged
bpamiri merged 12 commits intodevelopfrom
feat/v3.1-internal-refactor
Feb 21, 2026
Merged

v3.1 internal refactor: replace WireBox/TestBox, decompose init#1883
bpamiri merged 12 commits intodevelopfrom
feat/v3.1-internal-refactor

Conversation

@bpamiri
Copy link
Collaborator

@bpamiri bpamiri commented Feb 21, 2026

Summary

  • Replace WireBox and TestBox with lightweight bundled alternatives, removing external dependencies
  • Decompose monolithic init process, parameterize migrations, and fix test errors
  • Use closures in runner.cfm for Adobe CF compatibility
  • Update CI/CD workflows (release, release-candidate, tests, changelog, version-bump)

Test plan

  • Verify framework boots without WireBox/TestBox dependencies
  • Run full test suite across Lucee and Adobe engines
  • Confirm migrations run correctly with parameterized approach
  • Validate CI workflows trigger and pass on push

🤖 Generated with Claude Code

bpamiri and others added 11 commits February 12, 2026 09:57
Remove Ortus Solutions dependencies (WireBox DI container and TestBox
package) to eliminate external dependency management issues across the
8-engine test matrix. Replace with:

- Injector.cfc: Lightweight DI container with map/to/asSingleton API,
  self-registers as application.wirebox for backward compatibility
- Bindings.cfc: DI binding configuration (global, eventmethods, ViewObj)
- wheels/testbox/: Bundled TestBox subset with BDD runner, reporters,
  and minimal globber for bundle discovery

Components (Controller, Model, Test, Dispatch, onapplicationstart) now
create Plugins directly via `new wheels.Plugins()` instead of relying on
WireBox property injection, matching the pattern already used by
EventMethods.cfc.

All box.json files updated to remove testbox/wirebox dependencies.
Application.cfc templates updated to use new Injector.
Test runners updated to reference bundled testbox path.

Verified: tests match baseline exactly (81 bundles, 1723 specs, 0
failures) across Lucee 5, Lucee 6, H2, MySQL, and PostgreSQL.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ons, fix test errors

- Remove legacy core/tests/ directory (old RocketUnit structure, unused)
- Rename $wbMixer marker to $mixed in MixerUtil.cfc
- Organize Global.cfc with clear section markers (cache, factory, routing,
  text, datetime, request, params, misc, cors)
- Decompose onapplicationstart.cfc settings into 7 init includes:
  caching, security, debugging, orm, views, formats, functions
  (reduces from ~1017 to ~291 lines)
- Parameterize addRecord/updateRecord in Migration.cfc using
  queryExecute with bound parameters instead of string concatenation
- Add $executeWithParams helper to migrator Base.cfc
- Add MockBox + mockutils to bundled TestBox (fixes 53 mapper spec errors)

Test results: 81 bundles, 1723 specs, 0 failures, 0 errors across
H2, MySQL, and PostgreSQL on Lucee 6.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adobe ColdFusion statically registers all function definitions from
included .cfm files at CFC compile time. Since runner.cfm is included
from multiple Public.cfc methods (directly and via views/runner.cfm),
Adobe throws DuplicateFunctionDefinitionException.

Convert setTestboxEnvironment and $duplicateWheelsEnvironment from
named private functions to variables-scoped closures, which don't
get registered in the CFC's function table.

Tested: Lucee 5/6/7, Adobe 2023/2025, BoxLang — 0 failures, 0 errors.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Resolve conflicts by keeping v3.1 refactored approach (decomposed init
includes, no wirebox/testbox deps) while preserving authenticateThis
plugin addition from develop.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@github-actions github-actions bot added enhancement dependencies Pull requests that update a dependency file labels Feb 21, 2026
The Oracle JDBC download URL in tests.yml was replaced with literal
"..." causing all Adobe CF engine tests to fail. The other workflow
files had similar issues with paths changed to reference root box.json
that doesn't exist. Restoring correct templates/base/src/ paths.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@bpamiri bpamiri merged commit 815b535 into develop Feb 21, 2026
85 of 86 checks passed
@bpamiri bpamiri deleted the feat/v3.1-internal-refactor branch February 21, 2026 04:58
@bpamiri bpamiri restored the feat/v3.1-internal-refactor branch February 21, 2026 05:56
@bpamiri bpamiri deleted the feat/v3.1-internal-refactor branch February 21, 2026 05:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file enhancement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant