diff --git a/packages/angular/migrations.spec.ts b/packages/angular/migrations.spec.ts index 5fd44f2a67..bcbc9d6861 100644 --- a/packages/angular/migrations.spec.ts +++ b/packages/angular/migrations.spec.ts @@ -1,15 +1,8 @@ import path = require('path'); import json = require('./migrations.json'); -import { MigrationsJsonEntry } from 'nx/src/config/misc-interfaces'; + +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; describe('Angular migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: MigrationsJsonEntry) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); + assertValidMigrationPaths(json, __dirname); }); diff --git a/packages/cypress/migrations.spec.ts b/packages/cypress/migrations.spec.ts index 3d02af95e4..84a6358d5c 100644 --- a/packages/cypress/migrations.spec.ts +++ b/packages/cypress/migrations.spec.ts @@ -1,14 +1,7 @@ -import path = require('path'); import json = require('./migrations.json'); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; + describe('Cypress migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators || {}).forEach((m: any) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); + assertValidMigrationPaths(json, __dirname); }); diff --git a/packages/detox/migrations.spec.ts b/packages/detox/migrations.spec.ts index e1d1a0289e..a7f1e7b599 100644 --- a/packages/detox/migrations.spec.ts +++ b/packages/detox/migrations.spec.ts @@ -1,14 +1,7 @@ -import path = require('path'); import json = require('./migrations.json'); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; + describe('Detox migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: any) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); + assertValidMigrationPaths(json, __dirname); }); diff --git a/packages/devkit/internal-testing-utils.ts b/packages/devkit/internal-testing-utils.ts new file mode 100644 index 0000000000..c6e81cc8b6 --- /dev/null +++ b/packages/devkit/internal-testing-utils.ts @@ -0,0 +1,3 @@ +/* eslint-disable @typescript-eslint/no-restricted-imports */ +export * from 'nx/internal-testing-utils/assert-valid-migrations'; +export * from 'nx/internal-testing-utils/run-migration-against-this-workspace'; diff --git a/packages/devkit/migrations.spec.ts b/packages/devkit/migrations.spec.ts new file mode 100644 index 0000000000..18670af1e1 --- /dev/null +++ b/packages/devkit/migrations.spec.ts @@ -0,0 +1,7 @@ +import json = require('./migrations.json'); + +import { assertValidMigrationPaths } from './internal-testing-utils'; + +describe('Devkit migrations', () => { + assertValidMigrationPaths(json, __dirname); +}); diff --git a/packages/devkit/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.spec.ts b/packages/devkit/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.spec.ts index 72be57949c..e162167a66 100644 --- a/packages/devkit/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.spec.ts +++ b/packages/devkit/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.spec.ts @@ -1,3 +1,4 @@ +import { assertRunsAgainstNxRepo } from 'nx/internal-testing-utils/run-migration-against-this-workspace'; import { createTreeWithEmptyWorkspace } from 'nx/src/generators/testing-utils/create-tree-with-empty-workspace'; import { Tree } from 'nx/src/generators/tree'; import { readJson, updateJson } from 'nx/src/generators/utils/json'; @@ -35,4 +36,6 @@ describe('update-16-0-0-add-nx-packages', () => { expect(newDependencyVersion).toBeDefined(); }); + + assertRunsAgainstNxRepo(replacePackage); }); diff --git a/packages/devkit/tsconfig.lib.json b/packages/devkit/tsconfig.lib.json index 74960efbae..3537587770 100644 --- a/packages/devkit/tsconfig.lib.json +++ b/packages/devkit/tsconfig.lib.json @@ -11,6 +11,7 @@ "**/*.test.ts", "**/*_spec.ts", "**/*_test.ts", + "internal-testing-utils.ts", "jest.config.ts" ], "files": ["./index.d.ts"], diff --git a/packages/devkit/tsconfig.spec.json b/packages/devkit/tsconfig.spec.json index 869c90c526..e1b0f716d7 100644 --- a/packages/devkit/tsconfig.spec.json +++ b/packages/devkit/tsconfig.spec.json @@ -17,6 +17,7 @@ "**/*.spec.jsx", "**/*.test.jsx", "**/*.d.ts", + "internal-testing-utils.ts", "jest.config.ts" ] } diff --git a/packages/esbuild/migrations.spec.ts b/packages/esbuild/migrations.spec.ts index acd833541c..4277ae6abd 100644 --- a/packages/esbuild/migrations.spec.ts +++ b/packages/esbuild/migrations.spec.ts @@ -1,14 +1,7 @@ -import path = require('path'); import json = require('./migrations.json'); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; + describe('esbuild migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: any) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); + assertValidMigrationPaths(json, __dirname); }); diff --git a/packages/eslint-plugin/migrations.spec.ts b/packages/eslint-plugin/migrations.spec.ts new file mode 100644 index 0000000000..cbda0db091 --- /dev/null +++ b/packages/eslint-plugin/migrations.spec.ts @@ -0,0 +1,7 @@ +import json = require('./migrations.json'); + +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; + +describe('eslint-plugin migrations', () => { + assertValidMigrationPaths(json, __dirname); +}); diff --git a/packages/expo/migrations.spec.ts b/packages/expo/migrations.spec.ts new file mode 100644 index 0000000000..df35023b51 --- /dev/null +++ b/packages/expo/migrations.spec.ts @@ -0,0 +1,8 @@ +import json = require('./migrations.json'); + +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('expo migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); +}); diff --git a/packages/express/migrations.spec.ts b/packages/express/migrations.spec.ts index 396880ec7f..bed03166f2 100644 --- a/packages/express/migrations.spec.ts +++ b/packages/express/migrations.spec.ts @@ -1,14 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -describe('Express migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: any) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('express migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); }); diff --git a/packages/jest/migrations.spec.ts b/packages/jest/migrations.spec.ts index e6720a891a..d3d638d4d5 100644 --- a/packages/jest/migrations.spec.ts +++ b/packages/jest/migrations.spec.ts @@ -1,15 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -import { MigrationsJsonEntry } from 'nx/src/config/misc-interfaces'; -describe('Jest migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: MigrationsJsonEntry) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('jest migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); }); diff --git a/packages/js/migrations.spec.ts b/packages/js/migrations.spec.ts index 4e274814ef..fb4fb5f673 100644 --- a/packages/js/migrations.spec.ts +++ b/packages/js/migrations.spec.ts @@ -1,14 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -describe('JS migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: any) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('js migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); }); diff --git a/packages/linter/migrations.spec.ts b/packages/linter/migrations.spec.ts index 868be861df..2039dd7584 100644 --- a/packages/linter/migrations.spec.ts +++ b/packages/linter/migrations.spec.ts @@ -1,15 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -import { MigrationsJsonEntry } from 'nx/src/config/misc-interfaces'; -describe('Linter migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: MigrationsJsonEntry) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('linter migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); }); diff --git a/packages/nest/migrations.spec.ts b/packages/nest/migrations.spec.ts index c9ee8857f9..b584f3ffa0 100644 --- a/packages/nest/migrations.spec.ts +++ b/packages/nest/migrations.spec.ts @@ -1,15 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -import { MigrationsJsonEntry } from 'nx/src/config/misc-interfaces'; -describe('Nest migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: MigrationsJsonEntry) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('nest migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); }); diff --git a/packages/next/migrations.spec.ts b/packages/next/migrations.spec.ts index e54acf24f2..b9398cf7e5 100644 --- a/packages/next/migrations.spec.ts +++ b/packages/next/migrations.spec.ts @@ -1,15 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -import { MigrationsJsonEntry } from 'nx/src/config/misc-interfaces'; -describe('Next migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: MigrationsJsonEntry) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('next migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); }); diff --git a/packages/node/migrations.spec.ts b/packages/node/migrations.spec.ts index b6f50788ac..de601f7d90 100644 --- a/packages/node/migrations.spec.ts +++ b/packages/node/migrations.spec.ts @@ -1,15 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -import { MigrationsJsonEntry } from 'nx/src/config/misc-interfaces'; -describe('Node migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: MigrationsJsonEntry) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('node migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); }); diff --git a/packages/nx/internal-testing-utils/assert-valid-migrations.ts b/packages/nx/internal-testing-utils/assert-valid-migrations.ts new file mode 100644 index 0000000000..e0b325e5d5 --- /dev/null +++ b/packages/nx/internal-testing-utils/assert-valid-migrations.ts @@ -0,0 +1,33 @@ +import { + MigrationsJson, + MigrationsJsonEntry, +} from '../src/config/misc-interfaces'; +import * as path from 'path'; + +export function assertValidMigrationPaths(json: MigrationsJson, root: string) { + Object.entries(json.generators).forEach(([generator, m]) => { + it(`should have valid path generator: ${generator}`, () => { + validateMigration(m, root); + }); + }); + + Object.entries(json.schematics ?? {}).forEach(([schematic, m]) => { + it(`should have valid path schematic: ${schematic}`, () => { + validateMigration(m, root); + }); + }); +} + +function validateMigration(m: MigrationsJsonEntry, root: string) { + const impl = m.factory ?? m.implementation; + const [implPath, implMember] = impl.includes('#') + ? impl.split('#') + : [impl, null]; + let implModule; + expect(() => { + implModule = require(path.join(root, `${implPath}.ts`)); + }).not.toThrow(); + if (implMember) { + expect(implModule).toHaveProperty(implMember); + } +} diff --git a/packages/nx/internal-testing-utils/run-migration-against-this-workspace.ts b/packages/nx/internal-testing-utils/run-migration-against-this-workspace.ts new file mode 100644 index 0000000000..4e958b34f0 --- /dev/null +++ b/packages/nx/internal-testing-utils/run-migration-against-this-workspace.ts @@ -0,0 +1,19 @@ +import { FsTree, Tree } from '../src/generators/tree'; +import { join } from 'path'; + +export function assertRunsAgainstNxRepo( + migrateFn: (tree: Tree) => void | Promise +) { + it('should run against the Nx repo', async () => { + const tree = new FsTree(join(__dirname, '../../../'), true); + let resultOrPromise: void | Promise = migrateFn(tree); + + if (resultOrPromise && 'then' in resultOrPromise) { + try { + await resultOrPromise; + } catch (e) { + fail(e); + } + } + }); +} diff --git a/packages/nx/migrations.spec.ts b/packages/nx/migrations.spec.ts index 10d3af6028..787661d5da 100644 --- a/packages/nx/migrations.spec.ts +++ b/packages/nx/migrations.spec.ts @@ -1,12 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -describe('Nx migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m) => { - expect(() => - require.resolve(path.join(__dirname, `${m.implementation}.ts`)) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from './internal-testing-utils/assert-valid-migrations'; +import { MigrationsJson } from './src/config/misc-interfaces'; + +describe('nx migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); }); diff --git a/packages/nx/src/config/misc-interfaces.ts b/packages/nx/src/config/misc-interfaces.ts index 1a500e37ea..e6bfca33cf 100644 --- a/packages/nx/src/config/misc-interfaces.ts +++ b/packages/nx/src/config/misc-interfaces.ts @@ -76,7 +76,7 @@ export interface MigrationsJsonEntry { export interface MigrationsJson { name?: string; - version: string; + version?: string; collection?: string; generators?: { [name: string]: MigrationsJsonEntry }; schematics?: { [name: string]: MigrationsJsonEntry }; diff --git a/packages/nx/src/migrations/update-14-0-6/remove-roots.spec.ts b/packages/nx/src/migrations/update-14-0-6/remove-roots.spec.ts index a13f94d3c6..8d63ad4ae8 100644 --- a/packages/nx/src/migrations/update-14-0-6/remove-roots.spec.ts +++ b/packages/nx/src/migrations/update-14-0-6/remove-roots.spec.ts @@ -3,6 +3,7 @@ import { createTreeWithEmptyWorkspace } from '../../generators/testing-utils/cre import { addProjectConfiguration } from '../../generators/utils/project-configuration'; import { readJson, updateJson, writeJson } from '../../generators/utils/json'; import removeRoots from './remove-roots'; +import { assertRunsAgainstNxRepo } from '../../../internal-testing-utils/run-migration-against-this-workspace'; describe('remove-roots >', () => { let tree: Tree; @@ -46,4 +47,6 @@ describe('remove-roots >', () => { }); }); }); + + assertRunsAgainstNxRepo(removeRoots); }); diff --git a/packages/nx/src/migrations/update-14-2-0/add-json-schema.spec.ts b/packages/nx/src/migrations/update-14-2-0/add-json-schema.spec.ts index 301c33e8e6..58b973362d 100644 --- a/packages/nx/src/migrations/update-14-2-0/add-json-schema.spec.ts +++ b/packages/nx/src/migrations/update-14-2-0/add-json-schema.spec.ts @@ -1,3 +1,4 @@ +import { assertRunsAgainstNxRepo } from '../../../internal-testing-utils/run-migration-against-this-workspace'; import { createTreeWithEmptyWorkspace } from '../../generators/testing-utils/create-tree-with-empty-workspace'; import type { Tree } from '../../generators/tree'; import { readJson, writeJson } from '../../generators/utils/json'; @@ -58,4 +59,6 @@ describe('add-json-schema >', () => { readJson(tree, 'libs/nested/test-two/project.json')['$schema'] ).toEqual('../../../node_modules/nx/schemas/project-schema.json'); }); + + assertRunsAgainstNxRepo(addJsonSchema); }); diff --git a/packages/nx/src/migrations/update-14-2-0/remove-default-collection.spec.ts b/packages/nx/src/migrations/update-14-2-0/remove-default-collection.spec.ts index bb18c68f38..4dda965350 100644 --- a/packages/nx/src/migrations/update-14-2-0/remove-default-collection.spec.ts +++ b/packages/nx/src/migrations/update-14-2-0/remove-default-collection.spec.ts @@ -4,6 +4,7 @@ import { readNxJson, updateNxJson, } from '../../generators/utils/project-configuration'; +import { assertRunsAgainstNxRepo } from '../../../internal-testing-utils/run-migration-against-this-workspace'; import removeDefaultCollection from './remove-default-collection'; describe('remove-default-collection', () => { @@ -52,4 +53,6 @@ describe('remove-default-collection', () => { tree.delete('nx.json'); await expect(removeDefaultCollection(tree)).resolves.not.toThrow(); }); + + assertRunsAgainstNxRepo(removeDefaultCollection); }); diff --git a/packages/nx/src/migrations/update-14-3-4/create-target-defaults.spec.ts b/packages/nx/src/migrations/update-14-3-4/create-target-defaults.spec.ts index 271fb8ee84..b79a95b722 100644 --- a/packages/nx/src/migrations/update-14-3-4/create-target-defaults.spec.ts +++ b/packages/nx/src/migrations/update-14-3-4/create-target-defaults.spec.ts @@ -1,3 +1,4 @@ +import { assertRunsAgainstNxRepo } from '../../../internal-testing-utils/run-migration-against-this-workspace'; import { createTreeWithEmptyWorkspace } from '../../generators/testing-utils/create-tree-with-empty-workspace'; import type { Tree } from '../../generators/tree'; import { @@ -40,4 +41,6 @@ describe('createTargetDefaults', () => { tree.delete('nx.json'); await expect(createTargetDefaults(tree)).resolves.not.toThrow(); }); + + assertRunsAgainstNxRepo(createTargetDefaults); }); diff --git a/packages/nx/src/migrations/update-15-0-0/migrate-to-inputs.spec.ts b/packages/nx/src/migrations/update-15-0-0/migrate-to-inputs.spec.ts index b25dc2594d..c68aeb8c0d 100644 --- a/packages/nx/src/migrations/update-15-0-0/migrate-to-inputs.spec.ts +++ b/packages/nx/src/migrations/update-15-0-0/migrate-to-inputs.spec.ts @@ -1,3 +1,4 @@ +import { assertRunsAgainstNxRepo } from '../../../internal-testing-utils/run-migration-against-this-workspace'; import { createTreeWithEmptyWorkspace } from '../../generators/testing-utils/create-tree-with-empty-workspace'; import type { Tree } from '../../generators/tree'; import { @@ -451,4 +452,6 @@ describe('15.0.0 migration (migrate-to-inputs) (v1)', () => { const lib = readProjectConfiguration(tree, 'lib1'); expect(lib.namedInputs).toBeUndefined(); }); + + assertRunsAgainstNxRepo(migrateToInputs); }); diff --git a/packages/nx/src/migrations/update-16-0-0/update-depends-on-to-tokens.spec.ts b/packages/nx/src/migrations/update-16-0-0/update-depends-on-to-tokens.spec.ts index 70daa8bdce..64715aee19 100644 --- a/packages/nx/src/migrations/update-16-0-0/update-depends-on-to-tokens.spec.ts +++ b/packages/nx/src/migrations/update-16-0-0/update-depends-on-to-tokens.spec.ts @@ -7,6 +7,7 @@ import { import update from './update-depends-on-to-tokens'; import { updateJson, writeJson } from '../../generators/utils/json'; import { createTreeWithEmptyWorkspace } from '../../generators/testing-utils/create-tree-with-empty-workspace'; +import { assertRunsAgainstNxRepo } from '../../../internal-testing-utils/run-migration-against-this-workspace'; describe('update-depends-on-to-tokens', () => { it('should update nx.json', async () => { @@ -125,4 +126,6 @@ describe('update-depends-on-to-tokens', () => { promise = update(tree); await expect(promise).resolves.toBeUndefined(); }); + + assertRunsAgainstNxRepo(update); }); diff --git a/packages/nx/src/migrations/update-16-2-0/remove-run-commands-output-path.spec.ts b/packages/nx/src/migrations/update-16-2-0/remove-run-commands-output-path.spec.ts index 9ff5065eef..e935d1db65 100644 --- a/packages/nx/src/migrations/update-16-2-0/remove-run-commands-output-path.spec.ts +++ b/packages/nx/src/migrations/update-16-2-0/remove-run-commands-output-path.spec.ts @@ -5,6 +5,7 @@ import { addProjectConfiguration, readProjectConfiguration, } from '../../generators/utils/project-configuration'; +import { assertRunsAgainstNxRepo } from '../../../internal-testing-utils/run-migration-against-this-workspace'; import removeRunCommandsOutputPath from './remove-run-commands-output-path'; describe('removeRunCommandsOutputPath', () => { @@ -96,4 +97,6 @@ describe('removeRunCommandsOutputPath', () => { }); expect(migratedTargetDefaults.other).toEqual(startingTargetDefaults.other); }); + + assertRunsAgainstNxRepo(removeRunCommandsOutputPath); }); diff --git a/packages/nx/tsconfig.lib.json b/packages/nx/tsconfig.lib.json index d628406d9a..43635e831d 100644 --- a/packages/nx/tsconfig.lib.json +++ b/packages/nx/tsconfig.lib.json @@ -10,7 +10,8 @@ "**/*.spec.ts", "**/*_spec.ts", "jest.config.ts", - "**/__fixtures__/**/*.*" + "**/__fixtures__/**/*.*", + "internal-testing-utils/**/*.ts" ], "include": ["**/*.ts"] } diff --git a/packages/nx/tsconfig.spec.json b/packages/nx/tsconfig.spec.json index 20c83bf390..be669d0b3b 100644 --- a/packages/nx/tsconfig.spec.json +++ b/packages/nx/tsconfig.spec.json @@ -12,6 +12,7 @@ "**/*.spec.js", "**/*.spec.jsx", "**/*.d.ts", + "internal-testing-utils/**/*.ts", "jest.config.ts" ] } diff --git a/packages/plugin/src/migrations/update-15-0-0/specify-output-capture.spec.ts b/packages/plugin/src/migrations/update-15-0-0/specify-output-capture.spec.ts index abda3e71db..6ec8486e61 100644 --- a/packages/plugin/src/migrations/update-15-0-0/specify-output-capture.spec.ts +++ b/packages/plugin/src/migrations/update-15-0-0/specify-output-capture.spec.ts @@ -1,6 +1,7 @@ import { readJson, updateJson } from '@nx/devkit'; import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; import { Linter } from '@nx/linter'; +import { assertRunsAgainstNxRepo } from '@nx/devkit/internal-testing-utils'; import { ExecutorConfig } from 'nx/src/config/misc-interfaces'; import executorGenerator from '../../generators/executor/executor'; import pluginGenerator from '../../generators/plugin/plugin'; @@ -50,6 +51,8 @@ describe('update-15-0-0-specify-output-capture', () => { readJson(tree, schemaPath).outputCapture ).toEqual('direct-nodejs'); }); + + assertRunsAgainstNxRepo(update); }); async function createTreeWithBoilerplate() { diff --git a/packages/plugin/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.spec.ts b/packages/plugin/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.spec.ts index 50ce4f1a0b..d4fe58f7db 100644 --- a/packages/plugin/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.spec.ts +++ b/packages/plugin/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.spec.ts @@ -1,5 +1,6 @@ import { Tree, readJson, updateJson } from '@nx/devkit'; import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; +import { assertRunsAgainstNxRepo } from '@nx/devkit/internal-testing-utils'; import replacePackage from './update-16-0-0-add-nx-packages'; describe('update-16-0-0-add-nx-packages', () => { @@ -34,4 +35,6 @@ describe('update-16-0-0-add-nx-packages', () => { expect(newDependencyVersion).toBeDefined(); }); + + assertRunsAgainstNxRepo(replacePackage); }); diff --git a/packages/plugin/src/migrations/update-16-0-0/cli-in-schema-json.spec.ts b/packages/plugin/src/migrations/update-16-0-0/cli-in-schema-json.spec.ts index 9b75ae55fc..77c49e508b 100644 --- a/packages/plugin/src/migrations/update-16-0-0/cli-in-schema-json.spec.ts +++ b/packages/plugin/src/migrations/update-16-0-0/cli-in-schema-json.spec.ts @@ -11,6 +11,7 @@ import { } from '@nx/devkit'; import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; import { Linter } from '@nx/linter'; +import { assertRunsAgainstNxRepo } from '@nx/devkit/internal-testing-utils'; import { PackageJson } from 'nx/src/utils/package-json'; import executorGenerator from '../../generators/executor/executor'; import generatorGenerator from '../../generators/generator/generator'; @@ -234,6 +235,8 @@ describe('updateCliPropsForPlugins', () => { const updated = readJson(tree, schemaPath); expect(updated).not.toHaveProperty('cli'); }); + + assertRunsAgainstNxRepo(updateCliPropsForPlugins); }); async function createPlugin(tree: Tree) { diff --git a/packages/plugin/src/migrations/update-16-2-0/replace-e2e-executor.spec.ts b/packages/plugin/src/migrations/update-16-2-0/replace-e2e-executor.spec.ts index 24578b6e9f..dad32acac2 100644 --- a/packages/plugin/src/migrations/update-16-2-0/replace-e2e-executor.spec.ts +++ b/packages/plugin/src/migrations/update-16-2-0/replace-e2e-executor.spec.ts @@ -5,6 +5,7 @@ import { addProjectConfiguration, readProjectConfiguration, } from '@nx/devkit'; +import { assertRunsAgainstNxRepo } from '@nx/devkit/internal-testing-utils'; import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; import replaceE2EExecutor from './replace-e2e-executor'; @@ -65,4 +66,6 @@ describe('update-16-0-0-add-nx-packages', () => { } `); }); + + assertRunsAgainstNxRepo(replaceE2EExecutor); }); diff --git a/packages/react-native/migrations.spec.ts b/packages/react-native/migrations.spec.ts index aed48d2403..627164084b 100644 --- a/packages/react-native/migrations.spec.ts +++ b/packages/react-native/migrations.spec.ts @@ -1,15 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -import { MigrationsJsonEntry } from 'nx/src/config/misc-interfaces'; -describe('React Native migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: MigrationsJsonEntry) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('react-native migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); }); diff --git a/packages/react/migrations.spec.ts b/packages/react/migrations.spec.ts index 9eaa778c18..1fec2f6b59 100644 --- a/packages/react/migrations.spec.ts +++ b/packages/react/migrations.spec.ts @@ -1,15 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -import { MigrationsJsonEntry } from 'nx/src/config/misc-interfaces'; -describe('React migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: MigrationsJsonEntry) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('react migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); }); diff --git a/packages/rollup/migrations.spec.ts b/packages/rollup/migrations.spec.ts index 06fde8470e..0d4c8e873e 100644 --- a/packages/rollup/migrations.spec.ts +++ b/packages/rollup/migrations.spec.ts @@ -1,15 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -import { MigrationsJsonEntry } from 'nx/src/config/misc-interfaces'; -describe('Rollup migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: MigrationsJsonEntry) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('rollup migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); }); diff --git a/packages/storybook/migrations.spec.ts b/packages/storybook/migrations.spec.ts index 294c032036..66ce4bd298 100644 --- a/packages/storybook/migrations.spec.ts +++ b/packages/storybook/migrations.spec.ts @@ -1,15 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -import { MigrationsJsonEntry } from 'nx/src/config/misc-interfaces'; -describe('Storybook migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: MigrationsJsonEntry) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('storybook migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); }); diff --git a/packages/vite/migrations.spec.ts b/packages/vite/migrations.spec.ts index b655f6206a..655cf2ebad 100644 --- a/packages/vite/migrations.spec.ts +++ b/packages/vite/migrations.spec.ts @@ -1,15 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -import { MigrationsJsonEntry } from 'nx/src/config/misc-interfaces'; -describe('Vite migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: MigrationsJsonEntry) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('vite migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); }); diff --git a/packages/web/migrations.spec.ts b/packages/web/migrations.spec.ts index 8bc24c2dac..f4f1802fa0 100644 --- a/packages/web/migrations.spec.ts +++ b/packages/web/migrations.spec.ts @@ -1,15 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -import { MigrationsJsonEntry } from 'nx/src/config/misc-interfaces'; -describe('Web migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: MigrationsJsonEntry) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('web migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); }); diff --git a/packages/webpack/migrations.spec.ts b/packages/webpack/migrations.spec.ts index 602b5b55de..5ddd885c8d 100644 --- a/packages/webpack/migrations.spec.ts +++ b/packages/webpack/migrations.spec.ts @@ -1,15 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -import { MigrationsJsonEntry } from 'nx/src/config/misc-interfaces'; -describe('Webpack migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: MigrationsJsonEntry) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.factory ?? m.implementation}.ts`) - ) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('webpack migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); }); diff --git a/packages/workspace/migrations.spec.ts b/packages/workspace/migrations.spec.ts index 294b03490c..0e7b9bccb5 100644 --- a/packages/workspace/migrations.spec.ts +++ b/packages/workspace/migrations.spec.ts @@ -1,14 +1,8 @@ -import path = require('path'); import json = require('./migrations.json'); -describe('Workspace migrations', () => { - it('should have valid paths', () => { - Object.values(json.generators).forEach((m: any) => { - expect(() => - require.resolve( - path.join(__dirname, `${m.implementation || m.factory}.ts`) - ) - ).not.toThrow(); - }); - }); +import { assertValidMigrationPaths } from '@nx/devkit/internal-testing-utils'; +import { MigrationsJson } from '@nx/devkit'; + +describe('workspace migrations', () => { + assertValidMigrationPaths(json as MigrationsJson, __dirname); });