test*.py, *test.py) to know exactly which files get swept up without configurationDate: 2026-05-29
Time: 11:36
ddia-implementationsThis repo has zero pytest configuration — no pytest.ini, no pyproject.toml, no setup.cfg, no conftest.py at any level. That means pytest runs entirely on its default discovery rules:
1. File collection: Starting from the invocation directory, pytest recursively finds files matching test*.py or *test.py.
2. Inside those files: it collects functions named test* and classes named Test* (with methods named test*).
3. Directories: it recurses into all subdirectories unless they match norecursedirs defaults (.git, _pycache_, .tox, etc.).
This is where it gets interesting. The repo has two parallel sets of test files per module:
| Pattern | Example | Collected? |
|---------|---------|------------|
| test*.py | bloom-filter/testbloomfilter.py | Yes — matches test*.py |
| testertest*.py | bloom-filter/testertestbloomfilter.py | No — testertest does not match test* or *_test |
The testertest*.py files are invisible to default pytest discovery. The prefix tester breaks the test*.py glob — pytest requires the filename to *start with* test or *end with* test (before .py). testertestbloomfilter.py starts with tester, not test_.
Collected by default (the test_*.py files):
fencing-tokens/testfencingtokens.py — 5 test classes (TestLockAcquisition, TestLockRenewal, TestFencedServer, TestScenarios, TestClientEdgeCases)gossip-protocol/testgossipprotocol.py — 10 standalone test functionsmerkle-tree/testmerkletree.py — 10 standalone test functionsbloom-filter/testbloomfilter.py — 5 standalone test functionsNot collected by default (the testertest*.py files):
fencing-tokens/testertestfencing_tokens.py — 2 test classesgossip-protocol/testertestgossipprotocol.py — 12 test functions (includes extras like testjoindoesnotusestaletimestamp at line 180 and testnewnodeviagossipgetscurrenttimestamp at line 201 that don't exist in the test_ version)bloom-filter/testertestbloomfilter.py — 11 test functions (significantly more coverage than the test version's 5)write-skew-detection/testertestssi.py — 5 test functions (this module has no test_*.py counterpart, so its tests are entirely invisible to default discovery)Running bare pytest from the repo root collects ~30 test items from the test*.py files. The testertest*.py files contain ~40+ additional test items — including the *only* tests for write-skew-detection — that silently don't run. The testertest_ files also tend to have broader coverage (e.g., bloom-filter's tester version has 11 tests vs. 5 in the default-discovered version, covering serialization, union, scalable filters, and counting filters).
To run the tester files, you'd need either explicit paths (pytest bloom-filter/testertestbloomfilter.py) or a pytest.ini with a custom pythonfiles glob like pythonfiles = test*.py testertest*.py.
write-skew-detection/testertestssi.py — The only test file for write-skew-detection, completely invisible to default pytest discoverybloom-filter/testertestbloomfilter.py — Compare against testbloom_filter.py to understand why two parallel test suites exist and what the tester version covers that the default-discovered one doesn'ttester-vs-test-naming-convention — Investigate whether the testertest prefix is intentional (e.g., generated tests vs. hand-written) or accidental, and whether a conftest.py or pytest.ini was intended but never createdpytest-collection-customization — Explore pythonfiles, pythonclasses, and python_functions ini-options that would unify both test sets under a single pytest invocationgossip-protocol/testgossipprotocol.py — Diff against testertestgossip_protocol.py to see which tests are unique to each version (the tester version has 2 extra tests covering stale timestamp and gossip-discovered nodes)no-pytest-config-exists — The ddia-implementations repo has no pytest.ini, pyproject.toml, setup.cfg, or conftest.py, so pytest runs entirely on default discovery rulestester-test-files-not-discovered — Files named testertest*.py are not collected by pytest's default test*.py / *test.py globs, silently excluding ~40% of the test suitewrite-skew-has-no-default-tests — The write-skew-detection module's tests exist only in testertestssi.py, making it entirely untested under default pytest invocationtester-versions-have-broader-coverage — The testertest*.py files consistently contain more test functions than their test_*.py counterparts (e.g., bloom-filter: 11 vs. 5, gossip-protocol: 12 vs. 10)