jestjs / jest

Delightful JavaScript Testing.
https://jestjs.io
MIT License
44.12k stars 6.44k forks source link

fix: projects should use collectCoverageFrom option #15249

Open jadutter opened 1 month ago

jadutter commented 1 month ago

TL;DR; running a single project defined in the projects config option fails to correctly use the collectCoverageFrom config option for that project.

Summary

I upgraded my nx repo to 19 and attempted to migrate from groups of tests defined as configurations in project.json, to using jest projects. However, when I would run a single jest project, it would report the code coverage for the whole nx project instead of only the source code files being tested. This resulted in a non-zero exit code, causing nx to not cache the results (even when all the tests that ran passed).

I tried again with a non-mono repo and got the same result. From what I can tell, a project config is meant to be nearly identical to the overall config, including using collectCoverageFrom.

I wrote up some tests to illustrate this behavior.

 FAIL  e2e/__tests__/multiProjectRunner.test.ts (9.321 s)
  correctly handle coverage reporting
    no projects option
      ✓ baseline (1044 ms)
      middleware with testNamePatterns
        ✓ without collectCoverageFrom within cli args (969 ms)
        ✓ with collectCoverageFrom within cli args (951 ms)
      controllers with testNamePatterns
        ✓ without collectCoverageFrom within cli args (942 ms)
        ✓ with collectCoverageFrom within cli args (727 ms)
    with projects option
      ✓ test all src code (998 ms)
      test middleware project
        ✕ without collectCoverageFrom within cli args (934 ms)
        ✓ with collectCoverageFrom within cli args (792 ms)
      test controllers project
        ✕ without collectCoverageFrom within cli args (907 ms)
        ✓ with collectCoverageFrom within cli args (670 ms)

I left comments in the test file PROJECT_COVERAGE_BUG_NOTE where the tests are failing, but ought to be passing.

While writing these tests, I came across some unexpected behavior. The stderr was missing some text I'd have expected, and when I ran it manually the text was present. I commented those out and left a POSSIBLE_BUG_NOTE comment.

Test plan

I wrote tests to check combinations of

Those tests can be run by

yarn jest e2e/__tests__/multiProjectRunner.test.ts

TODO

This is a draft, providing tests to check if all works as expected. What remains:

linux-foundation-easycla[bot] commented 1 month ago

CLA Not Signed

netlify[bot] commented 1 month ago

Deploy Preview for jestjs ready!

Built without sensitive environment variables

Name Link
Latest commit 654dec254612e123177bf06bf9bc8077d5468c98
Latest deploy log https://app.netlify.com/sites/jestjs/deploys/66b3fbad2f090a0008628b65
Deploy Preview https://deploy-preview-15249--jestjs.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.