Overview
I'm going to slowly remove the coverage plugin.
Deprecation and removal will happen in phases. First, the plugin will be deprecated (and will emit a warning when reporting) but will not otherwise be altered.
There is no fixed schedule for removal, but the intention is to be gradual.
Background & Motivation
There is no longer any need for nose2 to start coverage -- not even for multiprocessing, now that coverage patch configurations can handle that use case. Use coverage run nose2 instead.
Testing of the coverage plugin has long been unreliable, as it is (at least presently) done by running nose2 in a subprocess, capturing output, and then asserting about the coverage output. If we make any mistakes or have any irregular behaviors, e.g. importing a module at the wrong point, the coverage output is disrupted.
The tests are unstable. They fail frequently with unrelated changes and new Python releases, and behave differently on different platforms or otherwise have surprising characteristics.
This is not a great way to test things -- and it raises a question of what a meaningful test of the coverage plugin would be.
Adding fuel to the fire, the coverage tests have broken once again on Python 3.14. The time has come to let go of this bit of code.
Removal Deadline: 2029
Although it might be removed sooner, the plugin will definitely not be retained after October 2029, when Python 3.13 goes EOL.
Migrating
There is no need for a complex migration guide, as most of the plugin config comes from coverage config elsewhere.
The following steps should suffice:
- Remove any
nose2 coverage plugin config
- Change your invocations of
nose2 to be run under coverage
- Make sure you are installing
nose2 and coverage and not nose2[coverage_plugin]
Overview
I'm going to slowly remove the coverage plugin.
Deprecation and removal will happen in phases. First, the plugin will be deprecated (and will emit a warning when reporting) but will not otherwise be altered.
There is no fixed schedule for removal, but the intention is to be gradual.
Background & Motivation
There is no longer any need for
nose2to start coverage -- not even for multiprocessing, now thatcoveragepatch configurations can handle that use case. Usecoverage run nose2instead.Testing of the coverage plugin has long been unreliable, as it is (at least presently) done by running
nose2in a subprocess, capturing output, and then asserting about the coverage output. If we make any mistakes or have any irregular behaviors, e.g. importing a module at the wrong point, the coverage output is disrupted.The tests are unstable. They fail frequently with unrelated changes and new Python releases, and behave differently on different platforms or otherwise have surprising characteristics.
This is not a great way to test things -- and it raises a question of what a meaningful test of the coverage plugin would be.
Adding fuel to the fire, the coverage tests have broken once again on Python 3.14. The time has come to let go of this bit of code.
Removal Deadline: 2029
Although it might be removed sooner, the plugin will definitely not be retained after October 2029, when Python 3.13 goes EOL.
Migrating
There is no need for a complex migration guide, as most of the plugin config comes from
coverageconfig elsewhere.The following steps should suffice:
nose2coverage plugin confignose2to be run undercoveragenose2andcoverageand notnose2[coverage_plugin]