@nx/jest 20.0.0-beta.5 → 20.0.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/migrations.json CHANGED
@@ -1,33 +1,18 @@
1
1
  {
2
2
  "generators": {
3
- "update-16-0-0-add-nx-packages": {
4
- "cli": "nx",
5
- "version": "16.0.0-beta.1",
6
- "description": "Replace @nrwl/jest with @nx/jest",
7
- "implementation": "./src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages"
8
- },
9
- "add-test-setup-to-inputs-ignore": {
10
- "cli": "nx",
11
- "version": "16.5.0-beta.2",
12
- "description": "Add test-setup.ts to ignored files in production input",
13
- "implementation": "./src/migrations/update-16-5-0/add-test-setup-to-inputs-ignore"
14
- },
15
3
  "move-options-to-target-defaults": {
16
4
  "version": "17.1.0-beta.2",
17
5
  "description": "Move jest executor options to nx.json targetDefaults",
18
6
  "implementation": "./src/migrations/update-17-1-0/move-options-to-target-defaults"
7
+ },
8
+ "replace-getJestProjects-with-getJestProjectsAsync": {
9
+ "cli": "nx",
10
+ "version": "20.0.0-beta.5",
11
+ "description": "replace getJestProjects with getJestProjectsAsync",
12
+ "implementation": "./src/migrations/update-20-0-0/replace-getJestProjects-with-getJestProjectsAsync"
19
13
  }
20
14
  },
21
15
  "packageJsonUpdates": {
22
- "16.0.0": {
23
- "version": "16.0.0-beta.4",
24
- "packages": {
25
- "ts-jest": {
26
- "version": "~29.1.0",
27
- "alwaysAddToPackageJson": false
28
- }
29
- }
30
- },
31
16
  "17.2.0": {
32
17
  "version": "17.2.0-beta.2",
33
18
  "packages": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/jest",
3
- "version": "20.0.0-beta.5",
3
+ "version": "20.0.0-beta.7",
4
4
  "private": false,
5
5
  "description": "The Nx Plugin for Jest contains executors and generators allowing your workspace to use the powerful Jest testing capabilities.",
6
6
  "repository": {
@@ -37,8 +37,8 @@
37
37
  "dependencies": {
38
38
  "@jest/reporters": "^29.4.1",
39
39
  "@jest/test-result": "^29.4.1",
40
- "@nx/devkit": "20.0.0-beta.5",
41
- "@nx/js": "20.0.0-beta.5",
40
+ "@nx/devkit": "20.0.0-beta.7",
41
+ "@nx/js": "20.0.0-beta.7",
42
42
  "@phenomnomnominal/tsquery": "~5.0.1",
43
43
  "chalk": "^4.1.0",
44
44
  "identity-obj-proxy": "3.0.0",
@@ -0,0 +1,2 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export default function update(tree: Tree): Promise<void>;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ // go through the jest.config files
3
+ // see if it imports from @nx/jest and if it uses getJestProjects
4
+ // replace getJestProjects with getJestProjectsAsync
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = update;
7
+ const devkit_1 = require("@nx/devkit");
8
+ const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
9
+ let tsModule;
10
+ async function update(tree) {
11
+ if (!tsModule) {
12
+ tsModule = (0, ensure_typescript_1.ensureTypescript)();
13
+ }
14
+ const jestConfigPaths = await (0, devkit_1.globAsync)(tree, [
15
+ '**/jest.config.{cjs,mjs,js,cts,mts,ts}',
16
+ ]);
17
+ jestConfigPaths.forEach((jestConfigPath) => {
18
+ const oldContent = tree.read(jestConfigPath).toString();
19
+ if (oldContent?.includes('projects: getJestProjects()')) {
20
+ let sourceFile = tsModule.createSourceFile(jestConfigPath, oldContent, tsModule.ScriptTarget.Latest, true);
21
+ // find the import statement for @nx/jest
22
+ const importStatement = sourceFile.statements.find((statement) => tsModule.isVariableStatement(statement) &&
23
+ statement.declarationList.declarations.some((declaration) => tsModule.isCallExpression(declaration.initializer) &&
24
+ tsModule.isIdentifier(declaration.initializer.expression) &&
25
+ declaration.initializer.expression.escapedText === 'require' &&
26
+ tsModule.isStringLiteral(declaration.initializer.arguments[0]) &&
27
+ declaration.initializer.arguments[0].text === '@nx/jest'));
28
+ if (importStatement) {
29
+ // find export statement with `projects: getJestProjects()`
30
+ let exportStatement = sourceFile.statements.find((statement) => tsModule.isExpressionStatement(statement) &&
31
+ tsModule.isBinaryExpression(statement.expression) &&
32
+ tsModule.isPropertyAccessExpression(statement.expression.left) &&
33
+ tsModule.isObjectLiteralExpression(statement.expression.right) &&
34
+ statement.expression.operatorToken.kind ===
35
+ tsModule.SyntaxKind.EqualsToken &&
36
+ tsModule.isIdentifier(statement.expression.left.expression) &&
37
+ statement.expression.left.expression.escapedText === 'module' &&
38
+ tsModule.isIdentifier(statement.expression.left.name) &&
39
+ statement.expression.left.name.escapedText === 'exports' &&
40
+ statement.expression.right.properties.some((property) => tsModule.isPropertyAssignment(property) &&
41
+ tsModule.isIdentifier(property.name) &&
42
+ property.name.escapedText === 'projects' &&
43
+ tsModule.isCallExpression(property.initializer) &&
44
+ tsModule.isIdentifier(property.initializer.expression) &&
45
+ property.initializer.expression.escapedText ===
46
+ 'getJestProjects'));
47
+ if (exportStatement) {
48
+ // replace getJestProjects with getJestProjectsAsync in export statement
49
+ const rightExpression = exportStatement.expression.right.getText();
50
+ const newExpression = rightExpression.replace('getJestProjects()', 'await getJestProjectsAsync()');
51
+ const newStatement = `export default async () => (${newExpression});`;
52
+ let newContent = oldContent.replace(exportStatement.getText(), newStatement);
53
+ // replace getJestProjects with getJestProjectsAsync in import statement
54
+ newContent = newContent.replace('getJestProjects', 'getJestProjectsAsync');
55
+ tree.write(jestConfigPath, newContent);
56
+ }
57
+ }
58
+ }
59
+ });
60
+ }
@@ -1,4 +1,6 @@
1
1
  /**
2
+ * TODO(v21): Remove this function
3
+ * @deprecated To get projects use {@link getJestProjectsAsync} instead. This will be removed in v21.
2
4
  * Get a list of paths to all the jest config files
3
5
  * using the Nx Jest executor.
4
6
  *
@@ -11,6 +11,8 @@ function getJestConfigProjectPath(projectJestConfigPath) {
11
11
  return (0, path_1.join)('<rootDir>', projectJestConfigPath);
12
12
  }
13
13
  /**
14
+ * TODO(v21): Remove this function
15
+ * @deprecated To get projects use {@link getJestProjectsAsync} instead. This will be removed in v21.
14
16
  * Get a list of paths to all the jest config files
15
17
  * using the Nx Jest executor.
16
18
  *
@@ -1,2 +0,0 @@
1
- import { Tree } from '@nx/devkit';
2
- export default function replacePackage(tree: Tree): Promise<void>;
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = replacePackage;
4
- const devkit_1 = require("@nx/devkit");
5
- const replace_package_1 = require("@nx/devkit/src/utils/replace-package");
6
- async function replacePackage(tree) {
7
- await (0, replace_package_1.replaceNrwlPackageWithNxPackage)(tree, '@nrwl/jest', '@nx/jest');
8
- await (0, devkit_1.formatFiles)(tree);
9
- }
@@ -1,3 +0,0 @@
1
- import { Tree } from '@nx/devkit';
2
- export declare function addTestSetupToIgnoredInputs(tree: Tree): Promise<void>;
3
- export default addTestSetupToIgnoredInputs;
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addTestSetupToIgnoredInputs = addTestSetupToIgnoredInputs;
4
- const devkit_1 = require("@nx/devkit");
5
- async function addTestSetupToIgnoredInputs(tree) {
6
- const nxJson = (0, devkit_1.readNxJson)(tree);
7
- if (!nxJson) {
8
- return;
9
- }
10
- if (nxJson.namedInputs?.production &&
11
- !nxJson.namedInputs.production.includes('!{projectRoot}/src/test-setup.[jt]s')) {
12
- nxJson.namedInputs.production.push('!{projectRoot}/src/test-setup.[jt]s');
13
- (0, devkit_1.updateNxJson)(tree, nxJson);
14
- }
15
- await (0, devkit_1.formatFiles)(tree);
16
- }
17
- exports.default = addTestSetupToIgnoredInputs;