@@ -83,65 +83,71 @@ Running the tests
8383 The tests are written mostly as standard unittest-style tests, and are run with
8484pytest running under `tox `_::
8585
86- % python3 -m tox -e py39
87- py39: wheel-0.45.1-py3-none-any.whl already present in /Users/ned/Library/Application Support/virtualenv/wheel/3.9/embed/3/wheel.json
88- py39: pip-25.0.1-py3-none-any.whl already present in /Users/ned/Library/Application Support/virtualenv/wheel/3.9/embed/3/pip.json
89- py39: setuptools-78.1.0-py3-none-any.whl already present in /Users/ned/Library/Application Support/virtualenv/wheel/3.9/embed/3/setuptools.json
90- py39: install_deps> python -m pip install -U -r requirements/pip.pip -r requirements/pytest.pip -r requirements/light-threads.pip
86+ % python3 -m tox -e py310
87+ py310: pip-26.0.1-py3-none-any.whl already present in /Users/ned/.cache/virtualenv/wheel/3.10/embed/3/pip.json
88+ py310: setuptools-82.0.1-py3-none-any.whl already present in /Users/ned/.cache/virtualenv/wheel/3.10/embed/3/setuptools.json
89+ py310: install_deps> python -m pip install -U -r requirements/pip.pip -r requirements/pytest.pip -r requirements/light-threads.pip
9190 .pkg: install_requires> python -I -m pip install setuptools
92- .pkg: _optional_hooks> python /usr/local/virtualenvs/coverage/lib/python3.9/site-packages/pyproject_api/_backend.py True setuptools.build_meta
93- .pkg: get_requires_for_build_editable> python /usr/local/virtualenvs/coverage/lib/python3.9/site-packages/pyproject_api/_backend.py True setuptools.build_meta
94- .pkg: build_editable> python /usr/local/virtualenvs/coverage/lib/python3.9/site-packages/pyproject_api/_backend.py True setuptools.build_meta
95- py39: install_package_deps> python -m pip install -U 'tomli; python_full_version <= "3.11.0a6"'
96- py39: install_package> python -m pip install -U --force-reinstall --no-deps .tox/.tmp/package/1/coverage-7.8.1a0.dev1-0.editable-cp39-cp39-macosx_15_0_arm64.whl
97- py39: commands[0]> python igor.py zip_mods
98- py39: commands[1]> python igor.py remove_extension
99- py39: commands[2]> python igor.py test_with_core pytrace
100- === CPython 3.9.21 (gil) with Python tracer (.tox/py39/bin/python) ===
91+ .pkg: _optional_hooks> python /Users/ned/coverage/trunk/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta
92+ .pkg: get_requires_for_build_sdist> python /Users/ned/coverage/trunk/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta
93+ .pkg: get_requires_for_build_wheel> python /Users/ned/coverage/trunk/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta
94+ .pkg: prepare_metadata_for_build_wheel> python /Users/ned/coverage/trunk/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta
95+ .pkg: build_sdist> python /Users/ned/coverage/trunk/.venv/lib/python3.10/site-packages/pyproject_api/_backend.py True setuptools.build_meta
96+ py310: install_package_deps> python -m pip install -U 'tomli; python_full_version <= "3.11.0a6"'
97+ py310: install_package> python -m pip install -U --force-reinstall --no-deps .tox/.tmp/package/1/coverage-7.13.5a0.dev1.tar.gz
98+ py310: commands[0]> python igor.py zip_mods
99+ py310: commands[1]> python setup.py --quiet build_ext --inplace
100+ py310: commands[2]> python -m pip install -q -e .
101+ py310: commands[3]> python igor.py clean_for_core ctrace
102+ py310: commands[4]> python igor.py test_with_core ctrace
103+ === CPython 3.10.20 (main Mar 3 2026 05:34:05) (gil) with C tracer (/usr/local/pyenv/pyenv/versions/3.10.20) ===
101104 bringing up nodes...
102105 ....................................................................................... [ 5%]
103- ..................................................................x................s... [ 11%]
104- ......s...s.....s....s......s.s.s.s.................................................... [ 17%]
105- ...........................................s..ss...ss.ss.ss............................ [ 23%]
106- ....................................................................................... [ 29%]
107- ....................................................................................... [ 35%]
108- ....................................................................................... [ 41%]
109- ................................................s...................................... [ 47%]
110- ....................................................................................... [ 53%]
111- ...................................................s..........s........................ [ 59%]
106+ ...................................................................................s... [ 10%]
107+ ......................................................................................s [ 16%]
108+ .................................................................s....s................ [ 21%]
109+ ....................................................................................... [ 27%]
110+ ..............s........................................................................ [ 32%]
111+ ....................................................................................... [ 38%]
112+ ....................................................................................... [ 43%]
113+ ....................................................................................... [ 49%]
114+ ....................................................................................... [ 54%]
115+ ...............................................s............s.......................... [ 60%]
112116 ....................................................................................... [ 65%]
113- ..........................ssss. ........................................................ [ 71%]
114- ..s .....s.ss ..........................ss ...................s.s..sssssss.ssssss.sssss ... [ 77 %]
115- .........ss. .........................s...s.s ......s... .....s ........................s.. [ 83 %]
116- .............................s ......................................................... [ 88 %]
117- ....................................................................................... [ 94 %]
118- .............................................s .......................ss .... [100 %]
119- 1403 passed, 63 skipped, 1 xfailed in 15.05s
120- py39: commands[3]> python setup.py --quiet build_ext --inplace
121- py39 : commands[4 ]> python -m pip install -q -e .
122- py39 : commands[5 ]> python igor.py test_with_core ctrace
123- === CPython 3.9.21 ( gil) with C tracer (.tox/py39/bin/python ) ===
117+ ..............................s ........................................................ [ 71%]
118+ ........ .................................s ................. ............................ [ 76 %]
119+ ..........s ...........................s. ......s.s..s .............................s..... [ 82 %]
120+ ...............s .......................................s ............................... [ 87 %]
121+ ....................................................................................... [ 93 %]
122+ ...................................................................................s... [ 98 %]
123+ ................ [100%]
124+ 1564 passed, 18 skipped in 17.78s
125+ py310 : commands[5 ]> python igor.py clean_for_core pytrace
126+ py310 : commands[6 ]> python igor.py test_with_core pytrace
127+ === CPython 3.10.20 (main Mar 3 2026 05:34:05) ( gil) with Python tracer (/usr/local/pyenv/pyenv/versions/3.10.20 ) ===
124128 bringing up nodes...
125129 ....................................................................................... [ 5%]
126- ..........................................sx................................s.......... [ 11%]
127- ..........ss........s....................................s............................. [ 17%]
128- ..............................sss...................................................... [ 23%]
129- ..............................................................s........................ [ 29%]
130- ....................................................................................... [ 35%]
131- ....................................................................................... [ 41%]
132- ......................................................s................................ [ 47%]
133- .............................................s......................................... [ 53%]
134- .......s..................s............................................................ [ 59%]
135- ....................................................................................s.. [ 65%]
136- .......................................................ss.......................s...... [ 71%]
137- ....................................................s............................ss.... [ 77%]
138- ..........................s...................s........................................ [ 83%]
139- ....................................................................................... [ 88%]
140- ............................s......s................................................... [ 94%]
141- .................................................................s......... [100%]
142- 1440 passed, 26 skipped, 1 xfailed in 12.38s
143- py39: OK (40.04=setup[9.03]+cmd[0.17,0.09,15.40,0.13,2.47,12.77] seconds)
144- congratulations :) (40.61 seconds)
130+ ..................................................................................s.... [ 10%]
131+ .................................................................................s..... [ 16%]
132+ .......................................................s..s...s.ss.ss.s.s.............. [ 21%]
133+ ...s................................................................................... [ 27%]
134+ ...........s........................................................................... [ 32%]
135+ .................................................................................s..... [ 38%]
136+ ............................................s.......................................... [ 43%]
137+ ....................................................................................... [ 49%]
138+ ....................................................................................... [ 54%]
139+ ..................................................s.............s...................... [ 60%]
140+ ....................................................................................... [ 65%]
141+ .............................s.ss...s.................................................. [ 71%]
142+ ........................................s.....................ss..s.ss.ss.sssssssssssss [ 76%]
143+ ....s...............s.....................s.....s.s..s..............................s.. [ 82%]
144+ ..........s..............................................s............................. [ 87%]
145+ ....................................................................................... [ 93%]
146+ ............................................................................s.......... [ 98%]
147+ ..........ss.... [100%]
148+ 1528 passed, 54 skipped in 15.73s
149+ py310: OK (52.35=setup[12.35]+cmd[0.16,0.60,2.20,0.12,19.79,0.15,16.98] seconds)
150+ congratulations :) (52.38 seconds)
145151
146152Tox runs the complete test suite a few times for each version of Python you
147153have installed. The first run uses the C implementation of the trace function,
@@ -167,32 +173,29 @@ name, which can be very convenient for ad-hoc test selection. Of course you
167173can combine tox and pytest options::
168174
169175 % python3 -m tox -q -e py310 -- -n 0 -vv -k hash
170- Skipping tests with Python tracer: Only one core: not running pytrace
171- === CPython 3.10.16 (gil) with C tracer (.tox/py310/bin/python) ===
176+ === CPython 3.10.20 (main Mar 3 2026 05:34:05) (gil) with C tracer (/usr/local/pyenv/pyenv/versions/3.10.20) ===
172177 ===================================== test session starts =====================================
173- platform darwin -- Python 3.10.16 , pytest-8.3.5 , pluggy-1.5 .0 -- /Users/ned/coverage/trunk/.tox/py310/bin/python
178+ platform darwin -- Python 3.10.20 , pytest-9.0.2 , pluggy-1.6 .0 -- /Users/ned/coverage/trunk/.tox/py310/bin/python
174179 cachedir: .tox/py310/.pytest_cache
175- hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase(PosixPath('/Users/ned/coverage/trunk/.hypothesis/examples'))
180+ hypothesis profile 'default'
176181 rootdir: /Users/ned/coverage/trunk
177182 configfile: pyproject.toml
178- plugins: flaky-3.8.1, hypothesis-6.128.1, xdist-3.6.1
179- collected 1467 items / 1457 deselected / 10 selected
183+ plugins: flaky-3.8.1, xdist-3.8.0, hypothesis-6.151.9
184+ collected 1582 items / 1575 deselected / 7 selected
180185 run-last-failure: no previously failed tests, not deselecting items.
181186
182- tests/test_data.py::CoverageDataTest::test_add_to_hash_with_lines PASSED [ 10%]
183- tests/test_data.py::CoverageDataTest::test_add_to_hash_with_arcs PASSED [ 20%]
184- tests/test_data.py::CoverageDataTest::test_add_to_lines_hash_with_missing_file PASSED [ 30%]
185- tests/test_data.py::CoverageDataTest::test_add_to_arcs_hash_with_missing_file PASSED [ 40%]
186- tests/test_execfile.py::RunPycFileTest::test_running_hashed_pyc PASSED [ 50%]
187- tests/test_misc.py::HasherTest::test_string_hashing PASSED [ 60%]
188- tests/test_misc.py::HasherTest::test_bytes_hashing PASSED [ 70%]
189- tests/test_misc.py::HasherTest::test_unicode_hashing PASSED [ 80%]
190- tests/test_misc.py::HasherTest::test_dict_hashing PASSED [ 90%]
191- tests/test_misc.py::HasherTest::test_dict_collision PASSED [100%]
192-
193- ============================= 10 passed, 1457 deselected in 3.13s =============================
194- py310: OK (16.62 seconds)
195- congratulations :) (16.97 seconds)
187+ tests/test_data.py::CoverageDataTest::test_add_to_hash_with_lines PASSED [ 14%]
188+ tests/test_data.py::CoverageDataTest::test_add_to_hash_with_arcs PASSED [ 28%]
189+ tests/test_data.py::CoverageDataTest::test_add_to_lines_hash_with_missing_file PASSED [ 42%]
190+ tests/test_data.py::CoverageDataTest::test_add_to_arcs_hash_with_missing_file PASSED [ 57%]
191+ tests/test_execfile.py::RunPycFileTest::test_running_hashed_pyc PASSED [ 71%]
192+ tests/test_misc.py::HasherTest::test_scrambled_sets PASSED [ 85%]
193+ tests/test_misc.py::HasherTest::test_equality_matches_hash PASSED [100%]
194+
195+ ============================= 7 passed, 1575 deselected in 0.95s ==============================
196+ Skipping tests with Python tracer: Only one core: not running pytrace
197+ py310: OK (10.18 seconds)
198+ congratulations :) (10.21 seconds)
196199
197200You can also affect the test runs with environment variables:
198201
0 commit comments