angular / angular/angular-cli

Coverage in library `unit-test` includes dependent library files and does not reduce runtime when using coverage.include

オープン
#33,484 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
angular/build:unit-test area: @angular/build
主要言語
TypeScript
スター
27k
フォーク
11.8k
平均マージ
14時間 23分
マージ済み PR(30日)
162

説明

### Command

test

### Is this a regression?

- [ ] Yes, this behavior used to work in the previous version

### The previous version in which this bug was not present was

_No response_

### Description

When running unit tests for a library with `@angular/build:unit-test`, the coverage report includes files from other workspace libraries that the tested library depends on, which is unexpected.

Although this can be restricted with `coverage.include`, coverage execution time remains unchanged.

### Minimal Reproduction

1. Create two Angular libraries in the workspace (e.g. `lib-a` and `lib-b`)
2. Make `lib-a` depend on `lib-b`
3. Add a unit test in `lib-a`
4. Run tests with coverage enabled:

```bash
ng test lib-a --coverage
```

### Observed behavior

- The coverage report contains files from `lib-b`, even though only `lib-a` is being tested.
- Restricting `coverage.include` changes the generated report but does not noticeably reduce execution time.

#### Performance

Times below are for a single library test run inside a larger Angular monorepo where the tested library depends on ~7 other libraries from the same workspace.
Execution times vary depending on configuration (development vs production) used to build each of the libraries.

Without coverage:

```text
Duration 24.94s
(transform 62.28s, setup 6.91s, import 98.85s, tests 982ms, environment 13.89s)
```

With coverage (production build):

```text
Duration 154.60s
(transform 78.24s, setup 13.24s, import 135.76s, tests 1.58s, environment 19.90s)
```

With coverage (development build)

```text
Duration 201.20s
(transform 57.83s, setup 10.09s, import 99.85s, tests 1.25s, environment 15.00s)
```

### Your Environment

```text
_ _ ____ _ ___
/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
/ △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
|___/

Angular CLI : 22.0.4
Angular : 22.0.4
Node.js : 24.16.0
Package Manager : npm 11.13.0
Operating System : linux x64

┌───────────────────────────────────┬───────────────────┬───────────────────┐
│ Package │ Installed Version │ Requested Version │
├───────────────────────────────────┼───────────────────┼───────────────────┤
│ @angular/animations │ 22.0.4 │ ^22.0.4 │
│ @angular/build │ 22.0.4 │ ^22.0.4 │
│ @angular/cli │ 22.0.4 │ ^22.0.4 │
│ @angular/common │ 22.0.4 │ ^22.0.4 │
│ @angular/compiler │ 22.0.4 │ ^22.0.4 │
│ @angular/compiler-cli │ 22.0.4 │ ^22.0.4 │
│ @angular/core │ 22.0.4 │ ^22.0.4 │
│ @angular/forms │ 22.0.4 │ ^22.0.4 │
│ @angular/localize │ 22.0.4 │ ^22.0.4 │
│ @angular/platform-browser │ 22.0.4 │ ^22.0.4 │
│ @angular/platform-browser-dynamic │ 22.0.4 │ ^22.0.4 │
│ @angular/router │ 22.0.4 │ ^22.0.4 │
│ @angular/service-worker │ 22.0.4 │ ^22.0.4 │
│ ng-packagr │ 22.0.0 │ ^22.0.0 │
│ rxjs │ 7.8.2 │ ~7.8.2 │
│ typescript │ 6.0.3 │ ^6.0.3 │
│ vitest │ 4.1.9 │ ^4.1.9 │
│ zone.js │ 0.16.2 │ ~0.16.2 │
└───────────────────────────────────┴───────────────────┴───────────────────┘
```

### Anything else relevant?

_No response_

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、依存関係のある2つの Angular workspace ライブラリと `@angular/build:unit-test` builder を使用して、`ng test lib-a --coverage` で問題を再現します。`coverage.include` を指定した場合と指定しない場合の coverage 出力と実行時間を比較します。依存ライブラリのファイルが除外され、coverage を制限することで実行時間も短縮されれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
angular, typescript
領域
build-system, performance, testing-qa
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
48/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。