Skip to content

Exclude test files from coverage report #53508

Description

@rozzilla

What is the problem this feature will solve?

Hey folks! 👋🏼
I know that as by doc it's currently not possible to exclude specific files or directories from the coverage report.

The problem I face right now is that the coverage includes all of the test files.

For instance, if I have the following file:

// index.js
export function sum(val1, val2) {
  return val1 + val2;
}

and the test:

// index.test.js
import { strictEqual } from "node:assert";
import { it, describe } from "node:test";
import { sum } from "./index.js";

describe("test", () => {
  it("should pass", () => {
    strictEqual(sum(40, 2), 42);
  });
});

Once I run node --experimental-test-coverage --test I get:

> test@1.0.0 no
> node --experimental-test-coverage --test

▶ test
  ✔ should pass (0.155709ms)
▶ test (1.117417ms)

ℹ tests 1
ℹ suites 1
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 47.674834
ℹ start of coverage report
ℹ --------------------------------------------------------------
ℹ file          | line % | branch % | funcs % | uncovered lines
ℹ --------------------------------------------------------------
ℹ index.js      | 100.00 |   100.00 |  100.00 | 
ℹ index.test.js | 100.00 |   100.00 |  100.00 | 
ℹ --------------------------------------------------------------
ℹ all files     | 100.00 |   100.00 |  100.00 |
ℹ --------------------------------------------------------------
ℹ end of coverage report

What is the feature you are proposing to solve the problem?

Ideally, .test.* should be excluded from the coverage report

What alternatives have you considered?

No response

Activity

  1. avivkeller commented on Jun 19, 2024

    @avivkeller
    Member

    Seems simple enough. The same logic for --test-skip-pattern can be used.

    --coverage-exclude-glob ...
    --coverage-include-glob ...

  2. added
    coverageIssues and PRs related to Node.js code coverage support.
    on Jun 19, 2024
  3. avivkeller commented on Jun 19, 2024

    @avivkeller
    Member

    I'm happy to work on this :-).

  4. self-assigned this
    on Jun 19, 2024
  5. avivkeller commented on Jun 22, 2024

    @avivkeller
    Member

    Hey! Sorry for the delay, I've been out-of-town, but I'll begin work on this ASAP.

  6. moved this from Awaiting Triage to In Progress in Node.js feature requestson Jun 26, 2024
  7. moved this from In Progress to Done in Node.js feature requestson Aug 6, 2024
  8. 8 remaining items

  9. Llorx commented on Nov 1, 2024

    @Llorx
    Contributor

    @redyetidev Just created a PR with the "default exclude" behaviour: #55633

  10. avivkeller commented on Nov 1, 2024

    @avivkeller
    Member

    @pmarchini IMHO this issue is completed, the PR itself should be the discussion for the other exclusion rules. If you disagree, re-open

  11. pmarchini commented on Nov 1, 2024

    @pmarchini
    Member

    @redyetidev, I reopened the issue since there's a related PR that will resolve this. Even though the PR is the right place for the implementation discussion, I think it might be better to keep this issue open until the PR lands.
    I've seen many times in the past where PRs get stuck or are no longer under active development, and I found them through the issues.

    What do you think?

  12. avivkeller commented on Nov 1, 2024

    @avivkeller
    Member

    SGTM, thanks for your insight :-)

  13. removed their assignment
    on Nov 1, 2024
  14. cjihrig commented on Dec 17, 2024

    @cjihrig
    Contributor

    Fixed by #56060
    cc: @pmarchini

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

    coverageIssues and PRs related to Node.js code coverage support.feature requestIssues requesting new Node.js features.test_runnerIssues and PRs related to the test runner subsystem.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions