angular / angular/angular-cli

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

Đang mở
#33,484 0 bình luận 0 reaction 0 người được giao Xem trên GitHub
angular/build:unit-test area: @angular/build
Ngôn ngữ chính
TypeScript
Star
27k
Fork
11.8k
Merge trung bình
14 giờ 23 phút
Pull request đã merge (30 ngày)
162

Mô tả

### 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_

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu bằng cách tái hiện vấn đề với `ng test lib-a --coverage` bằng cách sử dụng hai thư viện Angular workspace phụ thuộc lẫn nhau và builder `@angular/build:unit-test`. So sánh đầu ra coverage và thời gian thực thi khi có và không có `coverage.include`; được xem là hoàn tất khi các tệp của thư viện phụ thuộc bị loại trừ và việc giới hạn coverage cũng làm giảm thời gian chạy.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
angular, typescript
Lĩnh vực
build-system, performance, testing-qa
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Ít trao đổi
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
48/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.