Skip to content

Gradually remove the coverage plugin #651

@sirosen

Description

@sirosen

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]

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions