From 63dcd3cee7a1f87eeac5b7f423838a712dae79bb Mon Sep 17 00:00:00 2001 From: Kristiyan Kostadinov Date: Fri, 19 Mar 2021 16:25:53 +0100 Subject: [PATCH] build: schematics unit tests not being run Currently the schematics unit tests aren't being run and are assumed as passing. This was a result of the following issues: 1. The `require.resolve` call in the `index.spec.ts` files was failing, but it was inside of a `Promise` so it got silenced. It caused the test runner to completely give up on running the tests. I was only able to see the failure using a debugger. 2. Even if the `require.resolve` call worked as expected, the `filegroup` call doesn't seem to actually work, at least on Windows which would prevent the files from showing up in the Bazel directory. I've switched it to `copy_to_bin`. 3. There was some issue with loading the `index.spec.ts`, presumably because the file name follows the same pattern as unit test files. I've renamed it to `paths.ts` as a workaround. --- src/cdk/schematics/BUILD.bazel | 10 ++++++---- src/cdk/schematics/index.spec.ts | 13 ------------- src/cdk/schematics/ng-add/index.spec.ts | 2 +- .../ng-generate/drag-drop/index.spec.ts | 2 +- .../schematics/ng-update/test-cases/index.spec.ts | 2 +- .../misc/external-resource-resolution.spec.ts | 2 +- .../test-cases/misc/global-stylesheets.spec.ts | 2 +- .../test-cases/misc/method-call-checks.spec.ts | 2 +- src/cdk/schematics/paths.ts | 15 +++++++++++++++ src/material/schematics/BUILD.bazel | 10 ++++++---- src/material/schematics/index.spec.ts | 13 ------------- src/material/schematics/ng-add/index.spec.ts | 2 +- .../ng-generate/address-form/index.spec.ts | 2 +- .../ng-generate/dashboard/index.spec.ts | 2 +- .../ng-generate/navigation/index.spec.ts | 2 +- .../schematics/ng-generate/table/index.spec.ts | 2 +- .../schematics/ng-generate/tree/index.spec.ts | 2 +- .../schematics/ng-update/test-cases/index.spec.ts | 2 +- .../test-cases/misc/class-inheritance.spec.ts | 2 +- .../test-cases/misc/constructor-checks.spec.ts | 2 +- .../test-cases/misc/import-checks.spec.ts | 2 +- .../test-cases/v8/misc/material-imports.spec.ts | 2 +- .../v9/misc/hammer-migration-v9.spec.ts | 2 +- .../test-cases/v9/misc/material-imports.spec.ts | 2 +- src/material/schematics/paths.ts | 15 +++++++++++++++ 25 files changed, 61 insertions(+), 53 deletions(-) delete mode 100644 src/cdk/schematics/index.spec.ts create mode 100644 src/cdk/schematics/paths.ts delete mode 100644 src/material/schematics/index.spec.ts create mode 100644 src/material/schematics/paths.ts diff --git a/src/cdk/schematics/BUILD.bazel b/src/cdk/schematics/BUILD.bazel index 357a3305505c..4514ce57edca 100644 --- a/src/cdk/schematics/BUILD.bazel +++ b/src/cdk/schematics/BUILD.bazel @@ -1,10 +1,10 @@ -load("@build_bazel_rules_nodejs//:index.bzl", "pkg_npm") +load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin", "pkg_npm") load("//:packages.bzl", "VERSION_PLACEHOLDER_REPLACEMENTS") load("//tools:defaults.bzl", "jasmine_node_test", "ts_library") package(default_visibility = ["//visibility:public"]) -filegroup( +copy_to_bin( name = "schematics_assets", srcs = glob([ "**/files/**/*", @@ -47,9 +47,11 @@ ts_library( # This package is intended to be combined into the main @angular/cdk package as a dep. pkg_npm( name = "npm_package", - srcs = [":schematics_assets"], substitutions = VERSION_PLACEHOLDER_REPLACEMENTS, - deps = [":schematics"], + deps = [ + ":schematics", + ":schematics_assets", + ], ) ### Testing rules diff --git a/src/cdk/schematics/index.spec.ts b/src/cdk/schematics/index.spec.ts deleted file mode 100644 index f6b7d16507d0..000000000000 --- a/src/cdk/schematics/index.spec.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Path to the schematic collection for non-migration schematics. Needs to use - * the workspace path as otherwise the resolution won't work on Windows. - */ -export const COLLECTION_PATH = require - .resolve('angular_material/src/cdk/schematics/collection.json'); - -/** - * Path to the schematic collection that includes the migrations. Needs to use - * the workspace path as otherwise the resolution won't work on Windows. - */ -export const MIGRATION_PATH = require - .resolve('angular_material/src/cdk/schematics/migration.json'); diff --git a/src/cdk/schematics/ng-add/index.spec.ts b/src/cdk/schematics/ng-add/index.spec.ts index d4a97ea72882..e65f416b1dd1 100644 --- a/src/cdk/schematics/ng-add/index.spec.ts +++ b/src/cdk/schematics/ng-add/index.spec.ts @@ -1,6 +1,6 @@ import {Tree} from '@angular-devkit/schematics'; import {SchematicTestRunner} from '@angular-devkit/schematics/testing'; -import {COLLECTION_PATH} from '../index.spec'; +import {COLLECTION_PATH} from '../paths'; import {createTestApp, getFileContent} from '../testing'; import {addPackageToPackageJson} from './package-config'; diff --git a/src/cdk/schematics/ng-generate/drag-drop/index.spec.ts b/src/cdk/schematics/ng-generate/drag-drop/index.spec.ts index 0b9be64f884b..8f8c5f1363eb 100644 --- a/src/cdk/schematics/ng-generate/drag-drop/index.spec.ts +++ b/src/cdk/schematics/ng-generate/drag-drop/index.spec.ts @@ -1,5 +1,5 @@ import {SchematicTestRunner} from '@angular-devkit/schematics/testing'; -import {COLLECTION_PATH} from '../../index.spec'; +import {COLLECTION_PATH} from '../../paths'; import {createTestApp, getFileContent} from '../../testing'; import {Schema} from './schema'; diff --git a/src/cdk/schematics/ng-update/test-cases/index.spec.ts b/src/cdk/schematics/ng-update/test-cases/index.spec.ts index a7156775da3b..7f13cc4ea6c1 100644 --- a/src/cdk/schematics/ng-update/test-cases/index.spec.ts +++ b/src/cdk/schematics/ng-update/test-cases/index.spec.ts @@ -1,5 +1,5 @@ import {defineJasmineTestCases, findBazelVersionTestCases} from '@angular/cdk/schematics/testing'; -import {MIGRATION_PATH} from '../../index.spec'; +import {MIGRATION_PATH} from '../../paths'; import {getAllVersionNames} from '../../update-tool/target-version'; describe('CDK upgrade test cases', () => { diff --git a/src/cdk/schematics/ng-update/test-cases/misc/external-resource-resolution.spec.ts b/src/cdk/schematics/ng-update/test-cases/misc/external-resource-resolution.spec.ts index 33e35fd414fd..e27a84bccef8 100644 --- a/src/cdk/schematics/ng-update/test-cases/misc/external-resource-resolution.spec.ts +++ b/src/cdk/schematics/ng-update/test-cases/misc/external-resource-resolution.spec.ts @@ -1,5 +1,5 @@ import {resolveBazelPath} from '@angular/cdk/schematics/testing'; -import {MIGRATION_PATH} from '../../../index.spec'; +import {MIGRATION_PATH} from '../../../paths'; import {createTestCaseSetup} from '../../../testing'; describe('ng-update external resource resolution', () => { diff --git a/src/cdk/schematics/ng-update/test-cases/misc/global-stylesheets.spec.ts b/src/cdk/schematics/ng-update/test-cases/misc/global-stylesheets.spec.ts index 74591c51f424..5c59f8a94fda 100644 --- a/src/cdk/schematics/ng-update/test-cases/misc/global-stylesheets.spec.ts +++ b/src/cdk/schematics/ng-update/test-cases/misc/global-stylesheets.spec.ts @@ -1,6 +1,6 @@ import {resolveBazelPath} from '@angular/cdk/schematics/testing'; import {readFileSync} from 'fs'; -import {MIGRATION_PATH} from '../../../index.spec'; +import {MIGRATION_PATH} from '../../../paths'; import {createTestCaseSetup} from '../../../testing'; describe('global stylesheets migration', () => { diff --git a/src/cdk/schematics/ng-update/test-cases/misc/method-call-checks.spec.ts b/src/cdk/schematics/ng-update/test-cases/misc/method-call-checks.spec.ts index 4e571af88fde..52e1f621fda9 100644 --- a/src/cdk/schematics/ng-update/test-cases/misc/method-call-checks.spec.ts +++ b/src/cdk/schematics/ng-update/test-cases/misc/method-call-checks.spec.ts @@ -1,5 +1,5 @@ import {resolveBazelPath} from '@angular/cdk/schematics/testing'; -import {MIGRATION_PATH} from '../../../index.spec'; +import {MIGRATION_PATH} from '../../../paths'; import {createTestCaseSetup} from '../../../testing'; describe('v6 method call checks', () => { diff --git a/src/cdk/schematics/paths.ts b/src/cdk/schematics/paths.ts new file mode 100644 index 000000000000..30a13660cc2d --- /dev/null +++ b/src/cdk/schematics/paths.ts @@ -0,0 +1,15 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import {join} from 'path'; + +/** Path to the schematic collection for non-migration schematics. */ +export const COLLECTION_PATH = join(__dirname, 'collection.json'); + +/** Path to the schematic collection that includes the migrations. */ +export const MIGRATION_PATH = join(__dirname, 'migration.json'); diff --git a/src/material/schematics/BUILD.bazel b/src/material/schematics/BUILD.bazel index fe10e3e4b37c..aaba69dd2ad8 100644 --- a/src/material/schematics/BUILD.bazel +++ b/src/material/schematics/BUILD.bazel @@ -1,10 +1,10 @@ -load("@build_bazel_rules_nodejs//:index.bzl", "pkg_npm") +load("@build_bazel_rules_nodejs//:index.bzl", "copy_to_bin", "pkg_npm") load("//:packages.bzl", "VERSION_PLACEHOLDER_REPLACEMENTS") load("//tools:defaults.bzl", "jasmine_node_test", "ts_library") package(default_visibility = ["//visibility:public"]) -filegroup( +copy_to_bin( name = "schematics_assets", srcs = ["ng-update/migrations/hammer-gestures-v9/gesture-config.template"] + glob([ "ng-generate/*/files/**/*", @@ -44,9 +44,11 @@ ts_library( # This package is intended to be combined into the main @angular/material package as a dep. pkg_npm( name = "npm_package", - srcs = [":schematics_assets"], substitutions = VERSION_PLACEHOLDER_REPLACEMENTS, - deps = [":schematics"], + deps = [ + ":schematics", + ":schematics_assets", + ], ) ### Testing rules diff --git a/src/material/schematics/index.spec.ts b/src/material/schematics/index.spec.ts deleted file mode 100644 index 41ef6c67085b..000000000000 --- a/src/material/schematics/index.spec.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Path to the schematic collection for non-migration schematics. Needs to use - * the workspace path as otherwise the resolution won't work on Windows. - */ -export const COLLECTION_PATH = require - .resolve('angular_material/src/material/schematics/collection.json'); - -/** - * Path to the schematic collection that includes the migrations. Needs to use - * the workspace path as otherwise the resolution won't work on Windows. - */ -export const MIGRATION_PATH = require - .resolve('angular_material/src/material/schematics/migration.json'); diff --git a/src/material/schematics/ng-add/index.spec.ts b/src/material/schematics/ng-add/index.spec.ts index bcc2384047f0..90499e3f10ca 100644 --- a/src/material/schematics/ng-add/index.spec.ts +++ b/src/material/schematics/ng-add/index.spec.ts @@ -10,7 +10,7 @@ import { } from '@angular/cdk/schematics'; import {createTestApp, createTestLibrary, getFileContent} from '@angular/cdk/schematics/testing'; import {getWorkspace} from '@schematics/angular/utility/workspace'; -import {COLLECTION_PATH} from '../index.spec'; +import {COLLECTION_PATH} from '../paths'; import {addPackageToPackageJson} from './package-config'; interface PackageJson { diff --git a/src/material/schematics/ng-generate/address-form/index.spec.ts b/src/material/schematics/ng-generate/address-form/index.spec.ts index cafaac9c0a9a..68fa400c1b8c 100644 --- a/src/material/schematics/ng-generate/address-form/index.spec.ts +++ b/src/material/schematics/ng-generate/address-form/index.spec.ts @@ -1,6 +1,6 @@ import {SchematicTestRunner} from '@angular-devkit/schematics/testing'; import {createTestApp, getFileContent} from '@angular/cdk/schematics/testing'; -import {COLLECTION_PATH} from '../../index.spec'; +import {COLLECTION_PATH} from '../../paths'; import {Schema} from './schema'; describe('Material address-form schematic', () => { diff --git a/src/material/schematics/ng-generate/dashboard/index.spec.ts b/src/material/schematics/ng-generate/dashboard/index.spec.ts index 8b75d19508e4..8560ae3f4b3f 100644 --- a/src/material/schematics/ng-generate/dashboard/index.spec.ts +++ b/src/material/schematics/ng-generate/dashboard/index.spec.ts @@ -1,6 +1,6 @@ import {SchematicTestRunner} from '@angular-devkit/schematics/testing'; import {createTestApp, getFileContent} from '@angular/cdk/schematics/testing'; -import {COLLECTION_PATH} from '../../index.spec'; +import {COLLECTION_PATH} from '../../paths'; import {Schema} from './schema'; describe('material-dashboard-schematic', () => { diff --git a/src/material/schematics/ng-generate/navigation/index.spec.ts b/src/material/schematics/ng-generate/navigation/index.spec.ts index 05ae99b6fae7..557c61ed67f0 100644 --- a/src/material/schematics/ng-generate/navigation/index.spec.ts +++ b/src/material/schematics/ng-generate/navigation/index.spec.ts @@ -1,6 +1,6 @@ import {SchematicTestRunner, UnitTestTree} from '@angular-devkit/schematics/testing'; import {createTestApp, getFileContent} from '@angular/cdk/schematics/testing'; -import {COLLECTION_PATH} from '../../index.spec'; +import {COLLECTION_PATH} from '../../paths'; import {Schema} from './schema'; diff --git a/src/material/schematics/ng-generate/table/index.spec.ts b/src/material/schematics/ng-generate/table/index.spec.ts index b6a17af6f7ee..0631000252a3 100644 --- a/src/material/schematics/ng-generate/table/index.spec.ts +++ b/src/material/schematics/ng-generate/table/index.spec.ts @@ -1,6 +1,6 @@ import {SchematicTestRunner} from '@angular-devkit/schematics/testing'; import {createTestApp, getFileContent} from '@angular/cdk/schematics/testing'; -import {COLLECTION_PATH} from '../../index.spec'; +import {COLLECTION_PATH} from '../../paths'; import {Schema} from './schema'; describe('material-table-schematic', () => { diff --git a/src/material/schematics/ng-generate/tree/index.spec.ts b/src/material/schematics/ng-generate/tree/index.spec.ts index 4d1c82c3459c..8deb523cade5 100644 --- a/src/material/schematics/ng-generate/tree/index.spec.ts +++ b/src/material/schematics/ng-generate/tree/index.spec.ts @@ -1,6 +1,6 @@ import {SchematicTestRunner} from '@angular-devkit/schematics/testing'; import {createTestApp, getFileContent} from '@angular/cdk/schematics/testing'; -import {COLLECTION_PATH} from '../../index.spec'; +import {COLLECTION_PATH} from '../../paths'; import {Schema} from './schema'; describe('Material tree schematic', () => { diff --git a/src/material/schematics/ng-update/test-cases/index.spec.ts b/src/material/schematics/ng-update/test-cases/index.spec.ts index 025a6947def0..d0d6eb37f0c5 100644 --- a/src/material/schematics/ng-update/test-cases/index.spec.ts +++ b/src/material/schematics/ng-update/test-cases/index.spec.ts @@ -1,6 +1,6 @@ import {getAllVersionNames} from '@angular/cdk/schematics'; import {defineJasmineTestCases, findBazelVersionTestCases} from '@angular/cdk/schematics/testing'; -import {MIGRATION_PATH} from '../../index.spec'; +import {MIGRATION_PATH} from '../../paths'; describe('Material upgrade test cases', () => { const versionNames = getAllVersionNames().map(versionName => versionName.toLowerCase()); diff --git a/src/material/schematics/ng-update/test-cases/misc/class-inheritance.spec.ts b/src/material/schematics/ng-update/test-cases/misc/class-inheritance.spec.ts index 1603ccdcd779..53ba4678274e 100644 --- a/src/material/schematics/ng-update/test-cases/misc/class-inheritance.spec.ts +++ b/src/material/schematics/ng-update/test-cases/misc/class-inheritance.spec.ts @@ -1,5 +1,5 @@ import {createTestCaseSetup, resolveBazelPath} from '@angular/cdk/schematics/testing'; -import {MIGRATION_PATH} from '../../../index.spec'; +import {MIGRATION_PATH} from '../../../paths'; describe('class inheritance misc checks', () => { describe('v6 class which extends MatFormFieldControl', () => { diff --git a/src/material/schematics/ng-update/test-cases/misc/constructor-checks.spec.ts b/src/material/schematics/ng-update/test-cases/misc/constructor-checks.spec.ts index da0e8771d0ec..02facde712cf 100644 --- a/src/material/schematics/ng-update/test-cases/misc/constructor-checks.spec.ts +++ b/src/material/schematics/ng-update/test-cases/misc/constructor-checks.spec.ts @@ -1,5 +1,5 @@ import {createTestCaseSetup, resolveBazelPath} from '@angular/cdk/schematics/testing'; -import {MIGRATION_PATH} from '../../../index.spec'; +import {MIGRATION_PATH} from '../../../paths'; describe('constructor checks', () => { it('should properly report invalid constructor expression signatures', async () => { diff --git a/src/material/schematics/ng-update/test-cases/misc/import-checks.spec.ts b/src/material/schematics/ng-update/test-cases/misc/import-checks.spec.ts index 3f4f7aaab497..90667d7d5e00 100644 --- a/src/material/schematics/ng-update/test-cases/misc/import-checks.spec.ts +++ b/src/material/schematics/ng-update/test-cases/misc/import-checks.spec.ts @@ -1,5 +1,5 @@ import {createTestCaseSetup, resolveBazelPath} from '@angular/cdk/schematics/testing'; -import {MIGRATION_PATH} from '../../../index.spec'; +import {MIGRATION_PATH} from '../../../paths'; describe('v6 import misc checks', () => { it('should report imports for deleted animation constants', async () => { diff --git a/src/material/schematics/ng-update/test-cases/v8/misc/material-imports.spec.ts b/src/material/schematics/ng-update/test-cases/v8/misc/material-imports.spec.ts index baeed6d5429d..d19e0b7f78fd 100644 --- a/src/material/schematics/ng-update/test-cases/v8/misc/material-imports.spec.ts +++ b/src/material/schematics/ng-update/test-cases/v8/misc/material-imports.spec.ts @@ -3,7 +3,7 @@ import { readFileContent, resolveBazelPath } from '@angular/cdk/schematics/testing'; -import {MIGRATION_PATH} from '../../../../index.spec'; +import {MIGRATION_PATH} from '../../../../paths'; describe('v8 material imports', () => { it('should re-map top-level material imports to the proper entry points', async () => { diff --git a/src/material/schematics/ng-update/test-cases/v9/misc/hammer-migration-v9.spec.ts b/src/material/schematics/ng-update/test-cases/v9/misc/hammer-migration-v9.spec.ts index a143a8b29f21..9916e3a63d63 100644 --- a/src/material/schematics/ng-update/test-cases/v9/misc/hammer-migration-v9.spec.ts +++ b/src/material/schematics/ng-update/test-cases/v9/misc/hammer-migration-v9.spec.ts @@ -3,7 +3,7 @@ import {dedent} from '@angular/cdk/testing/private'; import {addPackageToPackageJson} from '@angular/cdk/schematics/ng-add/package-config'; import {createTestCaseSetup, resolveBazelPath} from '@angular/cdk/schematics/testing'; import {readFileSync} from 'fs'; -import {MIGRATION_PATH} from '../../../../index.spec'; +import {MIGRATION_PATH} from '../../../../paths'; interface PackageJson { diff --git a/src/material/schematics/ng-update/test-cases/v9/misc/material-imports.spec.ts b/src/material/schematics/ng-update/test-cases/v9/misc/material-imports.spec.ts index 4cac96d67697..2007bf084765 100644 --- a/src/material/schematics/ng-update/test-cases/v9/misc/material-imports.spec.ts +++ b/src/material/schematics/ng-update/test-cases/v9/misc/material-imports.spec.ts @@ -1,5 +1,5 @@ import {createTestCaseSetup, readFileContent, resolveBazelPath} from '@angular/cdk/schematics/testing'; -import {MIGRATION_PATH} from '../../../../index.spec'; +import {MIGRATION_PATH} from '../../../../paths'; describe('v9 material imports', () => { it('should re-map top-level material imports to the proper entry points when top-level ' + diff --git a/src/material/schematics/paths.ts b/src/material/schematics/paths.ts new file mode 100644 index 000000000000..30a13660cc2d --- /dev/null +++ b/src/material/schematics/paths.ts @@ -0,0 +1,15 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + +import {join} from 'path'; + +/** Path to the schematic collection for non-migration schematics. */ +export const COLLECTION_PATH = join(__dirname, 'collection.json'); + +/** Path to the schematic collection that includes the migrations. */ +export const MIGRATION_PATH = join(__dirname, 'migration.json');