Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Coverage report not clear and inconsistent with vue #2155

Closed
6 tasks done
Gnuk opened this issue Oct 15, 2022 · 6 comments · Fixed by #2232
Closed
6 tasks done

Coverage report not clear and inconsistent with vue #2155

Gnuk opened this issue Oct 15, 2022 · 6 comments · Fixed by #2232

Comments

@Gnuk
Copy link

Gnuk commented Oct 15, 2022

Describe the bug

On a vue with TypeScript, vitest and istanbul plugin:

Some coverage information are not clear and inconsistent especially in the .vue files but it's not the case using jest.

In the reproduction case, the coverage is 100% for each measures using jest but not with vitest

Actually, the problem is blocking to merge the PR jhipster/jhipster-lite#3231 on JHipster Lite generator, that's why I put a link here.

Sorry by advance if the reproduction case is not so minimal, it's because it's linked to the PR and this may evolve with the time. If really needed, please answer this issue but I think it's interesting to have the history from the JHipster Lite PR.

Reproduction

Prerequisites: latest LTS node version

Reproduction:

  • Clone my fork and go to the move-to-vitest branch.
  • Launch npm ci (or install)
  • Launch npm test
  • Look at the coverage (you can find the complete report under target/test-results)

You may get this in the summary:

=============================== Coverage summary ===============================
Statements   : 99.6% ( 996/1000 )
Branches     : 100% ( 175/175 )
Functions    : 99.17% ( 483/487 )
Lines        : 99.56% ( 920/924 )
================================================================================

The expected coverage can be reproduced using jest, it's just the same way to reproduce:

  • Clone the original repository.
  • Launch npm ci (or install)
  • Launch npm test
  • Look at the coverage (you can find the complete report under target/test-results)

You may get this in the summary:

=============================== Coverage summary ===============================
Statements   : 100% ( 1033/1033 )
Branches     : 100% ( 110/110 )
Functions    : 100% ( 451/451 )
Lines        : 100% ( 948/948 )
================================================================================

Note: if you want the exact behaviour between jest and vitest, you can also switch to the previous commit from my fork because the goal of the fork is to migrate from jest to vitest.

System Info

System:
    OS: Linux 5.19 Arch Linux
    CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
    Memory: 5.92 GB / 15.27 GB
    Container: Yes
    Shell: 5.9 - /usr/bin/zsh
  Binaries:
    Node: 16.17.0 - ~/code/jhipster-lite/node_modules/.bin/node
    npm: 8.15.0 - ~/.nvm/versions/node/v16.17.0/bin/npm
  Browsers:
    Chromium: 106.0.5249.119
    Firefox: 105.0.3
  npmPackages:
    @vitejs/plugin-vue: 3.1.2 => 3.1.2 
    vite: 3.1.8 => 3.1.8 
    vitest: 0.24.1 => 0.24.1

Used Package Manager

npm

Validations

@AriPerkkio
Copy link
Member

The coverage report from Jest doesn't contain any .vue files so comparing the two is not possible here.

Are the uncovered parts in Vitest's reports really covered by tests? I'm not familiar with Vue so I cannot really spot these from tests. If you include these .vue files in Jest report, the percentage should be identical.

// module/primary/modules-patch ModulesPatch.vue
@keyup.enter="toggleModule(module.slug)"
              ^^^^^^^^^^^^^^^^^^^^^^^^^
Coverage report from Jest - there are no vue files reported at all
---------------------------------------|---------|----------|---------|---------|-------------------
File                                   | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
---------------------------------------|---------|----------|---------|---------|-------------------
All files                              |     100 |      100 |     100 |     100 |                   
 common/domain                         |     100 |      100 |     100 |     100 |                   
  Memoizer.ts                          |     100 |      100 |     100 |     100 |                   
  Optional.ts                          |     100 |      100 |     100 |     100 |                   
 common/primary/app                    |     100 |      100 |     100 |     100 |                   
  App.component.ts                     |     100 |      100 |     100 |     100 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
 common/primary/header                 |     100 |      100 |     100 |     100 |                   
  Header.component.ts                  |     100 |      100 |     100 |     100 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
 common/primary/icon                   |     100 |      100 |     100 |     100 |                   
  Icon.component.ts                    |     100 |      100 |     100 |     100 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
 common/primary/timeout                |     100 |      100 |     100 |     100 |                   
  Timeout.ts                           |     100 |      100 |     100 |     100 |                   
 common/primary/toast                  |     100 |      100 |     100 |     100 |                   
  Toast.component.ts                   |     100 |      100 |     100 |     100 |                   
  ToastType.ts                         |     100 |      100 |     100 |     100 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
 common/secondary                      |     100 |      100 |     100 |     100 |                   
  ConsoleLogger.ts                     |     100 |      100 |     100 |     100 |                   
 common/secondary/alert                |     100 |      100 |     100 |     100 |                   
  AlertType.ts                         |     100 |      100 |     100 |     100 |                   
  MittAlertBus.ts                      |     100 |      100 |     100 |     100 |                   
  MittAlertListener.ts                 |     100 |      100 |     100 |     100 |                   
 http                                  |     100 |      100 |     100 |     100 |                   
  AxiosHttp.ts                         |     100 |      100 |     100 |     100 |                   
 loader/primary                        |     100 |      100 |     100 |     100 |                   
  Loader.ts                            |     100 |      100 |     100 |     100 |                   
 module/domain                         |     100 |      100 |     100 |     100 |                   
  ModuleSlug.ts                        |     100 |      100 |     100 |     100 |                   
  Modules.ts                           |     100 |      100 |     100 |     100 |                   
 module/domain/landscape               |     100 |      100 |     100 |     100 |                   
  Landscape.ts                         |     100 |      100 |     100 |     100 |                   
  LandscapeFeature.ts                  |     100 |      100 |     100 |     100 |                   
  LandscapeFeatureSlug.ts              |     100 |      100 |     100 |     100 |                   
  LandscapeModule.ts                   |     100 |      100 |     100 |     100 |                   
  LandscapeSelectionTree.ts            |     100 |      100 |     100 |     100 |                   
  LandscapeUnselectionTree.ts          |     100 |      100 |     100 |     100 |                   
 module/primary                        |     100 |      100 |     100 |     100 |                   
  PropertyValue.ts                     |     100 |      100 |     100 |     100 |                   
 module/primary/landscape              |     100 |      100 |     100 |     100 |                   
  Landscape.component.ts               |     100 |      100 |     100 |     100 |                   
  LandscapeConnector.ts                |     100 |      100 |     100 |     100 |                   
  LandscapeConnectorsSize.ts           |     100 |      100 |     100 |     100 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
 module/primary/landscape-module       |     100 |      100 |     100 |     100 |                   
  LandscapeModule.component.ts         |     100 |      100 |     100 |     100 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
 module/primary/module-parameters      |     100 |      100 |     100 |     100 |                   
  ModuleParameters.component.ts        |     100 |      100 |     100 |     100 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
 module/primary/module-properties-form |     100 |      100 |     100 |     100 |                   
  ModulePropertiesForm.component.ts    |     100 |      100 |     100 |     100 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
 module/primary/modules-patch          |     100 |      100 |     100 |     100 |                   
  ComponentModulePatch.ts              |     100 |      100 |     100 |     100 |                   
  ComponentModulePatchCategory.ts      |     100 |      100 |     100 |     100 |                   
  ComponentModulesPatch.ts             |     100 |      100 |     100 |     100 |                   
  ModulesPatch.component.ts            |     100 |      100 |     100 |     100 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
 module/primary/project-actions        |     100 |      100 |     100 |     100 |                   
  ProjectActions.component.ts          |     100 |      100 |     100 |     100 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
 module/primary/tag-filter             |     100 |      100 |     100 |     100 |                   
  TagFilter.component.ts               |     100 |      100 |     100 |     100 |                   
  index.ts                             |     100 |      100 |     100 |     100 |                   
 module/secondary                      |     100 |      100 |     100 |     100 |                   
  RestAppliedModule.ts                 |     100 |      100 |     100 |     100 |                   
  RestLandscape.ts                     |     100 |      100 |     100 |     100 |                   
  RestLandscapeElement.ts              |     100 |      100 |     100 |     100 |                   
  RestLandscapeFeature.ts              |     100 |      100 |     100 |     100 |                   
  RestLandscapeLevel.ts                |     100 |      100 |     100 |     100 |                   
  RestLandscapeModule.ts               |     100 |      100 |     100 |     100 |                   
  RestModule.ts                        |     100 |      100 |     100 |     100 |                   
  RestModulePropertiesDefinitions.ts   |     100 |      100 |     100 |     100 |                   
  RestModulePropertyDefinition.ts      |     100 |      100 |     100 |     100 |                   
  RestModuleToApply.ts                 |     100 |      100 |     100 |     100 |                   
  RestModules.ts                       |     100 |      100 |     100 |     100 |                   
  RestModulesRepository.ts             |     100 |      100 |     100 |     100 |                   
  RestModulesToApply.ts                |     100 |      100 |     100 |     100 |                   
  RestProjectFoldersRepository.ts      |     100 |      100 |     100 |     100 |                   
  RestProjectHistory.ts                |     100 |      100 |     100 |     100 |                   
---------------------------------------|---------|----------|---------|---------|-------------------
Coverage report from vitest - this one includes vue files
 % Coverage report from istanbul
---------------------------------------------------------------------|---------|----------|---------|---------|-------------------
File                                                                 | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
---------------------------------------------------------------------|---------|----------|---------|---------|-------------------
All files                                                            |    99.6 |      100 |   99.17 |   99.56 |                   
 common/domain                                                       |     100 |      100 |     100 |     100 |                   
  Memoizer.ts                                                        |     100 |      100 |     100 |     100 |                   
  Optional.ts                                                        |     100 |      100 |     100 |     100 |                   
 common/primary/app                                                  |     100 |      100 |     100 |     100 |                   
  App.vue                                                            |     100 |      100 |     100 |     100 |                   
 common/primary/header                                               |     100 |      100 |     100 |     100 |                   
  Header.component.ts?vue&type=script&src=true&lang.ts               |     100 |      100 |     100 |     100 |                   
  Header.vue                                                         |     100 |      100 |     100 |     100 |                   
 common/primary/timeout                                              |     100 |      100 |     100 |     100 |                   
  Timeout.ts                                                         |     100 |      100 |     100 |     100 |                   
 common/primary/toast                                                |     100 |      100 |     100 |     100 |                   
  Toast.component.ts?vue&type=script&src=true&lang.ts                |     100 |      100 |     100 |     100 |                   
  Toast.vue                                                          |     100 |      100 |     100 |     100 |                   
  ToastType.ts                                                       |     100 |      100 |     100 |     100 |                   
 common/secondary                                                    |     100 |      100 |     100 |     100 |                   
  ConsoleLogger.ts                                                   |     100 |      100 |     100 |     100 |                   
 common/secondary/alert                                              |     100 |      100 |     100 |     100 |                   
  AlertType.ts                                                       |     100 |      100 |     100 |     100 |                   
  MittAlertBus.ts                                                    |     100 |      100 |     100 |     100 |                   
  MittAlertListener.ts                                               |     100 |      100 |     100 |     100 |                   
 http                                                                |     100 |      100 |     100 |     100 |                   
  AxiosHttp.ts                                                       |     100 |      100 |     100 |     100 |                   
 loader/primary                                                      |     100 |      100 |     100 |     100 |                   
  Loader.ts                                                          |     100 |      100 |     100 |     100 |                   
 module/domain                                                       |     100 |      100 |     100 |     100 |                   
  ModuleSlug.ts                                                      |     100 |      100 |     100 |     100 |                   
  Modules.ts                                                         |     100 |      100 |     100 |     100 |                   
 module/domain/landscape                                             |     100 |      100 |     100 |     100 |                   
  Landscape.ts                                                       |     100 |      100 |     100 |     100 |                   
  LandscapeFeature.ts                                                |     100 |      100 |     100 |     100 |                   
  LandscapeFeatureSlug.ts                                            |     100 |      100 |     100 |     100 |                   
  LandscapeModule.ts                                                 |     100 |      100 |     100 |     100 |                   
  LandscapeSelectionTree.ts                                          |     100 |      100 |     100 |     100 |                   
  LandscapeUnselectionTree.ts                                        |     100 |      100 |     100 |     100 |                   
 module/primary                                                      |     100 |      100 |     100 |     100 |                   
  PropertyValue.ts                                                   |     100 |      100 |     100 |     100 |                   
 module/primary/landscape                                            |   99.54 |      100 |   98.78 |   99.53 |                   
  Landscape.component.ts?vue&type=script&src=true&lang.ts            |     100 |      100 |     100 |     100 |                   
  Landscape.vue                                                      |   96.55 |      100 |    92.3 |   96.55 | 57                
  LandscapeConnector.ts                                              |     100 |      100 |     100 |     100 |                   
  LandscapeConnectorsSize.ts                                         |     100 |      100 |     100 |     100 |                   
 module/primary/landscape-module                                     |     100 |      100 |     100 |     100 |                   
  LandscapeModule.component.ts?vue&type=script&src=true&lang.ts      |     100 |      100 |     100 |     100 |                   
  LandscapeModule.vue                                                |     100 |      100 |     100 |     100 |                   
 module/primary/module-parameters                                    |     100 |      100 |     100 |     100 |                   
  ModuleParameters.component.ts?vue&type=script&src=true&lang.ts     |     100 |      100 |     100 |     100 |                   
  ModuleParameters.vue                                               |     100 |      100 |     100 |     100 |                   
 module/primary/module-properties-form                               |     100 |      100 |     100 |     100 |                   
  ModulePropertiesForm.component.ts?vue&type=script&src=true&lang.ts |     100 |      100 |     100 |     100 |                   
  ModulePropertiesForm.vue                                           |     100 |      100 |     100 |     100 |                   
 module/primary/modules-patch                                        |   98.29 |      100 |      96 |   98.17 |                   
  ComponentModulePatch.ts                                            |     100 |      100 |     100 |     100 |                   
  ComponentModulePatchCategory.ts                                    |     100 |      100 |     100 |     100 |                   
  ComponentModulesPatch.ts                                           |     100 |      100 |     100 |     100 |                   
  ModulesPatch.component.ts?vue&type=script&src=true&lang.ts         |     100 |      100 |     100 |     100 |                   
  ModulesPatch.vue                                                   |   86.36 |      100 |   66.66 |   85.71 | 8,10,37           
 module/primary/project-actions                                      |     100 |      100 |     100 |     100 |                   
  ProjectActions.component.ts?vue&type=script&src=true&lang.ts       |     100 |      100 |     100 |     100 |                   
  ProjectActions.vue                                                 |     100 |      100 |     100 |     100 |                   
 module/primary/tag-filter                                           |     100 |      100 |     100 |     100 |                   
  TagFilter.component.ts?vue&type=script&src=true&lang.ts            |     100 |      100 |     100 |     100 |                   
  TagFilter.vue                                                      |     100 |      100 |     100 |     100 |                   
 module/secondary                                                    |     100 |      100 |     100 |     100 |                   
  RestAppliedModule.ts                                               |     100 |      100 |     100 |     100 |                   
  RestLandscape.ts                                                   |     100 |      100 |     100 |     100 |                   
  RestLandscapeElement.ts                                            |     100 |      100 |     100 |     100 |                   
  RestLandscapeFeature.ts                                            |     100 |      100 |     100 |     100 |                   
  RestLandscapeLevel.ts                                              |     100 |      100 |     100 |     100 |                   
  RestLandscapeModule.ts                                             |     100 |      100 |     100 |     100 |                   
  RestModule.ts                                                      |     100 |      100 |     100 |     100 |                   
  RestModulePropertiesDefinitions.ts                                 |     100 |      100 |     100 |     100 |                   
  RestModulePropertyDefinition.ts                                    |     100 |      100 |     100 |     100 |                   
  RestModuleToApply.ts                                               |     100 |      100 |     100 |     100 |                   
  RestModules.ts                                                     |     100 |      100 |     100 |     100 |                   
  RestModulesRepository.ts                                           |     100 |      100 |     100 |     100 |                   
  RestModulesToApply.ts                                              |     100 |      100 |     100 |     100 |                   
  RestProjectFoldersRepository.ts                                    |     100 |      100 |     100 |     100 |                   
  RestProjectHistory.ts                                              |     100 |      100 |     100 |     100 |                   
---------------------------------------------------------------------|---------|----------|---------|---------|-------------------

@Gnuk
Copy link
Author

Gnuk commented Oct 17, 2022

Ok, I see. In the jest subset, we have the coverage from the called ".component.ts" files from the ".vue" <script> tag files.

I saw, in the vitest coverage you have the ".component.ts" files but with a query string suffix (I saw also the suffix files can't be open). The .component.ts files are the files we use to have a separate file under Vue SFC.

@AriPerkkio
Copy link
Member

Everything else on the coverage report looks good to me. If there is something missing or marked falsely in the reports, I'm happy to help if you can set up a minimal reproduction case. Using whole jhipster-lite repository for debugging is a bit much. 😄

I saw, in the vitest coverage you have the ".component.ts" files but with a query string suffix (I saw also the suffix files can't be open).

This looks like a separate issue that should be fixed. I'll look into it.

@Gnuk
Copy link
Author

Gnuk commented Oct 18, 2022

I just copy @pascalgrimaud to help him follow the issue.

I'm a little busy this week, so, Pascal, if you want to reproduce it in a minimal case, don't hesitate ;) otherwise, i'll do it when I'm back.

@Gnuk
Copy link
Author

Gnuk commented Oct 26, 2022

@AriPerkkio I've just updated the vitest and @vitest/coverage-istanbul, so now I just have the path problem.

Seems to be a problem on the sonar report I use on Windows but not Linux, here is the stack: https://github.com/jhipster/jhipster-lite/actions/runs/3329636871/jobs/5507108397

So to resume, currently the problem seems to be related to the unexisting path, example from the stack:

Error: ENOENT: no such file or directory, open 'D:\a\jhipster-lite\jhipster-lite\target\test-results\common\primary\header\Header.component.ts?vue&type=script&src=true&lang.ts.html'

If you want to reproduce, it's needed to go to target/test-results/index.html, open it in a browser ang going to a .component.ts file to see the problem.

Don't know if you prefer follow it in this issue or another one.

@AriPerkkio
Copy link
Member

I can reproduce the issue now and with some quick hacks it seems to be possible to fix this. This required query parameter removal from coverage maps entries, path fields and inputSourceMap.sources. This was indeed a quick hack and should not be used as is - I'll look for a proper solution.

Here the file opens fine and shows coverage nicely:

image

Coverage text report without query params
---------------------------------------|---------|----------|---------|---------|-------------------
File                                   | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
---------------------------------------|---------|----------|---------|---------|-------------------
All files                              |    99.6 |      100 |   99.17 |   99.56 |                   
 common/domain                         |     100 |      100 |     100 |     100 |                   
  Memoizer.ts                          |     100 |      100 |     100 |     100 |                   
  Optional.ts                          |     100 |      100 |     100 |     100 |                   
 common/primary/app                    |     100 |      100 |     100 |     100 |                   
  App.vue                              |     100 |      100 |     100 |     100 |                   
 common/primary/header                 |     100 |      100 |     100 |     100 |                   
  Header.component.ts                  |     100 |      100 |     100 |     100 |                   
  Header.vue                           |     100 |      100 |     100 |     100 |                   
 common/primary/timeout                |     100 |      100 |     100 |     100 |                   
  Timeout.ts                           |     100 |      100 |     100 |     100 |                   
 common/primary/toast                  |     100 |      100 |     100 |     100 |                   
  Toast.component.ts                   |     100 |      100 |     100 |     100 |                   
  Toast.vue                            |     100 |      100 |     100 |     100 |                   
  ToastType.ts                         |     100 |      100 |     100 |     100 |                   
 common/secondary                      |     100 |      100 |     100 |     100 |                   
  ConsoleLogger.ts                     |     100 |      100 |     100 |     100 |                   
 common/secondary/alert                |     100 |      100 |     100 |     100 |                   
  AlertType.ts                         |     100 |      100 |     100 |     100 |                   
  MittAlertBus.ts                      |     100 |      100 |     100 |     100 |                   
  MittAlertListener.ts                 |     100 |      100 |     100 |     100 |                   
 http                                  |     100 |      100 |     100 |     100 |                   
  AxiosHttp.ts                         |     100 |      100 |     100 |     100 |                   
 loader/primary                        |     100 |      100 |     100 |     100 |                   
  Loader.ts                            |     100 |      100 |     100 |     100 |                   
 module/domain                         |     100 |      100 |     100 |     100 |                   
  ModuleSlug.ts                        |     100 |      100 |     100 |     100 |                   
  Modules.ts                           |     100 |      100 |     100 |     100 |                   
 module/domain/landscape               |     100 |      100 |     100 |     100 |                   
  Landscape.ts                         |     100 |      100 |     100 |     100 |                   
  LandscapeFeature.ts                  |     100 |      100 |     100 |     100 |                   
  LandscapeFeatureSlug.ts              |     100 |      100 |     100 |     100 |                   
  LandscapeModule.ts                   |     100 |      100 |     100 |     100 |                   
  LandscapeSelectionTree.ts            |     100 |      100 |     100 |     100 |                   
  LandscapeUnselectionTree.ts          |     100 |      100 |     100 |     100 |                   
 module/primary                        |     100 |      100 |     100 |     100 |                   
  PropertyValue.ts                     |     100 |      100 |     100 |     100 |                   
 module/primary/landscape              |   99.54 |      100 |   98.78 |   99.53 |                   
  Landscape.component.ts               |     100 |      100 |     100 |     100 |                   
  Landscape.vue                        |   96.55 |      100 |    92.3 |   96.55 | 57                
  LandscapeConnector.ts                |     100 |      100 |     100 |     100 |                   
  LandscapeConnectorsSize.ts           |     100 |      100 |     100 |     100 |                   
 module/primary/landscape-module       |     100 |      100 |     100 |     100 |                   
  LandscapeModule.component.ts         |     100 |      100 |     100 |     100 |                   
  LandscapeModule.vue                  |     100 |      100 |     100 |     100 |                   
 module/primary/module-parameters      |     100 |      100 |     100 |     100 |                   
  ModuleParameters.component.ts        |     100 |      100 |     100 |     100 |                   
  ModuleParameters.vue                 |     100 |      100 |     100 |     100 |                   
 module/primary/module-properties-form |     100 |      100 |     100 |     100 |                   
  ModulePropertiesForm.component.ts    |     100 |      100 |     100 |     100 |                   
  ModulePropertiesForm.vue             |     100 |      100 |     100 |     100 |                   
 module/primary/modules-patch          |   98.29 |      100 |      96 |   98.17 |                   
  ComponentModulePatch.ts              |     100 |      100 |     100 |     100 |                   
  ComponentModulePatchCategory.ts      |     100 |      100 |     100 |     100 |                   
  ComponentModulesPatch.ts             |     100 |      100 |     100 |     100 |                   
  ModulesPatch.component.ts            |     100 |      100 |     100 |     100 |                   
  ModulesPatch.vue                     |   86.36 |      100 |   66.66 |   85.71 | 8,10,37           
 module/primary/project-actions        |     100 |      100 |     100 |     100 |                   
  ProjectActions.component.ts          |     100 |      100 |     100 |     100 |                   
  ProjectActions.vue                   |     100 |      100 |     100 |     100 |                   
 module/primary/tag-filter             |     100 |      100 |     100 |     100 |                   
  TagFilter.component.ts               |     100 |      100 |     100 |     100 |                   
  TagFilter.vue                        |     100 |      100 |     100 |     100 |                   
 module/secondary                      |     100 |      100 |     100 |     100 |                   
  RestAppliedModule.ts                 |     100 |      100 |     100 |     100 |                   
  RestLandscape.ts                     |     100 |      100 |     100 |     100 |                   
  RestLandscapeElement.ts              |     100 |      100 |     100 |     100 |                   
  RestLandscapeFeature.ts              |     100 |      100 |     100 |     100 |                   
  RestLandscapeLevel.ts                |     100 |      100 |     100 |     100 |                   
  RestLandscapeModule.ts               |     100 |      100 |     100 |     100 |                   
  RestModule.ts                        |     100 |      100 |     100 |     100 |                   
  RestModulePropertiesDefinitions.ts   |     100 |      100 |     100 |     100 |                   
  RestModulePropertyDefinition.ts      |     100 |      100 |     100 |     100 |                   
  RestModuleToApply.ts                 |     100 |      100 |     100 |     100 |                   
  RestModules.ts                       |     100 |      100 |     100 |     100 |                   
  RestModulesRepository.ts             |     100 |      100 |     100 |     100 |                   
  RestModulesToApply.ts                |     100 |      100 |     100 |     100 |                   
  RestProjectFoldersRepository.ts      |     100 |      100 |     100 |     100 |                   
  RestProjectHistory.ts                |     100 |      100 |     100 |     100 |                   
---------------------------------------|---------|----------|---------|---------|-------------------

=============================== Coverage summary ===============================
Statements   : 99.6% ( 996/1000 )
Branches     : 100% ( 175/175 )
Functions    : 99.17% ( 483/487 )
Lines        : 99.56% ( 920/924 )
================================================================================

However this seems to be quite tricky to fix. I'll need to check how Jest is doing this before applying any real fixes to Vitest. nyc has no similar problems as it does not instrument files on-demand like Vitest does. I hope Jest works similarly as Vitest and has a reference solution for this.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants