Skip to content

Commit 35b0811

Browse files
committed
refactor: implement reset method in CliPlatformTest to clear static collections and prevent memory leaks
1 parent 947a68c commit 35b0811

File tree

6 files changed

+32
-17
lines changed

6 files changed

+32
-17
lines changed

packages/cli-plugin-eslint/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
},
1818
"scripts": {
1919
"build": "yarn build:ts",
20-
"build:ts": "tsc --build tsconfig.esm.json"
20+
"build:ts": "tsc --build tsconfig.esm.json",
21+
"/test": "vitest run",
22+
"/test:ci": "vitest run --coverage.thresholds.autoUpdate=true"
2123
},
2224
"devDependencies": {
2325
"@tsed/cli": "workspace:*",

packages/cli-plugin-eslint/src/hooks/EslintInitHook.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
1-
import {type CliCommandHooks, type InitCmdContext, render, type RenderDataContext, type RenderOptions} from "@tsed/cli";
1+
import {type CliCommandHooks, type InitCmdContext, render, type RenderDataContext} from "@tsed/cli";
22
import {PackageManagersModule, ProjectPackageJson, type Task} from "@tsed/cli-core";
33
import {inject, injectable} from "@tsed/di";
44

55
import {TEMPLATE_DIR} from "../utils/templateDir.js";
66

77
export class EslintInitHook implements CliCommandHooks {
8-
$alterRenderFiles(
9-
files: (string | RenderOptions)[],
10-
data: RenderDataContext
11-
): (string | RenderOptions)[] | Promise<(string | RenderOptions)[]> {
8+
$alterRenderFiles(files: string[], data: RenderDataContext) {
129
if (!data.eslint) {
1310
return files;
1411
}
@@ -28,11 +25,11 @@ export class EslintInitHook implements CliCommandHooks {
2825
.filter(Boolean)
2926
.map((path) => {
3027
return {
31-
path,
32-
templateDir: `${TEMPLATE_DIR}/init`
28+
id: "/" + path,
29+
from: `${TEMPLATE_DIR}/init`
3330
};
3431
})
35-
] as (string | RenderOptions)[];
32+
];
3633
}
3734

3835
$alterPackageJson(packageJson: ProjectPackageJson, data: RenderDataContext): ProjectPackageJson | Promise<ProjectPackageJson> {

packages/cli-plugin-eslint/test/init.integration.spec.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ describe("Eslint: Init cmd", () => {
2525

2626
await CliPlatformTest.initProject({
2727
eslint: true,
28+
lintstaged: true,
2829
prettier: true
2930
});
3031

@@ -34,6 +35,14 @@ describe("Eslint: Init cmd", () => {
3435
"project-name/.barrels.json",
3536
"project-name/.dockerignore",
3637
"project-name/.gitignore",
38+
"project-name/.husky/.gitignore",
39+
"project-name/.husky/_/.gitignore",
40+
"project-name/.husky/_/husky.sh",
41+
"project-name/.husky/post-commit",
42+
"project-name/.husky/pre-commit",
43+
"project-name/.lintstagedrc.json",
44+
"project-name/.prettierignore",
45+
"project-name/.prettierrc",
3746
"project-name/.swcrc",
3847
"project-name/Dockerfile",
3948
"project-name/README.md",
@@ -60,6 +69,7 @@ describe("Eslint: Init cmd", () => {
6069
"yarn install",
6170
"yarn add --ignore-engines @tsed/logger @tsed/engines @tsed/barrels ajv cross-env dotenv dotenv-expand dotenv-flow @swc/core @swc/cli @swc/helpers @swc-node/register typescript body-parser cors compression cookie-parser express method-override",
6271
"yarn add -D --ignore-engines @types/node @types/multer tslib nodemon @types/cors @types/express @types/compression @types/cookie-parser @types/method-override",
72+
"yarn run prepare",
6373
"yarn run test:lint:fix",
6474
"yarn run barrels",
6575
]

packages/cli-plugin-oidc-provider/src/hooks/OidcProviderInitHook.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
import {join} from "node:path";
2-
31
import {type CliCommandHooks, ProjectClient, render, type RenderDataContext} from "@tsed/cli";
42
import {injectable} from "@tsed/di";
53
import {SyntaxKind} from "ts-morph";
64

75
import {TEMPLATE_DIR} from "../utils/templateDir.js";
86

97
export class OidcProviderInitHook implements CliCommandHooks {
10-
$alterRenderFiles(files: string[], data: RenderDataContext): string[] {
8+
$alterRenderFiles(files: string[], data: RenderDataContext) {
119
if (!data.oidc) {
1210
return files;
1311
}
@@ -37,11 +35,16 @@ export class OidcProviderInitHook implements CliCommandHooks {
3735
"/views/select_account.ejs"
3836
]
3937
.filter(Boolean)
40-
.map((path: string) => join(TEMPLATE_DIR, path))
38+
.map((path: string) => {
39+
return {
40+
id: path,
41+
from: TEMPLATE_DIR
42+
};
43+
})
4144
];
4245
}
4346

44-
async $alterProjectFiles(project: ProjectClient, data: RenderDataContext): ProjectClient {
47+
async $alterProjectFiles(project: ProjectClient, data: RenderDataContext) {
4548
if (!data.oidc) {
4649
return project;
4750
}
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import type {RenderDataContext} from "./RenderDataContext.js";
22

33
export interface AlterRenderFiles {
4-
$alterRenderFiles(files: string[], data: RenderDataContext): string[] | Promise<string[]>;
4+
$alterRenderFiles(
5+
files: string[],
6+
data: RenderDataContext
7+
): (string | {id: string; from: string})[] | Promise<(string | {id: string; from: string})[]>;
58
}

vitest.config.mts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {defineConfig} from "vitest/config";
33
export default defineConfig({
44
test: {
55
projects: [
6-
'packages/**/vitest.config.{mts,ts}'
7-
]
6+
"packages/**/vitest.config.{mts,ts}"
7+
],
88
}
99
})

0 commit comments

Comments
 (0)