Skip to content

tests: seven more skipUnless gates have never executed on any CI path (106 methods) #738

Description

@JarryShaw

#729 fixed HAS_DPKT. Seven more gates are in the identical never-executes state — the dependency lives in an extra no CI job installs, so the tests report as skips, which read as passes.

CI installs .[test] on the test legs and .[test,Scapy] on integration/gate. The test extra is pytest, pytest-xdist, typing-extensions — nothing else. Counts are my own AST pass over tests/, resolving class-level and method-level skipUnless gates, against origin/main at 55513f69e.

flag methods extra needed ships wheels? files
HAS_VENDOR_DEPS 41 vendor (requests) yes tests/vendor/*
HAS_CRYPTO 14 crypto (cryptography) yes, everywhere protocols/internet/test_esp_unit.py
HAS_EMOJI 14 cli (emoji) yes, pure Python integration/test_cli_subprocess.py
HAS_CRAWLER_DEPS 14 vendor yes tests/vendor/*
HAS_PYCRATE 10 NGAP (pycrate) yes protocols/application/test_ngap_unit.py
HAS_PYPCAPFILE 10 PyPCAPFile yes toolkit/test_pypcapfile_unit.py
HAS_PYSHARK 3 PyShark yes (binary tshark is separate) foundation/engines/test_pyshark_engine.py

106 methods, against #729's 28.

Two nuances that make this a judgement call rather than a pure defect:

  • HAS_VENDOR_DEPS and HAS_CRAWLER_DEPS (55 of the 106) exercise the vendor crawlers, which reach the network. Those may be deliberately dark in CI — see Vendor crawlers: three take a Wikipedia 403 on the default User-Agent, three point at a dead IETF URL #518, where four Wikipedia 403s and a dead IETF URL make them flaky by nature. Installing requests would make them run and possibly fail on upstream availability rather than on our code. This wants your ruling, not a blanket fix.
  • HAS_SCAPY (14) is not in this list — Scapy is installed on the integration and gate legs, so those run. They are dark only on the test leg.

HAS_PYPCAP (4) and HAS_PCAP_CT (1) are excluded as defensibly dark: C extensions needing libpcap headers.

The cheap, uncontroversial subset is HAS_CRYPTO + HAS_EMOJI + HAS_PYCRATE + HAS_PYPCAPFILE = 48 methods, all pure-Python or wheel-shipping, and test_cli_subprocess.py is already selected wholesale by the integration job — so that one is literally the same one-line install-list edit #737 made. test_esp_unit.py is real ESP crypto correctness, which is the highest-value of the set.

Why the whole class survived: Pipfile [dev-packages] carries dpkt, cryptography and emoji, so local make test has always run these. Only CI was ever blind.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugIssues reporting a defect (set by the bug report template; a default, not an assessment)ciPull requests that change CI or workflow configuration (ci: subject prefix)testPull requests that add or correct tests (test: subject prefix)

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions