@@ -376,7 +376,7 @@ the same commit several times over. It also skips ``changes``,
376376Checks `_ below), which are gated out by their own ``if: `` rather than by having
377377already run. ``changelog `` carries no
378378``if: `` at all and runs on every path regardless -- deliberately, per its own
379- comment (``unit-tests.yml:1635-1641 ``): ``create-release.yml `` feeds
379+ comment (``unit-tests.yml:1629-1635 ``): ``create-release.yml `` feeds
380380``CHANGELOG.md `` to the GitHub Release body, so the release path is exactly
381381where a drifted file must not go unchecked. Confirmed on run `36210743295
382382<https://github.com/JarryShaw/PyPCAPKit/actions/runs/36210743295> `__ (a
@@ -689,7 +689,7 @@ grepping every workflow file for its name:
689689 - Where
690690 * - ``Required checks passed ``
691691 - job ``required-checks ``
692- - ``unit-tests.yml:1970 ``
692+ - ``unit-tests.yml:1964 ``
693693 * - ``Compat Python 3.11 ``
694694 - job ``compatibility ``, matrix leg ``3.11 ``
695695 - ``python-compatibility.yml:60 ``, ``.github/python-versions.toml:20 ``
@@ -711,22 +711,22 @@ which added ``Compat Python 3.15`` and removed ``Compat Python 3.10``. Moving a
711711between the tiers below means editing the ruleset in the same change.
712712
713713``Required checks passed `` is defined by exactly one job
714- (``unit-tests.yml:1970 ``). ``Compat Python `` is defined by one, the
714+ (``unit-tests.yml:1964 ``). ``Compat Python `` is defined by one, the
715715``compatibility `` job in ``python-compatibility.yml `` (``:60 ``), whose matrix
716716(``:74 ``) comes from :file: `.github/python-versions.toml `: the required legs
717717are its supported tier (``python-versions.toml:20-24 ``), and its KTLO legs
718718(``python-versions.toml:16-19 ``) have names ending in ``(KTLO) ``, so no required
719719context matches one. A comment at
720- ``unit-tests.yml:1882 `` mentions the string without defining it.
720+ ``unit-tests.yml:1876 `` mentions the string without defining it.
721721
722722``Required checks passed `` is an aggregate, not a single check run. The ruleset
723723requires it and the ``Compat Python 3.11 ``-``3.15 `` legs, nothing else, as
724- ``unit-tests.yml ``'s own comment (``unit-tests.yml:1881-1891 ``) records. It
724+ ``unit-tests.yml ``'s own comment (``unit-tests.yml:1875-1885 ``) records. It
725725``needs: `` the gating jobs of ``unit-tests.yml `` -- ``test ``, ``integration ``,
726726``engine-tests `` and ``pypcap-parity ``, plus ``project-tests ``, the one run of
727727the project pins, and ``changes `` for the docs-only path -- and checks each
728728result explicitly
729- (``unit-tests.yml:1969-2025 ``). Rulesets match check names literally, with no
729+ (``unit-tests.yml:1963-2019 ``). Rulesets match check names literally, with no
730730wildcard, so requiring the matrix cells one by one would mean editing the
731731ruleset whenever a matrix changes; the aggregate keeps the required list fixed.
732732It accepts the gating jobs as ``skipped `` only on a docs-only pull request, where
@@ -735,7 +735,7 @@ It accepts the gating jobs as ``skipped`` only on a docs-only pull request, wher
735735``python-compatibility.yml ``, and a job cannot ``needs: `` a job in another
736736workflow file. This job runs on Unit Tests' own ``push ``/``pull_request ``
737737triggers; the ``gate-only: true `` reusable calls documented above skip it via
738- ``if: ${{ always() && inputs.gate-only != true }} `` (``unit-tests.yml:1972 ``),
738+ ``if: ${{ always() && inputs.gate-only != true }} `` (``unit-tests.yml:1966 ``),
739739so it is never produced -- and never expected -- on those paths.
740740
741741.. _ktlo-tier :
@@ -759,7 +759,7 @@ and keeps its legs' check names, ``Python 3.10 (KTLO)`` and so on. In
759759with supported legs. Every job holding KTLO legs works the same way:
760760
761761* Every step that can fail on a KTLO leg has an ``id `` and
762- ``continue-on-error: ${{ matrix.ktlo == true }} `` (``unit-tests.yml:400-417 ``),
762+ ``continue-on-error: ${{ matrix.ktlo == true }} `` (``unit-tests.yml:394-411 ``),
763763 unless it is masked on every leg, as the timings uploads are. Its ``outcome `` is
764764 then ``failure `` but its ``conclusion `` ``success ``, so the job, its check run
765765 and ``required-checks `` read ``success ``. A step that needs an earlier one's work
@@ -797,9 +797,10 @@ with the image's Rust and ``libssl-dev``, and none of ``lxml``, so the ``test``
797797extra carries ``lxml `` on CPython only.
798798
799799On PyPy an xdist worker's RSS grows with every test it runs, rather than in a few
800- heavy modules, so a PyPy leg's ``Run unit tests `` runs pytest once per directory its
801- ``SHARDS `` names, ``tests/protocols `` and then ``tests/corekit ``, and once more over
802- the rest, ignoring each (`#2005 <https://github.com/JarryShaw/PyPCAPKit/issues/2005 >`__).
800+ heavy modules, so a PyPy leg's ``Run unit tests `` hands its pytest command to
801+ :file: `util/pytest_shards.py `, as GraalPy's leg does (see below), which runs it once per
802+ directory its ``SHARDS `` names, ``tests/protocols `` and then ``tests/corekit ``, and once
803+ more over the rest, ignoring each (`#2005 <https://github.com/JarryShaw/PyPCAPKit/issues/2005 >`__).
803804Each run starts its workers afresh. Measured on PyPy 8.0.1 at ``-n 4 ``, one run
804805over the whole ``ALL `` tier took each worker to 5.4-5.9 GB and the workers together
805806past 20 GB, beyond the runner's 16 GB; split, the largest run peaked at 2.6 GB a
@@ -1199,14 +1200,17 @@ does; each has tests under :file:`tests/project/` that run it.
11991200 - ``Report coverage `` in ``unit-tests.yml ``'s ``test ``, on the coverage leg.
12001201 * - :file: `util/pytest_shards.py `
12011202 - ``Run unit tests `` in ``experimental.yml ``'s ``experimental ``, on GraalPy's leg
1202- (`#1963 <https://github.com/JarryShaw/PyPCAPKit/issues/1963 >`__).
1203+ (`#1963 <https://github.com/JarryShaw/PyPCAPKit/issues/1963 >`__), and in
1204+ ``unit-tests.yml ``'s ``test `` and ``test-ktlo ``, on PyPy's legs (`#2005
1205+ <https://github.com/JarryShaw/PyPCAPKit/issues/2005> `__).
12031206
12041207The summaries run on the image's ``/usr/bin/python3 `` rather than the leg's
12051208interpreter, which may have failed to set up or be too broken to run anything, so
12061209they need only the standard library, as ``classify_changes.py `` does on the
12071210runner's ``python3 ``. :file: `util/pytest_shards.py ` runs on ``/usr/bin/python3 ``
12081211too, standard library only, so on GraalPy's leg the leg's interpreter runs pytest
1209- alone. Both ``changes `` jobs check out on every event, since the script is in the
1212+ alone; on PyPy's legs the leg's interpreter runs the script as well, under the
1213+ file-size cap every test command of ``unit-tests.yml `` takes. Both ``changes `` jobs check out on every event, since the script is in the
12101214tree. ``create-release.yml ``'s ``pypi `` job keeps its own copy of
12111215the KTLO summary's shell until its shell moves to scripts too; a project pin runs
12121216that copy and the script on the same steps and requires the same output.
0 commit comments