test: Add a §2 task parameter type case-insensitivity fixture - #166
Conversation
There was a problem hiding this comment.
Quorum verdict: GOOD-WITH-NITS — spec: §2.13 + EL §1.2.1 (LIST[INT] element bound). Matches sweep (fails BOTH — say so; README says 'the current openjd CLI' without attribution). Nits: only fixture family in the five PRs without in-file header comments — add one (the bound comes from the EL type table, not §2.13); carry the same 'pending restoration of the RFC 0005 overflow text' hedge the expr-lang README uses for the identical bound. Accept twin: PR #158's 2.13--list-int-item-int64-max.
|
Quorum review (5 independent agents). 5 fixtures + 2 READMEs. Net: 3 GOOD, 2 GOOD-WITH-NITS. This branch's kind-level placement (EXPR/job_templates/proposed/, base/job_templates/proposed/) is the better convention of the two in use — promotion is 'move up one directory unchanged' — and the quorum recommends the other four expected-failures branches adopt it. Actions: dedupe 2--type-lowercase-string against PR #163's identical fixture; add per-implementation attribution to the README (sweep shows several entries fail BOTH or rs-only where the README is vague); add the missing header comments to the two list-overflow fixtures and carry the same spec-restoration hedge the expr-lang README uses for the identical int64 bound. |
04735b7 to
2cb3fca
Compare
|
Quorum-review fixes applied and pushed (rebased onto mainline 3069673):
|
2cb3fca to
5c64d8d
Compare
Template Schemas §2 makes job and task parameter type names case-insensitive when EXPR is enabled. The case was implemented for job parameter types only, so a task parameter spelled `type: int` was rejected. Both implementations have since merged the fix: openjd-rs #364 and openjd-model-for-python #350. The fixture runs as an ordinary conformance test rather than being parked. It covers the four task parameter types of §3.4.1 in mixed case. It fails on both lanes until those fixes are released, because the runner installs published artifacts: `pip install openjd-cli` resolves openjd-model 0.11.9, which predates #350, and `cargo install openjd-cli` resolves 0.1.14, which predates #364. Measured against both. Neither release is queued. Also drops the three fixtures this branch parked in proposed/, and that directory's README. They pinned int64 bounds in list elements and a range endpoint, all still failing in one or both implementations, and are better raised on their own once those bugs are fixed than carried here. Signed-off-by: David Leong <116610336+leongdl@users.noreply.github.com>
5c64d8d to
7867d34
Compare
Adds one conformance fixture:
2023-09/EXPR/job_templates/3.4.1--task-param-type-case-insensitive.yaml.What it pins
Template Schemas §2 makes job and task parameter type names case-insensitive when the EXPR extension is enabled. The case was implemented for job parameter types only, so a task parameter spelled
type: intwas rejected with EXPR declared:The fixture covers the four task parameter types of §3.4.1 —
int,Float,sTrInG,pAtH— and must validate.Status: red until two releases ship
Both implementations have merged the fix, and neither has released it:
pip install openjd-cli→ openjd-model 0.11.9cargo install openjd-cli→ 0.1.14Measured, not inferred: the released Python CLI rejects the fixture, and a build of openjd-rs
mainaccepts it.Neither release is queued, and each needs a deliberate act:
release_bump.yml(manualworkflow_dispatch), which lands a CHANGELOG bump on mainline and triggers publish.Once both are on PyPI and crates.io, this goes green with no further change here.
Changes from the previous revision
This branch previously parked four fixtures under
job_templates/proposed/, which the runner does not scan — collection uses a non-recursivedirectory.glob("*.yaml")per kind directory, so nothing inproposed/ever ran.The case-insensitivity fixture is now an ordinary conformance test, and
proposed/plus its README are gone. The branch is also rebased onto mainline, which clears an unrelated failure: it carried the pre-rename3.5--env-script-onexit-only.invalid.yaml, corrected upstream in 563c6ec.The other three parked fixtures were dropped rather than promoted, because each still fails:
main2.10--range-expr-endpoint-int64-max2.13--list-int-item-int64-overflow.invalid2.16--list-list-int-inner-item-int64-overflow.invalidThey pin genuine int64-bound defects — bounds are enforced for expression literals but not for values arriving as YAML data — and the two
.invalidones additionally depend on restoring the overflow-is-an-error text that was dropped from the published spec. Better raised on their own once those are addressed than carried in a PR that is otherwise ready.Not covered, and worth adding
Nothing in the suite pins the other half of §2: that a lowercase task parameter type is still rejected without EXPR. Both implementations gate the fold on the extension, so a regression dropping that gate would pass the whole suite.