@tsed/cli-testing 4.4.6 → 4.5.1

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.
@@ -5,9 +5,11 @@ const cli_core_1 = require("@tsed/cli-core");
5
5
  const FakeCliExeca_1 = require("./FakeCliExeca");
6
6
  const FakeCliFs_1 = require("./FakeCliFs");
7
7
  const FakeCliHttpClient_1 = require("./FakeCliHttpClient");
8
+ const di_1 = require("@tsed/di");
9
+ const uuid_1 = require("uuid");
8
10
  class CliPlatformTest extends cli_core_1.DITest {
9
11
  static async bootstrap(options = {}) {
10
- cli_core_1.DITest.injector = CliPlatformTest.createInjector({
12
+ options = (0, cli_core_1.resolveConfiguration)({
11
13
  name: "tsed",
12
14
  project: {
13
15
  rootDir: options.rootDir || "./project-name",
@@ -17,6 +19,7 @@ class CliPlatformTest extends cli_core_1.DITest {
17
19
  },
18
20
  ...options
19
21
  });
22
+ cli_core_1.DITest.injector = CliPlatformTest.createInjector(options);
20
23
  cli_core_1.DITest.injector
21
24
  .addProvider(cli_core_1.CliHttpClient, {
22
25
  useClass: FakeCliHttpClient_1.FakeCliHttpClient
@@ -33,10 +36,11 @@ class CliPlatformTest extends cli_core_1.DITest {
33
36
  CliPlatformTest.get(cli_core_1.CliService).load();
34
37
  }
35
38
  static async create(options = {}, rootModule = cli_core_1.CliCore) {
36
- cli_core_1.DITest.injector = CliPlatformTest.createInjector({
39
+ options = (0, cli_core_1.resolveConfiguration)({
37
40
  name: "tsed",
38
41
  ...options
39
42
  });
43
+ cli_core_1.DITest.injector = CliPlatformTest.createInjector(options);
40
44
  cli_core_1.DITest.injector.addProvider(cli_core_1.CliCore, {
41
45
  useClass: rootModule
42
46
  });
@@ -56,7 +60,8 @@ class CliPlatformTest extends cli_core_1.DITest {
56
60
  rootDir: "./tmp",
57
61
  srcDir: "src",
58
62
  ...(options.project || {})
59
- }
63
+ },
64
+ disableReadUpPkg: true
60
65
  });
61
66
  injector.settings.env = cli_core_1.Env.TEST;
62
67
  return injector;
@@ -85,6 +90,29 @@ class CliPlatformTest extends cli_core_1.DITest {
85
90
  return await func(...deps);
86
91
  };
87
92
  }
93
+ static setPackageJson(pkg) {
94
+ const projectPackageJson = CliPlatformTest.get(cli_core_1.ProjectPackageJson);
95
+ projectPackageJson.setRaw(pkg);
96
+ }
97
+ /**
98
+ * Invoke command with a new context without running prompts
99
+ * @param cmdName
100
+ * @param initialData
101
+ */
102
+ static async exec(cmdName, initialData) {
103
+ const $ctx = new di_1.DIContext({
104
+ id: (0, uuid_1.v4)(),
105
+ injector: this.injector,
106
+ logger: this.injector.logger
107
+ });
108
+ const metadata = this.injector.settings
109
+ .get("commands")
110
+ .map((token) => (0, cli_core_1.getCommandMetadata)(token))
111
+ .find((commandOpts) => cmdName === commandOpts.name);
112
+ $ctx.set("data", initialData);
113
+ $ctx.set("command", metadata);
114
+ return (0, di_1.runInContext)($ctx, () => this.injector.get(cli_core_1.CliService).exec(cmdName, initialData, $ctx));
115
+ }
88
116
  }
89
117
  exports.CliPlatformTest = CliPlatformTest;
90
118
  //# sourceMappingURL=CliPlatformTest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CliPlatformTest.js","sourceRoot":"","sources":["../../src/CliPlatformTest.ts"],"names":[],"mappings":";;;AAAA,6CAWwB;AAExB,iDAA4C;AAC5C,2CAAsC;AACtC,2DAAsD;AAOtD,MAAa,eAAgB,SAAQ,iBAAM;IACzC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,UAAuC,EAAE;QAC9D,iBAAM,CAAC,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC;YAC/C,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,gBAAgB;gBAC5C,MAAM,EAAE,KAAK;gBACb,UAAU,EAAE,SAAS;gBACrB,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;aAC3B;YACD,GAAG,OAAO;SACX,CAAC,CAAC;QAEH,iBAAM,CAAC,QAAQ;aACZ,WAAW,CAAC,wBAAa,EAAE;YAC1B,QAAQ,EAAE,qCAAiB;SAC5B,CAAC;aACD,WAAW,CAAC,gBAAK,EAAE;YAClB,QAAQ,EAAE,qBAAS;SACpB,CAAC;aACD,WAAW,CAAC,mBAAQ,EAAE;YACrB,QAAQ,EAAE,2BAAY;SACvB,CAAC;aACD,WAAW,CAAC,kBAAO,CAAC,CAAC;QAExB,MAAM,iBAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,iBAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEvC,eAAe,CAAC,GAAG,CAAC,qBAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,UAAuC,EAAE,EAAE,aAAmB,kBAAO;QACvF,iBAAM,CAAC,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC;YAC/C,IAAI,EAAE,MAAM;YACZ,GAAG,OAAO;SACX,CAAC,CAAC;QAEH,iBAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,kBAAO,EAAE;YACnC,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;QAEH,MAAM,iBAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,UAAuC,EAAE;QAC7D,MAAM,QAAQ,GAAG,IAAA,yBAAc,EAAC;YAC9B,GAAG,OAAO;YACV,GAAG,EAAE;gBACH,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,OAAO;aACV;YACR,OAAO,EAAE;gBACP,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,KAAK;gBACb,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;aAC3B;SACF,CAAC,CAAC;QAEH,QAAQ,CAAC,QAAQ,CAAC,GAAG,GAAG,cAAG,CAAC,IAAI,CAAC;QAEjC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,MAAM,CAAI,OAAc,EAAE,IAAwC;QACvE,OAAO,KAAK,IAAgB,EAAE;YAC5B,IAAI,CAAC,iBAAM,CAAC,WAAW,EAAE,EAAE;gBACzB,MAAM,eAAe,CAAC,MAAM,EAAE,CAAC;aAChC;YAED,MAAM,QAAQ,GAAoB,iBAAM,CAAC,QAAQ,CAAC;YAClD,MAAM,IAAI,GAAG,EAAE,CAAC;YAEhB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;gBAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;aACxF;YAED,OAAO,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC;CACF;AA7FD,0CA6FC","sourcesContent":["import {\n CliCore,\n CliExeca,\n CliFs,\n CliHttpClient,\n CliService,\n createInjector,\n DITest,\n Env,\n InjectorService,\n TokenProvider\n} from \"@tsed/cli-core\";\nimport {Type} from \"@tsed/core\";\nimport {FakeCliExeca} from \"./FakeCliExeca\";\nimport {FakeCliFs} from \"./FakeCliFs\";\nimport {FakeCliHttpClient} from \"./FakeCliHttpClient\";\n\nexport interface InvokeOptions {\n token: TokenProvider;\n use: any;\n}\n\nexport class CliPlatformTest extends DITest {\n static async bootstrap(options: Partial<TsED.Configuration> = {}) {\n DITest.injector = CliPlatformTest.createInjector({\n name: \"tsed\",\n project: {\n rootDir: options.rootDir || \"./project-name\",\n srcDir: \"src\",\n scriptsDir: \"scripts\",\n ...(options.project || {})\n },\n ...options\n });\n\n DITest.injector\n .addProvider(CliHttpClient, {\n useClass: FakeCliHttpClient\n })\n .addProvider(CliFs, {\n useClass: FakeCliFs\n })\n .addProvider(CliExeca, {\n useClass: FakeCliExeca\n })\n .addProvider(CliCore);\n\n await DITest.injector.load();\n await DITest.injector.emit(\"$onReady\");\n\n CliPlatformTest.get(CliService).load();\n }\n\n static async create(options: Partial<TsED.Configuration> = {}, rootModule: Type = CliCore) {\n DITest.injector = CliPlatformTest.createInjector({\n name: \"tsed\",\n ...options\n });\n\n DITest.injector.addProvider(CliCore, {\n useClass: rootModule\n });\n\n await DITest.injector.load();\n }\n\n /**\n * Create a new injector with the right default services\n */\n static createInjector(options: Partial<TsED.Configuration> = {}): InjectorService {\n const injector = createInjector({\n ...options,\n pkg: {\n name: \"@tsed/cli-testing\",\n version: \"1.0.0\"\n } as any,\n project: {\n rootDir: \"./tmp\",\n srcDir: \"src\",\n ...(options.project || {})\n }\n });\n\n injector.settings.env = Env.TEST;\n\n return injector;\n }\n\n /**\n * It injects services into the test function where you can alter, spy on, and manipulate them.\n *\n * The inject function has two parameters\n *\n * * an array of Service dependency injection tokens,\n * * a test function whose parameters correspond exactly to each item in the injection token array.\n *\n * @param targets\n * @param func\n */\n static inject<T>(targets: any[], func: (...args: any[]) => Promise<T> | T): () => Promise<T> {\n return async (): Promise<T> => {\n if (!DITest.hasInjector()) {\n await CliPlatformTest.create();\n }\n\n const injector: InjectorService = DITest.injector;\n const deps = [];\n\n for (const target of targets) {\n deps.push(injector.has(target) ? injector.get(target) : await injector.invoke(target));\n }\n\n return await func(...deps);\n };\n }\n}\n"]}
1
+ {"version":3,"file":"CliPlatformTest.js","sourceRoot":"","sources":["../../src/CliPlatformTest.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CliCore,\n CliExeca,\n CliFs,\n CliHttpClient,\n CliService,\n createInjector,\n DITest,\n Env,\n getCommandMetadata,\n InjectorService,\n ProjectPackageJson,\n resolveConfiguration,\n TokenProvider\n} from \"@tsed/cli-core\";\nimport {Type} from \"@tsed/core\";\nimport {FakeCliExeca} from \"./FakeCliExeca\";\nimport {FakeCliFs} from \"./FakeCliFs\";\nimport {FakeCliHttpClient} from \"./FakeCliHttpClient\";\nimport {DIContext, runInContext} from \"@tsed/di\";\nimport {v4} from \"uuid\";\n\nexport interface InvokeOptions {\n token: TokenProvider;\n use: any;\n}\n\nexport class CliPlatformTest extends DITest {\n static async bootstrap(options: Partial<TsED.Configuration> = {}) {\n options = resolveConfiguration({\n name: \"tsed\",\n project: {\n rootDir: options.rootDir || \"./project-name\",\n srcDir: \"src\",\n scriptsDir: \"scripts\",\n ...(options.project || {})\n },\n ...options\n });\n\n DITest.injector = CliPlatformTest.createInjector(options);\n\n DITest.injector\n .addProvider(CliHttpClient, {\n useClass: FakeCliHttpClient\n })\n .addProvider(CliFs, {\n useClass: FakeCliFs\n })\n .addProvider(CliExeca, {\n useClass: FakeCliExeca\n })\n .addProvider(CliCore);\n\n await DITest.injector.load();\n await DITest.injector.emit(\"$onReady\");\n\n CliPlatformTest.get(CliService).load();\n }\n\n static async create(options: Partial<TsED.Configuration> = {}, rootModule: Type = CliCore) {\n options = resolveConfiguration({\n name: \"tsed\",\n ...options\n });\n\n DITest.injector = CliPlatformTest.createInjector(options);\n\n DITest.injector.addProvider(CliCore, {\n useClass: rootModule\n });\n\n await DITest.injector.load();\n }\n\n /**\n * Create a new injector with the right default services\n */\n static createInjector(options: Partial<TsED.Configuration> = {}): InjectorService {\n const injector = createInjector({\n ...options,\n pkg: {\n name: \"@tsed/cli-testing\",\n version: \"1.0.0\"\n } as any,\n project: {\n rootDir: \"./tmp\",\n srcDir: \"src\",\n ...(options.project || {})\n },\n disableReadUpPkg: true\n });\n\n injector.settings.env = Env.TEST;\n\n return injector;\n }\n\n /**\n * It injects services into the test function where you can alter, spy on, and manipulate them.\n *\n * The inject function has two parameters\n *\n * * an array of Service dependency injection tokens,\n * * a test function whose parameters correspond exactly to each item in the injection token array.\n *\n * @param targets\n * @param func\n */\n static inject<T>(targets: any[], func: (...args: any[]) => Promise<T> | T): () => Promise<T> {\n return async (): Promise<T> => {\n if (!DITest.hasInjector()) {\n await CliPlatformTest.create();\n }\n\n const injector: InjectorService = DITest.injector;\n const deps = [];\n\n for (const target of targets) {\n deps.push(injector.has(target) ? injector.get(target) : await injector.invoke(target));\n }\n\n return await func(...deps);\n };\n }\n\n static setPackageJson(pkg: any) {\n const projectPackageJson = CliPlatformTest.get<ProjectPackageJson>(ProjectPackageJson);\n\n (projectPackageJson as any).setRaw(pkg);\n }\n\n /**\n * Invoke command with a new context without running prompts\n * @param cmdName\n * @param initialData\n */\n static async exec(cmdName: string, initialData: any) {\n const $ctx = new DIContext({\n id: v4(),\n injector: this.injector,\n logger: this.injector.logger\n });\n\n const metadata = this.injector.settings\n .get(\"commands\")\n .map((token: TokenProvider) => getCommandMetadata(token))\n .find((commandOpts: any) => cmdName === commandOpts.name);\n\n $ctx.set(\"data\", initialData);\n $ctx.set(\"command\", metadata);\n\n return runInContext($ctx, () => this.injector.get<CliService>(CliService)!.exec(cmdName, initialData, $ctx));\n }\n}\n"]}
@@ -7,6 +7,8 @@ class FakeCliFs {
7
7
  static getKeys() {
8
8
  return (0, normalizePath_1.normalizePath)(Array.from(FakeCliFs.entries.keys()).sort((a, b) => (a < b ? -1 : 1)));
9
9
  }
10
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
11
+ // @ts-ignore
10
12
  findUpFile() {
11
13
  return null;
12
14
  }
@@ -18,6 +20,18 @@ class FakeCliFs {
18
20
  return FakeCliFs.entries.get((0, normalizePath_1.normalizePath)(file));
19
21
  }
20
22
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
23
+ readFileSync(file, encoding) {
24
+ return FakeCliFs.entries.get((0, normalizePath_1.normalizePath)(file));
25
+ }
26
+ async readJson(file, encoding) {
27
+ const content = await this.readFile(file, encoding);
28
+ return JSON.parse(content);
29
+ }
30
+ readJsonSync(file, encoding) {
31
+ const content = this.readFileSync(file, encoding);
32
+ return JSON.parse(content);
33
+ }
34
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
21
35
  writeFileSync(path, data, options) {
22
36
  FakeCliFs.entries.set((0, normalizePath_1.normalizePath)(path), data);
23
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FakeCliFs.js","sourceRoot":"","sources":["../../src/FakeCliFs.ts"],"names":[],"mappings":";;;AAEA,mDAA8C;AAE9C,MAAa,SAAS;IACpB,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,EAAe,CAAC;IAExC,MAAM,CAAC,OAAO;QACZ,OAAO,IAAA,6BAAa,EAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,QAAQ,CAAC,IAA8B,EAAE,QAAc;QAC3D,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,CAAE,CAAC;IACrD,CAAC;IAED,6DAA6D;IAC7D,aAAa,CAAC,IAAuB,EAAE,IAAS,EAAE,OAA0B;QAC1E,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,6DAA6D;IAC7D,SAAS,CAAC,IAA8B,EAAE,IAAS,EAAE,OAAmC;QACtF,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAgC;QAC5D,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,6DAA6D;IAC7D,aAAa,CAAC,IAAY,EAAE,OAAgC;QAC1D,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,UAAU;QACR,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;;AA1CH,8BA2CC","sourcesContent":["import {PathLike} from \"fs\";\nimport {EnsureOptions, WriteFileOptions} from \"fs-extra\";\nimport {normalizePath} from \"./normalizePath\";\n\nexport class FakeCliFs {\n static entries = new Map<any, string>();\n\n static getKeys() {\n return normalizePath(Array.from(FakeCliFs.entries.keys()).sort((a, b) => (a < b ? -1 : 1)));\n }\n\n findUpFile() {\n return null;\n }\n\n exists(path: string): boolean {\n return FakeCliFs.entries.has(normalizePath(path));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async readFile(file: string | Buffer | number, encoding?: any): Promise<string> {\n return FakeCliFs.entries.get(normalizePath(file))!;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n writeFileSync(path: PathLike | number, data: any, options?: WriteFileOptions): void {\n FakeCliFs.entries.set(normalizePath(path), data);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n writeFile(file: string | Buffer | number, data: any, options?: WriteFileOptions | string): void {\n FakeCliFs.entries.set(normalizePath(file), data);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async ensureDir(path: string, options?: EnsureOptions | number): Promise<void> {\n FakeCliFs.entries.set(normalizePath(path), path);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ensureDirSync(path: string, options?: EnsureOptions | number) {\n FakeCliFs.entries.set(normalizePath(path), path);\n }\n\n $onDestroy() {\n FakeCliFs.entries.clear();\n }\n}\n"]}
1
+ {"version":3,"file":"FakeCliFs.js","sourceRoot":"","sources":["../../src/FakeCliFs.ts"],"names":[],"mappings":";;;AAEA,mDAA8C;AAE9C,MAAa,SAAS;IACpB,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,EAAe,CAAC;IAExC,MAAM,CAAC,OAAO;QACZ,OAAO,IAAA,6BAAa,EAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,6DAA6D;IAC7D,aAAa;IACb,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,QAAQ,CAAC,IAA8B,EAAE,QAAc;QAC3D,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,CAAE,CAAC;IACrD,CAAC;IAED,6DAA6D;IAC7D,YAAY,CAAC,IAA8B,EAAE,QAAc;QACzD,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,CAAE,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAA8B,EAAE,QAAc;QAC3D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEpD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,YAAY,CAAC,IAA8B,EAAE,QAAc;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,6DAA6D;IAC7D,aAAa,CAAC,IAAuB,EAAE,IAAS,EAAE,OAA0B;QAC1E,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,6DAA6D;IAC7D,SAAS,CAAC,IAA8B,EAAE,IAAS,EAAE,OAAmC;QACtF,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAgC;QAC5D,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,6DAA6D;IAC7D,aAAa,CAAC,IAAY,EAAE,OAAgC;QAC1D,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,6BAAa,EAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,UAAU;QACR,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;;AA7DH,8BA8DC","sourcesContent":["import {PathLike} from \"fs\";\nimport {EnsureOptions, WriteFileOptions} from \"fs-extra\";\nimport {normalizePath} from \"./normalizePath\";\n\nexport class FakeCliFs {\n static entries = new Map<any, string>();\n\n static getKeys() {\n return normalizePath(Array.from(FakeCliFs.entries.keys()).sort((a, b) => (a < b ? -1 : 1)));\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n findUpFile() {\n return null;\n }\n\n exists(path: string): boolean {\n return FakeCliFs.entries.has(normalizePath(path));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async readFile(file: string | Buffer | number, encoding?: any): Promise<string> {\n return FakeCliFs.entries.get(normalizePath(file))!;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n readFileSync(file: string | Buffer | number, encoding?: any): string {\n return FakeCliFs.entries.get(normalizePath(file))!;\n }\n\n async readJson(file: string | Buffer | number, encoding?: any): Promise<string> {\n const content = await this.readFile(file, encoding);\n\n return JSON.parse(content);\n }\n\n readJsonSync(file: string | Buffer | number, encoding?: any): Promise<string> {\n const content = this.readFileSync(file, encoding);\n\n return JSON.parse(content);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n writeFileSync(path: PathLike | number, data: any, options?: WriteFileOptions): void {\n FakeCliFs.entries.set(normalizePath(path), data);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n writeFile(file: string | Buffer | number, data: any, options?: WriteFileOptions | string): void {\n FakeCliFs.entries.set(normalizePath(file), data);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async ensureDir(path: string, options?: EnsureOptions | number): Promise<void> {\n FakeCliFs.entries.set(normalizePath(path), path);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ensureDirSync(path: string, options?: EnsureOptions | number) {\n FakeCliFs.entries.set(normalizePath(path), path);\n }\n\n $onDestroy() {\n FakeCliFs.entries.clear();\n }\n}\n"]}
@@ -1,10 +1,12 @@
1
- import { CliCore, CliExeca, CliFs, CliHttpClient, CliService, createInjector, DITest, Env } from "@tsed/cli-core";
1
+ import { CliCore, CliExeca, CliFs, CliHttpClient, CliService, createInjector, DITest, Env, getCommandMetadata, ProjectPackageJson, resolveConfiguration } from "@tsed/cli-core";
2
2
  import { FakeCliExeca } from "./FakeCliExeca.js";
3
3
  import { FakeCliFs } from "./FakeCliFs.js";
4
4
  import { FakeCliHttpClient } from "./FakeCliHttpClient.js";
5
+ import { DIContext, runInContext } from "@tsed/di";
6
+ import { v4 } from "uuid";
5
7
  export class CliPlatformTest extends DITest {
6
8
  static async bootstrap(options = {}) {
7
- DITest.injector = CliPlatformTest.createInjector({
9
+ options = resolveConfiguration({
8
10
  name: "tsed",
9
11
  project: {
10
12
  rootDir: options.rootDir || "./project-name",
@@ -14,6 +16,7 @@ export class CliPlatformTest extends DITest {
14
16
  },
15
17
  ...options
16
18
  });
19
+ DITest.injector = CliPlatformTest.createInjector(options);
17
20
  DITest.injector
18
21
  .addProvider(CliHttpClient, {
19
22
  useClass: FakeCliHttpClient
@@ -30,10 +33,11 @@ export class CliPlatformTest extends DITest {
30
33
  CliPlatformTest.get(CliService).load();
31
34
  }
32
35
  static async create(options = {}, rootModule = CliCore) {
33
- DITest.injector = CliPlatformTest.createInjector({
36
+ options = resolveConfiguration({
34
37
  name: "tsed",
35
38
  ...options
36
39
  });
40
+ DITest.injector = CliPlatformTest.createInjector(options);
37
41
  DITest.injector.addProvider(CliCore, {
38
42
  useClass: rootModule
39
43
  });
@@ -53,7 +57,8 @@ export class CliPlatformTest extends DITest {
53
57
  rootDir: "./tmp",
54
58
  srcDir: "src",
55
59
  ...(options.project || {})
56
- }
60
+ },
61
+ disableReadUpPkg: true
57
62
  });
58
63
  injector.settings.env = Env.TEST;
59
64
  return injector;
@@ -82,5 +87,28 @@ export class CliPlatformTest extends DITest {
82
87
  return await func(...deps);
83
88
  };
84
89
  }
90
+ static setPackageJson(pkg) {
91
+ const projectPackageJson = CliPlatformTest.get(ProjectPackageJson);
92
+ projectPackageJson.setRaw(pkg);
93
+ }
94
+ /**
95
+ * Invoke command with a new context without running prompts
96
+ * @param cmdName
97
+ * @param initialData
98
+ */
99
+ static async exec(cmdName, initialData) {
100
+ const $ctx = new DIContext({
101
+ id: v4(),
102
+ injector: this.injector,
103
+ logger: this.injector.logger
104
+ });
105
+ const metadata = this.injector.settings
106
+ .get("commands")
107
+ .map((token) => getCommandMetadata(token))
108
+ .find((commandOpts) => cmdName === commandOpts.name);
109
+ $ctx.set("data", initialData);
110
+ $ctx.set("command", metadata);
111
+ return runInContext($ctx, () => this.injector.get(CliService).exec(cmdName, initialData, $ctx));
112
+ }
85
113
  }
86
114
  //# sourceMappingURL=CliPlatformTest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CliPlatformTest.js","sourceRoot":"","sources":["../../src/CliPlatformTest.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CliCore,\n CliExeca,\n CliFs,\n CliHttpClient,\n CliService,\n createInjector,\n DITest,\n Env,\n InjectorService,\n TokenProvider\n} from \"@tsed/cli-core\";\nimport {Type} from \"@tsed/core\";\nimport {FakeCliExeca} from \"./FakeCliExeca\";\nimport {FakeCliFs} from \"./FakeCliFs\";\nimport {FakeCliHttpClient} from \"./FakeCliHttpClient\";\n\nexport interface InvokeOptions {\n token: TokenProvider;\n use: any;\n}\n\nexport class CliPlatformTest extends DITest {\n static async bootstrap(options: Partial<TsED.Configuration> = {}) {\n DITest.injector = CliPlatformTest.createInjector({\n name: \"tsed\",\n project: {\n rootDir: options.rootDir || \"./project-name\",\n srcDir: \"src\",\n scriptsDir: \"scripts\",\n ...(options.project || {})\n },\n ...options\n });\n\n DITest.injector\n .addProvider(CliHttpClient, {\n useClass: FakeCliHttpClient\n })\n .addProvider(CliFs, {\n useClass: FakeCliFs\n })\n .addProvider(CliExeca, {\n useClass: FakeCliExeca\n })\n .addProvider(CliCore);\n\n await DITest.injector.load();\n await DITest.injector.emit(\"$onReady\");\n\n CliPlatformTest.get(CliService).load();\n }\n\n static async create(options: Partial<TsED.Configuration> = {}, rootModule: Type = CliCore) {\n DITest.injector = CliPlatformTest.createInjector({\n name: \"tsed\",\n ...options\n });\n\n DITest.injector.addProvider(CliCore, {\n useClass: rootModule\n });\n\n await DITest.injector.load();\n }\n\n /**\n * Create a new injector with the right default services\n */\n static createInjector(options: Partial<TsED.Configuration> = {}): InjectorService {\n const injector = createInjector({\n ...options,\n pkg: {\n name: \"@tsed/cli-testing\",\n version: \"1.0.0\"\n } as any,\n project: {\n rootDir: \"./tmp\",\n srcDir: \"src\",\n ...(options.project || {})\n }\n });\n\n injector.settings.env = Env.TEST;\n\n return injector;\n }\n\n /**\n * It injects services into the test function where you can alter, spy on, and manipulate them.\n *\n * The inject function has two parameters\n *\n * * an array of Service dependency injection tokens,\n * * a test function whose parameters correspond exactly to each item in the injection token array.\n *\n * @param targets\n * @param func\n */\n static inject<T>(targets: any[], func: (...args: any[]) => Promise<T> | T): () => Promise<T> {\n return async (): Promise<T> => {\n if (!DITest.hasInjector()) {\n await CliPlatformTest.create();\n }\n\n const injector: InjectorService = DITest.injector;\n const deps = [];\n\n for (const target of targets) {\n deps.push(injector.has(target) ? injector.get(target) : await injector.invoke(target));\n }\n\n return await func(...deps);\n };\n }\n}\n"]}
1
+ {"version":3,"file":"CliPlatformTest.js","sourceRoot":"","sources":["../../src/CliPlatformTest.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CliCore,\n CliExeca,\n CliFs,\n CliHttpClient,\n CliService,\n createInjector,\n DITest,\n Env,\n getCommandMetadata,\n InjectorService,\n ProjectPackageJson,\n resolveConfiguration,\n TokenProvider\n} from \"@tsed/cli-core\";\nimport {Type} from \"@tsed/core\";\nimport {FakeCliExeca} from \"./FakeCliExeca\";\nimport {FakeCliFs} from \"./FakeCliFs\";\nimport {FakeCliHttpClient} from \"./FakeCliHttpClient\";\nimport {DIContext, runInContext} from \"@tsed/di\";\nimport {v4} from \"uuid\";\n\nexport interface InvokeOptions {\n token: TokenProvider;\n use: any;\n}\n\nexport class CliPlatformTest extends DITest {\n static async bootstrap(options: Partial<TsED.Configuration> = {}) {\n options = resolveConfiguration({\n name: \"tsed\",\n project: {\n rootDir: options.rootDir || \"./project-name\",\n srcDir: \"src\",\n scriptsDir: \"scripts\",\n ...(options.project || {})\n },\n ...options\n });\n\n DITest.injector = CliPlatformTest.createInjector(options);\n\n DITest.injector\n .addProvider(CliHttpClient, {\n useClass: FakeCliHttpClient\n })\n .addProvider(CliFs, {\n useClass: FakeCliFs\n })\n .addProvider(CliExeca, {\n useClass: FakeCliExeca\n })\n .addProvider(CliCore);\n\n await DITest.injector.load();\n await DITest.injector.emit(\"$onReady\");\n\n CliPlatformTest.get(CliService).load();\n }\n\n static async create(options: Partial<TsED.Configuration> = {}, rootModule: Type = CliCore) {\n options = resolveConfiguration({\n name: \"tsed\",\n ...options\n });\n\n DITest.injector = CliPlatformTest.createInjector(options);\n\n DITest.injector.addProvider(CliCore, {\n useClass: rootModule\n });\n\n await DITest.injector.load();\n }\n\n /**\n * Create a new injector with the right default services\n */\n static createInjector(options: Partial<TsED.Configuration> = {}): InjectorService {\n const injector = createInjector({\n ...options,\n pkg: {\n name: \"@tsed/cli-testing\",\n version: \"1.0.0\"\n } as any,\n project: {\n rootDir: \"./tmp\",\n srcDir: \"src\",\n ...(options.project || {})\n },\n disableReadUpPkg: true\n });\n\n injector.settings.env = Env.TEST;\n\n return injector;\n }\n\n /**\n * It injects services into the test function where you can alter, spy on, and manipulate them.\n *\n * The inject function has two parameters\n *\n * * an array of Service dependency injection tokens,\n * * a test function whose parameters correspond exactly to each item in the injection token array.\n *\n * @param targets\n * @param func\n */\n static inject<T>(targets: any[], func: (...args: any[]) => Promise<T> | T): () => Promise<T> {\n return async (): Promise<T> => {\n if (!DITest.hasInjector()) {\n await CliPlatformTest.create();\n }\n\n const injector: InjectorService = DITest.injector;\n const deps = [];\n\n for (const target of targets) {\n deps.push(injector.has(target) ? injector.get(target) : await injector.invoke(target));\n }\n\n return await func(...deps);\n };\n }\n\n static setPackageJson(pkg: any) {\n const projectPackageJson = CliPlatformTest.get<ProjectPackageJson>(ProjectPackageJson);\n\n (projectPackageJson as any).setRaw(pkg);\n }\n\n /**\n * Invoke command with a new context without running prompts\n * @param cmdName\n * @param initialData\n */\n static async exec(cmdName: string, initialData: any) {\n const $ctx = new DIContext({\n id: v4(),\n injector: this.injector,\n logger: this.injector.logger\n });\n\n const metadata = this.injector.settings\n .get(\"commands\")\n .map((token: TokenProvider) => getCommandMetadata(token))\n .find((commandOpts: any) => cmdName === commandOpts.name);\n\n $ctx.set(\"data\", initialData);\n $ctx.set(\"command\", metadata);\n\n return runInContext($ctx, () => this.injector.get<CliService>(CliService)!.exec(cmdName, initialData, $ctx));\n }\n}\n"]}
@@ -4,6 +4,8 @@ export class FakeCliFs {
4
4
  static getKeys() {
5
5
  return normalizePath(Array.from(FakeCliFs.entries.keys()).sort((a, b) => (a < b ? -1 : 1)));
6
6
  }
7
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
8
+ // @ts-ignore
7
9
  findUpFile() {
8
10
  return null;
9
11
  }
@@ -15,6 +17,18 @@ export class FakeCliFs {
15
17
  return FakeCliFs.entries.get(normalizePath(file));
16
18
  }
17
19
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
20
+ readFileSync(file, encoding) {
21
+ return FakeCliFs.entries.get(normalizePath(file));
22
+ }
23
+ async readJson(file, encoding) {
24
+ const content = await this.readFile(file, encoding);
25
+ return JSON.parse(content);
26
+ }
27
+ readJsonSync(file, encoding) {
28
+ const content = this.readFileSync(file, encoding);
29
+ return JSON.parse(content);
30
+ }
31
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
18
32
  writeFileSync(path, data, options) {
19
33
  FakeCliFs.entries.set(normalizePath(path), data);
20
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FakeCliFs.js","sourceRoot":"","sources":["../../src/FakeCliFs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,EAAe,CAAC;IAExC,MAAM,CAAC,OAAO;QACZ,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,QAAQ,CAAC,IAA8B,EAAE,QAAc;QAC3D,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAE,CAAC;IACrD,CAAC;IAED,6DAA6D;IAC7D,aAAa,CAAC,IAAuB,EAAE,IAAS,EAAE,OAA0B;QAC1E,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,6DAA6D;IAC7D,SAAS,CAAC,IAA8B,EAAE,IAAS,EAAE,OAAmC;QACtF,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAgC;QAC5D,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,6DAA6D;IAC7D,aAAa,CAAC,IAAY,EAAE,OAAgC;QAC1D,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,UAAU;QACR,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC","sourcesContent":["import {PathLike} from \"fs\";\nimport {EnsureOptions, WriteFileOptions} from \"fs-extra\";\nimport {normalizePath} from \"./normalizePath\";\n\nexport class FakeCliFs {\n static entries = new Map<any, string>();\n\n static getKeys() {\n return normalizePath(Array.from(FakeCliFs.entries.keys()).sort((a, b) => (a < b ? -1 : 1)));\n }\n\n findUpFile() {\n return null;\n }\n\n exists(path: string): boolean {\n return FakeCliFs.entries.has(normalizePath(path));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async readFile(file: string | Buffer | number, encoding?: any): Promise<string> {\n return FakeCliFs.entries.get(normalizePath(file))!;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n writeFileSync(path: PathLike | number, data: any, options?: WriteFileOptions): void {\n FakeCliFs.entries.set(normalizePath(path), data);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n writeFile(file: string | Buffer | number, data: any, options?: WriteFileOptions | string): void {\n FakeCliFs.entries.set(normalizePath(file), data);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async ensureDir(path: string, options?: EnsureOptions | number): Promise<void> {\n FakeCliFs.entries.set(normalizePath(path), path);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ensureDirSync(path: string, options?: EnsureOptions | number) {\n FakeCliFs.entries.set(normalizePath(path), path);\n }\n\n $onDestroy() {\n FakeCliFs.entries.clear();\n }\n}\n"]}
1
+ {"version":3,"file":"FakeCliFs.js","sourceRoot":"","sources":["../../src/FakeCliFs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,MAAM,OAAO,SAAS;IACpB,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,EAAe,CAAC;IAExC,MAAM,CAAC,OAAO;QACZ,OAAO,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAED,6DAA6D;IAC7D,aAAa;IACb,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,QAAQ,CAAC,IAA8B,EAAE,QAAc;QAC3D,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAE,CAAC;IACrD,CAAC;IAED,6DAA6D;IAC7D,YAAY,CAAC,IAA8B,EAAE,QAAc;QACzD,OAAO,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAE,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAA8B,EAAE,QAAc;QAC3D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEpD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,YAAY,CAAC,IAA8B,EAAE,QAAc;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,6DAA6D;IAC7D,aAAa,CAAC,IAAuB,EAAE,IAAS,EAAE,OAA0B;QAC1E,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,6DAA6D;IAC7D,SAAS,CAAC,IAA8B,EAAE,IAAS,EAAE,OAAmC;QACtF,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAgC;QAC5D,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,6DAA6D;IAC7D,aAAa,CAAC,IAAY,EAAE,OAAgC;QAC1D,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,UAAU;QACR,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC","sourcesContent":["import {PathLike} from \"fs\";\nimport {EnsureOptions, WriteFileOptions} from \"fs-extra\";\nimport {normalizePath} from \"./normalizePath\";\n\nexport class FakeCliFs {\n static entries = new Map<any, string>();\n\n static getKeys() {\n return normalizePath(Array.from(FakeCliFs.entries.keys()).sort((a, b) => (a < b ? -1 : 1)));\n }\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n findUpFile() {\n return null;\n }\n\n exists(path: string): boolean {\n return FakeCliFs.entries.has(normalizePath(path));\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async readFile(file: string | Buffer | number, encoding?: any): Promise<string> {\n return FakeCliFs.entries.get(normalizePath(file))!;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n readFileSync(file: string | Buffer | number, encoding?: any): string {\n return FakeCliFs.entries.get(normalizePath(file))!;\n }\n\n async readJson(file: string | Buffer | number, encoding?: any): Promise<string> {\n const content = await this.readFile(file, encoding);\n\n return JSON.parse(content);\n }\n\n readJsonSync(file: string | Buffer | number, encoding?: any): Promise<string> {\n const content = this.readFileSync(file, encoding);\n\n return JSON.parse(content);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n writeFileSync(path: PathLike | number, data: any, options?: WriteFileOptions): void {\n FakeCliFs.entries.set(normalizePath(path), data);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n writeFile(file: string | Buffer | number, data: any, options?: WriteFileOptions | string): void {\n FakeCliFs.entries.set(normalizePath(file), data);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async ensureDir(path: string, options?: EnsureOptions | number): Promise<void> {\n FakeCliFs.entries.set(normalizePath(path), path);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ensureDirSync(path: string, options?: EnsureOptions | number) {\n FakeCliFs.entries.set(normalizePath(path), path);\n }\n\n $onDestroy() {\n FakeCliFs.entries.clear();\n }\n}\n"]}
@@ -23,4 +23,11 @@ export declare class CliPlatformTest extends DITest {
23
23
  * @param func
24
24
  */
25
25
  static inject<T>(targets: any[], func: (...args: any[]) => Promise<T> | T): () => Promise<T>;
26
+ static setPackageJson(pkg: any): void;
27
+ /**
28
+ * Invoke command with a new context without running prompts
29
+ * @param cmdName
30
+ * @param initialData
31
+ */
32
+ static exec(cmdName: string, initialData: any): Promise<any>;
26
33
  }
@@ -8,6 +8,9 @@ export declare class FakeCliFs {
8
8
  findUpFile(): null;
9
9
  exists(path: string): boolean;
10
10
  readFile(file: string | Buffer | number, encoding?: any): Promise<string>;
11
+ readFileSync(file: string | Buffer | number, encoding?: any): string;
12
+ readJson(file: string | Buffer | number, encoding?: any): Promise<string>;
13
+ readJsonSync(file: string | Buffer | number, encoding?: any): Promise<string>;
11
14
  writeFileSync(path: PathLike | number, data: any, options?: WriteFileOptions): void;
12
15
  writeFile(file: string | Buffer | number, data: any, options?: WriteFileOptions | string): void;
13
16
  ensureDir(path: string, options?: EnsureOptions | number): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsed/cli-testing",
3
- "version": "4.4.6",
3
+ "version": "4.5.1",
4
4
  "description": "Utils to test you CLI based on Ts.ED CLI",
5
5
  "source": "./src/index.ts",
6
6
  "main": "./lib/cjs/index.js",
@@ -28,7 +28,7 @@
28
28
  "decorators"
29
29
  ],
30
30
  "dependencies": {
31
- "@tsed/cli-core": "4.4.6",
31
+ "@tsed/cli-core": "4.5.1",
32
32
  "tslib": "2.3.1"
33
33
  },
34
34
  "devDependencies": {},