Skip to content

fix: support full null runtimes - #200

Merged
lmajano merged 1 commit into
developmentfrom
fix/full-null-support
Aug 29, 2026
Merged

fix: support full null runtimes#200
lmajano merged 1 commit into
developmentfrom
fix/full-null-support

Conversation

@elpete

@elpete elpete commented Aug 23, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • distinguish absent optional values from real nulls before dereferencing TestBox configuration and lazy services
  • preserve default coverage, discovery, runner, metadata, and mock-generation behavior when full null support is enabled
  • add an Adobe 2023 full-null CI job alongside the existing engine matrix

Regression coverage

  • adds FullNullSupportTest, which exercises the public BaseSpec helper APIs and TestBox.dryRun without URL filters
  • adds public CoverageService option-default coverage for omitted nested settings
  • both specs reproduce failures seen while enabling Quick full-null coverage before the source guards are applied

Validation

  • Lucee 6, full null: 415 passed, 0 failed, 0 errored, 22 skipped
  • Lucee 6, standard null behavior: 415 passed, 0 failed, 0 errored, 22 skipped
  • cfformat check passed for all changed CFML files
  • git diff --check passed

Supports the full-null engine matrix work in coldbox-modules/quick#312.

@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown

lucee@7 21 fullNull=false Test Results

0 tests   0 ✅  0s ⏱️
0 suites  0 💤
0 files    0 ❌

Results for commit 50db0b6.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown

lucee@6 21 fullNull=false Test Results

0 tests   0 ✅  0s ⏱️
0 suites  0 💤
0 files    0 ❌

Results for commit 50db0b6.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown

boxlang@be 21 fullNull=false Test Results

  1 files   30 suites   8s ⏱️
737 tests 716 ✅ 21 💤 0 ❌
754 runs  722 ✅ 32 💤 0 ❌

Results for commit 50db0b6.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown

boxlang@1 21 fullNull=false Test Results

  1 files   30 suites   8s ⏱️
737 tests 716 ✅ 21 💤 0 ❌
754 runs  722 ✅ 32 💤 0 ❌

Results for commit 50db0b6.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown

boxlang-cfml@1 21 fullNull=false Test Results

  1 files   30 suites   10s ⏱️
738 tests 717 ✅ 21 💤 0 ❌
754 runs  723 ✅ 31 💤 0 ❌

Results for commit 50db0b6.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown

adobe@2023 21 fullNull=false Test Results

0 tests   0 ✅  0s ⏱️
0 suites  0 💤
0 files    0 ❌

Results for commit 50db0b6.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown

adobe@2023 21 fullNull=true Test Results

0 tests   0 ✅  0s ⏱️
0 suites  0 💤
0 files    0 ❌

Results for commit 50db0b6.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 23, 2026

Copy link
Copy Markdown

adobe@2025 21 fullNull=false Test Results

0 tests   0 ✅  0s ⏱️
0 suites  0 💤
0 files    0 ❌

Results for commit 50db0b6.

♻️ This comment has been updated with latest results.

@lmajano
lmajano merged commit 0cb2921 into development Aug 29, 2026
27 checks passed
lmajano added a commit that referenced this pull request Aug 29, 2026
#202)

Reported by the maintainer running ./testbox/run --stream --verbose
against BoxLang v1.17.0+58: every CLI run crashed immediately after
the recent CLI-runner fix (#201) cleared the way to reach this code,
with:

  KeyNotFoundException: The requested key [url] was not located in
  any scope or it's undefined
    at ...ScriptingRequestBoxContext.scopeFind
    at ...Testbox$cfc.invokeFunction_runRaw(TestBox.cfc:408)

Root cause: runRaw() and dryRun() unconditionally reference the `url`
scope to support web-request query-string test filters (?testBundles=,
?testSuites=, etc.). The `url` scope only exists in a real HTTP
request context - it is never registered at all when TestBox runs via
the BoxLang CLI. #200 ("support full null runtimes") added a
`structKeyExists( url, "testBundles" )` guard, but that doesn't help
here: resolving the bare `url` identifier itself is what throws -
structKeyExists() never gets a chance to run, since BoxLang has to
look up `url` as a scope before it can pass it as an argument.

Fix: skip these URL-based filter blocks entirely when
variables.IS_CLI is true (already computed at class init). CLI users
already have --filter-bundles/--filter-suites/--filter-specs for the
same purpose via BoxLangRunner.bx, so nothing is lost.

Verified locally against BoxLang v1.17.0+58: reproduced the exact
reported crash against the real merged development branch first
(structKeyExists guard included), then confirmed the fix with the
maintainer's exact command (./testbox/run --streamingj --verbose,
4/4 clean runs), plus --dry-run and --stream, which exercise both
patched call sites (runRaw() and dryRun()).

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants