Repository navigation
ci(cron-conda): gate conda-tag and conda-dist on a dev-release version - #2463
Conversation
|
Cross-review (different model, adversarial) came back NEEDS CHANGES. The gate logic itself is verified correct (288-state evaluation, zero regressions), but:
Dispatching a fix to this branch now. |
7ae0d43 to
27f36f9
Compare
|
Fixed and verified directly (new head |
|
Cross-review (different model, adversarial), round 3, came back NEEDS CHANGES. The report fix itself is verified correct for the real scenarios — but 3 mutations survive because the test suite only checks the "should explain" case, never the "should stay quiet" case:
Also: the commit message/PR body claim "55 passed, 118 subtests" — measured 42/102 for this round's actual diff (the higher count looks like it picked up a stale copy of an earlier round's test file). The PR body is also out of date (still describes an earlier round's scope). Dispatching a fix now. |
27f36f9 to
6092919
Compare
|
Fixed and verified directly (new head |
|
Round 5: wording-only fix needed — commit claims mypy clean, but it isn't on the 2458 test file (15 attr-defined + 3 unused-ignore, pre-existing pattern, not CI-gated). Fixing the claim. |
#2458) Mirror create-release.yml's #2452 dev-release gate in cron-conda.yml, which has its own independent, schedule/workflow_run-reachable route to publishing with no check against __version__ carrying a PEP 440 .devN suffix. - conda-update's Get Version step computes PCAPKIT_DEV_RELEASE from packaging.version.Version(...).is_devrelease, deliberately not is_prerelease, which is also true for a real alpha/beta/rc this project has shipped and must not block. - conda-tag's `if:` adds the clause as a top-level conjunct; conda-dist's adds it inside its publishing branch only, so a build-only manual run still builds and smoke-tests a dev version without uploading it. - discussion's "Post the report to Discussions" step now tells "nothing pushed" apart from "a dev-release build was pushed but Tag/Upload were withheld on purpose", instead of silently dropping both lines; the stale "Both skip unless a build was pushed" comment is corrected. - Comments describing #2452's create-release.yml gate as already merged are reworded to "proposed ... (not yet merged)". - test_conda_dev_release_gate_2458.py gains two inputs (1.6.0rc1.dev2, 1.6.0.post1.dev0) that close two narrowed-predicate mutations a cross-review found surviving; test_cron_reports_2030.py gains coverage for the new report line, plus three rows closing round 3's remaining gaps -- CONDA_CHANGED=false with DEV_RELEASE=true, DEV_RELEASE=false, and DEV_RELEASE='' on a pushed build -- each confirmed to kill its own widened-predicate mutant of the explanation line's elif guard. actionlint 1.7.12 (shellcheck 0.10.0): zero findings. Both test files: 43 passed, 105 subtests passed, including the new report and mutation-closing cases; pylint clean on both files; mypy clean on test_cron_reports_2030.py (the 2458 file carries the same pre-existing attr-defined/unused-ignore pattern as sibling tests, not CI-gated).
6092919 to
1cf10db
Compare
|
Wording-only fix confirmed (zero file diff). Good to go. |
Please follow the guide below
make pylint,make mypy,make isort) --tests/project/test_isort_clean.pypasses; no other lint run (advisory in CI)make testpasses, and a test case covers the change --tests/project/test_conda_dev_release_gate_2458.py(new) andtests/project/test_cron_reports_2030.py;tests/project/test_release_gates.pyand every otherconda-*test file still pass unmodifieddocs/source/changelog/and regeneratedCHANGELOG.md, if the change is user-visible -- not applicable here; out of scope for this PRWhat is the purpose of your pull request?
ci-- workflows or build toolingDescription of your pull request and other information
Closes #2458.
.github/workflows/create-release.yml's publishers are being gated on a dev-release version by #2452's (proposed, not yet merged) owner ruling:__version__carrying a PEP 440 dev-release suffix (X.Y.Z.devN) is a work-in-progress signal, and that workflow'sworkflow_runtrigger means a scheduled Vendor Update can reach it and publish that version with no human in the path..github/workflows/cron-conda.ymlhas its own independent route to publishing:conda-tagpushes aconda-<version>+<build>tag andconda-distuploads to anaconda.org, both whenevermode'spublishesoutput is'true'andconda-update'sCONDA_CHANGEDis'true'-- reachable the same way from its ownschedule/workflow_runtriggers, and until now with no dev-release check of its own. This PR:PCAPKIT_DEV_RELEASEtoconda-update'sGet Versionstep, frompackaging.version.Version(...).is_devrelease(deliberately notis_prerelease, which a shipped alpha/beta/rc also satisfies).conda-tag'sif:on it as a top-level conjunct, andconda-dist's inside its publishing branch only, so a build-only manual run still builds and smoke-tests a dev version without uploading it.discussionjob's "Post the report to Discussions" step explain a pushed-but-withheld dev-release build ("Tag: skipped, and Upload: skipped -- ... withheld both deliberately") instead of silently dropping the Tag/Upload lines, so "nothing was pushed" and "a dev build was pushed but withheld" read differently.Test plan
tests/project/test_conda_dev_release_gate_2458.py(new): theif:conditions, behavioural rows throughjob_runs/conda_context, and the realGet Versionscript against a1.5.0b14stub vs dev-suffixed stubs.tests/project/test_cron_reports_2030.py: the dev-release explanation line, plus rows pinning it silent wheneverCONDA_CHANGEDorDEV_RELEASEis not literally'true'(including an emptyDEV_RELEASE).actionlint1.7.12 (shellcheck 0.10.0): zero findings oncron-conda.yml.