Skip to content

ci: add a non-blocking Windows test leg to Experimental Tests (#2060) - #2095

Merged
JarryShaw merged 1 commit into
mainfrom
ci/2060-windows-test-leg
Oct 23, 2026
Merged

JarryShaw merged 1 commit into
mainfrom
ci/2060-windows-test-leg

Conversation

@JarryShaw

Copy link
Copy Markdown
Owner

What is the purpose of your pull request?

  • ci — changes to CI configuration files and scripts

Description of your pull request and other information

For #2060: the plan asks for a Windows unit-test run before the win-64 conda package is published.

  • New windows job in experimental.yml: named Python 3.15 on Windows (experimental), on windows-latest. It uses 3.15, the latest tier, which is also the newest win-64 conda build. It has the experimental job's needs/if, shell: bash, and LF checkout.
  • Stays green: continue-on-error on the job and every step, plus step caps (setup 5 min, install 10, tests 60) inside an 80-minute job. Failures become warnings through leg_summary.py experimental.
  • Linux-only parts dropped: the memory scope, prlimit/GNU timeout, the resource monitor, the superseded watcher and the file-size cap, since Windows has no resource module.
  • Updater change, for the owner: update_python_versions.py now ignores continue-on-error jobs when collecting the runners latest must have a build on. Without that, a missing Windows build would hold latest back for blocking jobs.
  • Tests: test_windows_test_leg_2060 (24 tests) fails 21 against main and catches six planted mutations. The job-set pins in five workflow tests now list the new job. actionlint 1.7.12 is clean.

The first run will show what fails on Windows, so expect warnings, not red.

experimental.yml gains `windows`, `Python <latest> on Windows (experimental)`:
the ALL tier on windows-latest under Git Bash, with test's flags, every step
continue-on-error, caps of 5/10/60 minutes in an 80-minute job, and
Experimental summary on `python`. No Linux containment (scope, prlimit,
monitor, watcher) runs there; the checkout keeps LF line endings.

util/update_python_versions.py no longer counts a continue-on-error job's
label when it moves `latest`, so the leg holds no blocking job back.

tests/project/test_windows_test_leg_2060.py pins the job; the job-set pins
in the 1732, 1740, 1938, 1967 and 2030 tests list it. Docs updated.
@JarryShaw JarryShaw added ci Pull requests that change CI or workflow configuration (ci: subject prefix) enhancement Issues requesting a new capability (set by the feature request template) review: running A cross-review is in flight against the current head - no verdict yet labels Oct 23, 2026
@JarryShaw JarryShaw moved this to In review in PyPCAPKit Oct 23, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

GOOD TO GO at 416b5a788 (Sonnet review).

  • Stays green: every step and the job carry continue-on-error, the step caps sit under the 80-minute job, the summary and upload steps tolerate missing files, and no /usr/bin/python3, sudo or /proc appears. The red-on-lost-runner limit is the same as on the existing experimental job.
  • Gating: nothing gating references the job, and check_suite_report.py classifies it as non-blocking through its (experimental)$ pattern.
  • Updater: the predicate is a literal job-level continue-on-error: true, so only the two experimental jobs are skipped. Other blocking latest jobs still pin the runner set. Recommendation: accept.
  • Tests: they depend on the change; main's workflow fails 22 of 27, and three planted mutations each failed.
  • Minor, no change:
    • A superseded leg runs to completion instead of being stopped, which costs minutes only.
    • Checkout and the LF step have no cap of their own.

@JarryShaw JarryShaw added review: good-to-go Cross-review at the current head says ready; CI state is separate and removed review: running A cross-review is in flight against the current head - no verdict yet labels Oct 23, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Coverage: 91.54% (unit tier, Python 3.15, 416b5a788, Unit Tests run success)

Package Statements Missed Branches Partial Cover
pcapkit (top level) 104 4 20 2 95.16%
pcapkit/const 19599 880 2618 866 92.12%
pcapkit/corekit 2565 71 812 37 96.56%
pcapkit/dumpkit 282 3 102 3 98.44%
pcapkit/foundation 2930 23 1022 25 98.79%
pcapkit/interface 138 4 52 3 96.32%
pcapkit/protocols 17414 219 4574 185 98.14%
pcapkit/toolkit 869 36 298 10 95.20%
pcapkit/utilities 473 7 136 5 98.03%
pcapkit/vendor 4432 1988 1018 167 51.87%

Per-file detail: the coverage-html artifact of this run.

@JarryShaw

Copy link
Copy Markdown
Owner Author

Ready to merge at 416b5a788.

  • Review and CI: the Sonnet review is GOOD TO GO, and every blocking check passed (Required checks passed SUCCESS). The 3.8–3.10 KTLO legs carry no warnings.
  • Ordering: the tests/project plain-unittest ordering leg passed on a scratch merge into current main (d2b9b324b): 2138 tests, 0 failures.
  • First Windows run: it behaved as designed. The check is green with a single tests failed … (experimental, non-blocking) warning. pytest reported 48 failed, 2074 passed, 1121 skipped and 4 errors in 4m12s.
    • The failures cluster in foundation/test_extraction* (no-EOF pipes, non-seekable streams), corekit/test_io, test_tier_guard and the vendor snapshot restore.
    • The 4 errors are SIGALRM-based helpers (time_limit, _deadline), which have no Windows counterpart.
    • Once this merges I'll file them, grouped by cause, as phase-2 prerequisites on Conda: bring back the Windows (win-64) package, in two phases #2060.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Pull requests that change CI or workflow configuration (ci: subject prefix) enhancement Issues requesting a new capability (set by the feature request template)

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant