Skip to content

ci(experimental): pass the Windows leg's ignore list as an argument file (#2678) - #2681

Merged
JarryShaw merged 1 commit into
mainfrom
ci/2678-windows-argfile
Nov 2, 2026
Merged

JarryShaw merged 1 commit into
mainfrom
ci/2678-windows-argfile

Conversation

@JarryShaw

Copy link
Copy Markdown
Owner

What is the purpose of your pull request?

  • ci — workflows or build tooling

Description of your pull request and other information

From 61092a529 on, Python 3.15 on Windows (experimental) fails before pytest starts, with Argument list too long and exit 126. The windows job's Run unit tests step passed one --ignore=<module> per LATEST-tier module on the command line, and that list has grown past Windows' command-line limit.

The step now writes the ignores one per line to $RUNNER_TEMP/latest-tier.args and runs python -m pytest "$@" "@$args". pytest's parser reads @-prefixed files, and xdist workers re-parse the same argv. Git Bash passes @D:\a\_temp/… through unchanged, the same form --junitxml already uses on this leg. The flag block and the Linux legs are unchanged.

test_windows_test_leg_2060.py's pin now checks both the literal argv and the argv as pytest expands the file. It fails if a LATEST-tier module stops being ignored. workflows.rst's Windows-leg paragraph is updated to match. This PR's own run of the leg is the real-runner check.

Closes #2678

…ile (#2678)

The windows job's Run unit tests step passed an --ignore per LATEST-tier
module on the command line, which outgrew Windows' command-line limit: Git
Bash could not start python (Argument list too long, exit 126) and pytest
never ran.

- The step writes each module as an --ignore line of
  $RUNNER_TEMP/latest-tier.args and hands pytest "@$args"; pytest's parser
  reads @ files, and xdist workers re-parse the same command line. The
  runner's D:\a\_temp form needs no cygpath: Git Bash passes it unchanged,
  as it already does --junitxml's. The flag block stays as test's.
- The argv pin asserts the @ argument, and the argv as pytest expands it,
  so a LATEST module missing from the file still fails it.
- workflows.rst's Windows-leg paragraph says how the ignores are passed.

Windows-leg, shellcheck, conventions-claims and workflow-reading project
modules and the tier guard pass; actionlint is clean.
@JarryShaw JarryShaw added this to the PyPCAPKit v1.6 milestone Nov 2, 2026
@JarryShaw JarryShaw added ci Pull requests that change CI or workflow configuration (ci: subject prefix) review: running A cross-review is in flight against the current head - no verdict yet labels Nov 2, 2026
@JarryShaw JarryShaw moved this to In review in PyPCAPKit Nov 2, 2026
@JarryShaw

Copy link
Copy Markdown
Owner Author

GOOD TO GO at f028ed63b, from a Sonnet cross-review.

  • The real runner proves it. This PR's own Python 3.15 on Windows (experimental) job (125508567690) started pytest without the argument-list error and passed. Its junit lists exactly the cases the @file collects locally, with no LATEST module run.
  • pytest and xdist both read the file. pytest sets fromfile_prefix_chars, and each xdist worker re-parses the raw argv.
  • Git Bash leaves the path alone. MSYS2's find_path_start_and_type skips the leading @ and copies the D:\… path unchanged.
  • The pin still fails on the old step, on a dropped first or last module, and on a missing @$args.
  • Nothing else moved: only this step's run: differs. The pytest floor needs no change, since only this leg uses @ files and it installs a current pytest.

@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 Nov 2, 2026
@JarryShaw
JarryShaw merged commit dd30f0f into main Nov 2, 2026
62 checks passed
@github-project-automation github-project-automation Bot moved this from In review to Done in PyPCAPKit Nov 2, 2026
@JarryShaw
JarryShaw deleted the ci/2678-windows-argfile branch November 2, 2026 20:05
@JarryShaw JarryShaw removed the review: good-to-go Cross-review at the current head says ready; CI state is separate label Nov 2, 2026
JarryShaw added a commit that referenced this pull request Nov 2, 2026
…h refusals and the Windows leg's argument file into 1.6.0 (#2449)

- Breaking: MH(raw) and TCP(raw) (#2683) raise ProtocolError for an MH
  message whose Header Len is short of its fields, or a DSS option of a
  length its flags do not give, where 1.5.x read the gap as zeros and
  rebuilt it longer; a cut MH keeps its declared Header Len. The entry gives
  the old and new results, measured against v1.5.1.
- Folded into unreleased entries: radiotap's decoded optional fields,
  Radiotap.__field__ with register_field and register_radiotap_field, the
  RadiotapField schemas and pcapkit.const.radiotap with its crawlers (#2657),
  and cut TLV items decoding zero-padded (#2690), into the Radiotap entry,
  with the IEEE 802.11 entry's Flags clause corrected; #2657's ruling on code
  to layout tables, into the conventions entry; the Windows leg's argument
  file (#2681), into the CI legs entry, as the cycle's other CI changes have
  entries.
- No entry for the test-only 42a6133.
- CHANGELOG.md regenerated; util/changelog_md.py --check passes.
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)

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

ci(experimental): the Windows leg's LATEST-tier ignore list overflows the command line

1 participant