Route QA group through the reserved qa= keyword in run_tests#137
Merged
ChrisRackauckas merged 3 commits intoJun 17, 2026
Merged
Conversation
The explicit-args run_tests dispatcher treats "QA" as a reserved group name
that is resolved against the qa= keyword, not looked up in the groups Dict.
Registering it via groups = Dict("QA" => qa_group) left qa unset, so a
GROUP=QA matrix entry hit the reserved-name branch and threw
ArgumentError: GROUP="QA" was requested but no qa body was provided.
Pass the qa_group thunk as qa = qa_group. GROUP=QA and the "Quality"
umbrella alias both resolve to it; GROUP=Core / GROUP=All are unchanged.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The PID_Controller.bmo test fixture uses the standard Modelica LimPID derivative-gain parameter `Nd` (both as the parameter name 'PI.Nd' and in its description string). typos flags `Nd` -> `And`; add it to default.extend-words as a domain false-positive so spellcheck passes. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
`eval_AST(::BaseModelicaWhenEquation)` built the zero-crossing equation
vector as `[crossing ~ 0]`. Because `to_zero_crossing`/`eval_when_rhs`
return a Union that includes a vector arm, `crossing ~ 0` is inferred as
`Union{Equation, Vector{Equation}}`, making `[crossing ~ 0]` an
`Union{Vector{Equation}, Vector{Vector{Equation}}}`. The
`Vector{Vector{Equation}}` arm has no matching `SymbolicContinuousCallback`
method, which JET's report_package flags as a genuine MethodError on the
QA group (Julia 1 = 1.12 channel; this was the single report failing
test/qa/test_jet.jl:12 there, while lts/1.10 did not exercise that arm).
Annotate both SymbolicContinuousCallback zero-crossing literals as
`Equation[crossing ~ 0]` so they are unambiguously `Vector{Equation}`.
A when-condition is always scalar, so this is behavior-preserving for
valid input and removes the spurious method path.
Verified locally on Julia 1.12.6 against the test/qa env: JET
report_package over all 364 top-level definitions now finds 0 reports
("No errors detected"), so test_jet.jl:12 passes. Runic v1.7 reports the
file already formatted.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Problem
The QA matrix entry of
testsCI onmainfails for bothjulia 1andjulia lts:This was introduced by #134, which rewrote
test/runtests.jlto the SciMLTesting v1.2 explicit-argsrun_testsform but registered the QA group viagroups = Dict("QA" => qa_group).In the explicit-args dispatcher,
"QA"(like"Core"/"All") is a reserved group name: whenGROUP=QAis requested it is resolved against theqa=keyword and is not looked up in thegroupsDict. Withqaleft unset (defaultnothing), the reserved-name branch throws.Fix
Pass the existing
qa_groupthunk through the reservedqa=keyword instead ofgroups:GROUP=QAand the"Quality"umbrella alias both resolve toqa_group;GROUP=Coreand the curatedGROUP=All(all = ["Core"]) are unchanged. The prerelease no-op guard insideqa_groupis preserved.Local verification
Against the registered
SciMLTestingv1.2.0 (the build CI resolved) on Julia 1.10, with a stub thunk to exercise the dispatcher:The broken form reproduces the CI error verbatim; the fixed form routes every GROUP correctly.
Runic(v1.7) reportstest/runtests.jlis already formatted.Please ignore until reviewed by @ChrisRackauckas.
🤖 Generated with Claude Code
Follow-up: fix the genuine JET report exposed once the QA group runs (Julia 1.12)
With the QA routing fixed above, the QA matrix entry on the
julia 1channel(now 1.12) actually runs
test/qa/test_jet.jl, which exposed a single genuinereport_packageMethodError in BaseModelica's own source atsrc/evaluator.jl(eval_AST(::BaseModelicaWhenEquation)):Root cause:
to_zero_crossing/eval_when_rhsreturn aUnionwhose vector armmakes
crossing ~ 0inferred asUnion{Equation, Vector{Equation}}, so thearray literal
[crossing ~ 0]isUnion{Vector{Equation}, Vector{Vector{Equation}}}.The
Vector{Vector{Equation}}arm has no matchingSymbolicContinuousCallbackmethod — a real method error on that inferred path.
lts/1.10 didn't exercisethat arm, so it only surfaced on 1.12.
Fix: annotate both
SymbolicContinuousCallbackzero-crossing literals asEquation[crossing ~ 0]so they are unambiguouslyVector{Equation}. Awhen-condition is always scalar, so this is behavior-preserving for valid input
and removes the spurious method path.
Local verification on Julia 1.12.6 against the registered
test/qaenv: JETreport_packageover all 364 top-level definitions now reports 0 errors("No errors detected"), so
test/qa/test_jet.jl:12passes. Runic v1.7 reportssrc/evaluator.jlalready formatted.Please ignore until reviewed by @ChrisRackauckas.