Skip to content

unit-test builder resolves include paths relative to sourceRoot instead of project root, breaking secondary entry points tests #33467

Description

@Carlosamouco

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 using the @angular/build:unit-test builder in a library project that contains Secondary Entry Points (sub-packages), the builder incorrectly resolves the glob patterns defined in the include array (inside angular.json) relative to the project's sourceRoot (usually .../src) instead of the project's root.

Because the unit-test builder anchors include patterns to sourceRoot, it cannot discover test files located in secondary entry points unless developers use relative path traversal (for example, ../my-sub-package/**/*.spec.ts).

Minimal Reproduction

Create an Angular library project.
2. Generate a secondary entry point inside the library root (for example, projects/my-lib/my-sub-package/).
3. Add a unit test inside the secondary entry point:

projects/my-lib/my-sub-package/my-sub.spec.ts
  1. Configure the test target in angular.json using @angular/build:unit-test:

    {
      "options": {
        "include": [
          "**/*.spec.ts",
          "my-sub-package/**/*.spec.ts"
        ],
        "tsConfig": "projects/my-lib/tsconfig.spec.json"
      }
    }
  2. Run:

    ng test

Exception or Error

The builder should resolve the include patterns relative to the project's root, or otherwise recognize ng-packagr secondary entry points, allowing patterns such as:

{
  "include": [
    "**/*.spec.ts",
    "my-sub-package/**/*.spec.ts"
  ]
}

to correctly match test files located in:

projects/my-lib/my-sub-package/

Workaround

Currently, developers must escape the sourceRoot directory by using a parent path segment in angular.json:

{
  "options": {
    "include": [
      "**/*.spec.ts",
      "../my-sub-package/**/*.spec.ts"
    ],
    "tsConfig": "projects/my-lib/tsconfig.spec.json"
  }
}

Your Environment

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

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

┌───────────────────────────────────┬───────────────────┬───────────────────┐
│ Package                           │ Installed Version │ Requested Version │
├───────────────────────────────────┼───────────────────┼───────────────────┤
│ @angular/animations               │ 22.0.2            │ ^22.0.2           │
│ @angular/build                    │ 22.0.4            │ ^22.0.4           │
│ @angular/cli                      │ 22.0.4            │ ^22.0.4           │
│ @angular/common                   │ 22.0.2            │ ^22.0.2           │
│ @angular/compiler                 │ 22.0.2            │ ^22.0.2           │
│ @angular/compiler-cli             │ 22.0.2            │ ^22.0.2           │
│ @angular/core                     │ 22.0.2            │ ^22.0.2           │
│ @angular/forms                    │ 22.0.2            │ ^22.0.2           │
│ @angular/localize                 │ 22.0.2            │ ^22.0.2           │
│ @angular/platform-browser         │ 22.0.2            │ ^22.0.2           │
│ @angular/platform-browser-dynamic │ 22.0.2            │ ^22.0.2           │
│ @angular/router                   │ 22.0.2            │ ^22.0.2           │
│ @angular/service-worker           │ 22.0.2            │ ^22.0.2           │
│ 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions