node-cli-tester 21.0.33 → 21.0.35

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.
Files changed (87) hide show
  1. package/VERIFIED-BUILD-DATA.jsonc +3 -3
  2. package/browser/package.json +1 -1
  3. package/browser-prod/package.json +1 -1
  4. package/lib/build-info._auto-generated_.d.ts +1 -1
  5. package/lib/build-info._auto-generated_.js +1 -1
  6. package/lib/package.json +1 -1
  7. package/lib-esm/app.d.ts +3 -0
  8. package/lib-esm/app.electron.d.ts +2 -0
  9. package/lib-esm/app.electron.js +83 -0
  10. package/lib-esm/app.electron.js.map +1 -0
  11. package/lib-esm/app.hosts.d.ts +95 -0
  12. package/lib-esm/app.hosts.js +157 -0
  13. package/lib-esm/app.hosts.js.map +1 -0
  14. package/lib-esm/app.js +200 -0
  15. package/lib-esm/app.js.map +1 -0
  16. package/lib-esm/app.vscode.d.ts +9 -0
  17. package/lib-esm/app.vscode.js +31 -0
  18. package/lib-esm/app.vscode.js.map +1 -0
  19. package/lib-esm/index.d.ts +1 -0
  20. package/lib-esm/index.js +2 -0
  21. package/lib-esm/index.js.map +1 -0
  22. package/lib-esm/lib/base-project-structure.backend.d.ts +13 -0
  23. package/lib-esm/lib/base-project-structure.backend.js +75 -0
  24. package/lib-esm/lib/base-project-structure.backend.js.map +1 -0
  25. package/lib-esm/lib/build-info._auto-generated_.d.ts +24 -0
  26. package/lib-esm/lib/build-info._auto-generated_.js +27 -0
  27. package/lib-esm/lib/build-info._auto-generated_.js.map +1 -0
  28. package/lib-esm/lib/cli-test.backend.d.ts +24 -0
  29. package/lib-esm/lib/cli-test.backend.js +141 -0
  30. package/lib-esm/lib/cli-test.backend.js.map +1 -0
  31. package/lib-esm/lib/env/env.angular-node-app.d.ts +66 -0
  32. package/lib-esm/lib/env/env.angular-node-app.js +135 -0
  33. package/lib-esm/lib/env/env.angular-node-app.js.map +1 -0
  34. package/lib-esm/lib/env/env.docs-webapp.d.ts +66 -0
  35. package/lib-esm/lib/env/env.docs-webapp.js +135 -0
  36. package/lib-esm/lib/env/env.docs-webapp.js.map +1 -0
  37. package/lib-esm/lib/env/env.electron-app.d.ts +66 -0
  38. package/lib-esm/lib/env/env.electron-app.js +135 -0
  39. package/lib-esm/lib/env/env.electron-app.js.map +1 -0
  40. package/lib-esm/lib/env/env.mobile-app.d.ts +66 -0
  41. package/lib-esm/lib/env/env.mobile-app.js +135 -0
  42. package/lib-esm/lib/env/env.mobile-app.js.map +1 -0
  43. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.d.ts +66 -0
  44. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js +135 -0
  45. package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js.map +1 -0
  46. package/lib-esm/lib/env/env.vscode-plugin.d.ts +66 -0
  47. package/lib-esm/lib/env/env.vscode-plugin.js +135 -0
  48. package/lib-esm/lib/env/env.vscode-plugin.js.map +1 -0
  49. package/lib-esm/lib/env/index.d.ts +6 -0
  50. package/lib-esm/lib/env/index.js +7 -0
  51. package/lib-esm/lib/env/index.js.map +1 -0
  52. package/lib-esm/lib/index._auto-generated_.d.ts +0 -0
  53. package/lib-esm/lib/index._auto-generated_.js +6 -0
  54. package/lib-esm/lib/index._auto-generated_.js.map +1 -0
  55. package/lib-esm/lib/index.d.ts +4 -0
  56. package/lib-esm/lib/index.js +7 -0
  57. package/lib-esm/lib/index.js.map +1 -0
  58. package/lib-esm/lib/meta-content-md.backend.d.ts +42 -0
  59. package/lib-esm/lib/meta-content-md.backend.js +245 -0
  60. package/lib-esm/lib/meta-content-md.backend.js.map +1 -0
  61. package/lib-esm/lib/migrations/index.d.ts +1 -0
  62. package/lib-esm/lib/migrations/index.js +3 -0
  63. package/lib-esm/lib/migrations/index.js.map +1 -0
  64. package/lib-esm/lib/migrations/migrations_index._auto-generated_.d.ts +0 -0
  65. package/lib-esm/lib/migrations/migrations_index._auto-generated_.js +4 -0
  66. package/lib-esm/lib/migrations/migrations_index._auto-generated_.js.map +1 -0
  67. package/lib-esm/lib/node-cli-tester.d.ts +25 -0
  68. package/lib-esm/lib/node-cli-tester.js +199 -0
  69. package/lib-esm/lib/node-cli-tester.js.map +1 -0
  70. package/lib-esm/lib/spec-templates.backend.d.ts +6 -0
  71. package/lib-esm/lib/spec-templates.backend.js +101 -0
  72. package/lib-esm/lib/spec-templates.backend.js.map +1 -0
  73. package/lib-esm/lib/start.backend.d.ts +2 -0
  74. package/lib-esm/lib/start.backend.js +26 -0
  75. package/lib-esm/lib/start.backend.js.map +1 -0
  76. package/lib-prod/base-project-structure.backend.js.map +1 -1
  77. package/lib-prod/build-info._auto-generated_.d.ts +1 -1
  78. package/lib-prod/build-info._auto-generated_.js +1 -1
  79. package/lib-prod/cli-test.backend.js.map +1 -1
  80. package/lib-prod/meta-content-md.backend.js.map +1 -1
  81. package/lib-prod/node-cli-tester.js.map +1 -1
  82. package/lib-prod/package.json +1 -1
  83. package/lib-prod/spec-templates.backend.js.map +1 -1
  84. package/package.json +1 -1
  85. package/src.js +4 -20
  86. package/websql/package.json +1 -1
  87. package/websql-prod/package.json +1 -1
@@ -0,0 +1,245 @@
1
+ //#region imports
2
+ import * as glob from 'glob';
3
+ import { _, path, Utils } from 'tnp-core/lib';
4
+ import { config } from 'tnp-core/lib';
5
+ import { Helpers, BaseProject as Project } from 'tnp-helpers/lib';
6
+ import { CLASS } from 'typescript-class-helpers/lib';
7
+ import { BaseProjectStructure } from './base-project-structure.backend';
8
+ //#endregion
9
+ /**
10
+ * Special forma of .md for keeping metadata, testfile, and test template for file
11
+ */
12
+ export class MetaMd {
13
+ filePath;
14
+ //#region static fields
15
+ static JSON_PART = '@jsonPart';
16
+ static FILE_CONTENT_PART = '@fileContentPart';
17
+ static TEST_PART = '@testPart';
18
+ //#region static fields / create
19
+ static async create(json, fileContent, testContent) {
20
+ return await create((_.isObject(json) ? Helpers.stringify(json) : json), fileContent, testContent);
21
+ }
22
+ //#endregion
23
+ //#region static fields / preserve file
24
+ static async preserveFiles(originalAnyTypeFiles, destinationFolder, editorCwd, foundProjectsFn = (a) => a, baseProjectsStructurePath, // navi-cli folder or current folder,
25
+ overrideThisFileName = void 0, overrideTimehash = void 0) {
26
+ const properDestName = overrideThisFileName ? overrideThisFileName :
27
+ `${path.basename(_.first(originalAnyTypeFiles))}.${config.file.meta_config_md}`; // TODO later menu to confirm name
28
+ if (!Helpers.isFolder(destinationFolder)) {
29
+ Helpers.error(`[tnp-helpers][meta-content-md] Destination folder "${destinationFolder}"
30
+ is not a folder`, false, true);
31
+ }
32
+ let foundedProjectsInPath = resolveFoundedProject(originalAnyTypeFiles, editorCwd, foundProjectsFn);
33
+ const mostBaseLocationFound = _.minBy(foundedProjectsInPath, p => p.location.length).location;
34
+ // console.log(foundedProjectsInPath.map(p => p.location))
35
+ const projects = foundedProjectsInPath
36
+ .reduce((a, b) => {
37
+ const baseStructureHash = BaseProjectStructure.generate(b).insideIfNotExists(baseProjectsStructurePath);
38
+ return _.merge(a, {
39
+ [path.join(path.basename(mostBaseLocationFound), b.location.replace(mostBaseLocationFound, ''))]: {
40
+ githash: b.git.lastCommitHash(),
41
+ name: b.name,
42
+ baseStructureHash,
43
+ }
44
+ });
45
+ }, {});
46
+ const timeHash = overrideTimehash ? overrideTimehash : (+new Date).toString(36);
47
+ const c = await MetaMd.create({
48
+ orgFileBasenames: originalAnyTypeFiles.map(a => path.basename(a)),
49
+ orgRelativePathes: originalAnyTypeFiles.map(a => {
50
+ return path.join(path.basename(mostBaseLocationFound), a.replace(mostBaseLocationFound, ''));
51
+ }),
52
+ projects,
53
+ firstProjectBasename: path.basename(mostBaseLocationFound),
54
+ timeHash,
55
+ }, originalAnyTypeFiles.map(a => Helpers.readFile(a)));
56
+ Helpers.writeFile(path.join(destinationFolder, properDestName), c);
57
+ }
58
+ //#endregion
59
+ async addFiles(newFilesPathes, destinationFolder, editorCwd, foundProjectFn = void 0, baseProjectsStructurePath) {
60
+ let foundedProjectsInPath = resolveFoundedProject(newFilesPathes, editorCwd, foundProjectFn);
61
+ const mostBaseLocationFound = _.minBy(foundedProjectsInPath, p => p.location.length).location;
62
+ newFilesPathes = Utils.uniqArray([
63
+ ...newFilesPathes,
64
+ ...this.readonlyMetaJson.orgRelativePathes.map(a => {
65
+ return path.join(path.dirname(mostBaseLocationFound), a);
66
+ }),
67
+ ]);
68
+ newFilesPathes.forEach(f => {
69
+ if (!Helpers.exists(f)) {
70
+ Helpers.error(`File doesn't exists`, false, true);
71
+ }
72
+ });
73
+ await MetaMd.preserveFiles(newFilesPathes, destinationFolder, editorCwd, foundProjectFn, baseProjectsStructurePath, path.basename(this.filePath), this.readonlyMetaJson.timeHash);
74
+ }
75
+ //#region static fields / handle instance from meta-content.md file
76
+ static instanceFrom(filePath) {
77
+ return new MetaMd(filePath);
78
+ }
79
+ static allInstancesFrom(folderPath) {
80
+ return glob.sync(`${folderPath}/*.${config.file.meta_config_md}`).map(f => {
81
+ return MetaMd.instanceFrom(f);
82
+ });
83
+ }
84
+ //#endregion
85
+ //#endregion
86
+ //#region getters
87
+ get json() {
88
+ const content = Helpers.readFile(this.filePath) || '';
89
+ try {
90
+ const extracted = _.first(extract(content, MetaMd.JSON_PART));
91
+ const parsed = Helpers.parse(extracted, true);
92
+ return parsed;
93
+ }
94
+ catch (error) {
95
+ return {};
96
+ }
97
+ }
98
+ get readonlyMetaJson() {
99
+ return Object.freeze(this.json);
100
+ }
101
+ fileContentByIndex(i) {
102
+ const content = Helpers.readFile(this.filePath) || '';
103
+ const extracted = extract(content, MetaMd.FILE_CONTENT_PART)[i];
104
+ return extracted;
105
+ }
106
+ get basename() {
107
+ return path.basename(this.filePath);
108
+ }
109
+ get dirname() {
110
+ return path.dirname(this.filePath);
111
+ }
112
+ //#endregion
113
+ //#region constructor
114
+ constructor(filePath) {
115
+ this.filePath = filePath;
116
+ }
117
+ //#endregion
118
+ //#region recreate files/content/env before any tests
119
+ /**
120
+ * recate original files before any unit/intergration test
121
+ */
122
+ recreate(testCwd, cwdProj, ProjectClass = Project, onlyIfNotExists = false) {
123
+ // recreat whole structure
124
+ const hashDir = path.join(testCwd, this.json.timeHash);
125
+ if (onlyIfNotExists && Helpers.exists(hashDir)) {
126
+ return;
127
+ }
128
+ Helpers.removeFolderIfExists(hashDir);
129
+ Helpers.mkdirp(hashDir);
130
+ const firstToFind = this.json.projects[this.json.firstProjectBasename].baseStructureHash;
131
+ const allBaseStructures = BaseProjectStructure.allBaseStructures(cwdProj);
132
+ const baseStructure = allBaseStructures.find(p => p.baseStructureHash === firstToFind);
133
+ if (!baseStructure) {
134
+ Helpers.error(`[node-cli-test][regenerate] base structure was not generated for ${firstToFind}`, false, true);
135
+ }
136
+ baseStructure.copyto(hashDir);
137
+ _.keys(this.json.projects)
138
+ .filter(key => key !== this.json.firstProjectBasename)
139
+ .map(key => {
140
+ const baseStructureHashChild = this.json.projects[key].baseStructureHash;
141
+ const childBaseStruct = allBaseStructures.find(p => p.baseStructureHash === baseStructureHashChild);
142
+ if (childBaseStruct) {
143
+ childBaseStruct.copyto(path.join(hashDir, path.dirname(key)), path.basename(key));
144
+ }
145
+ });
146
+ this.readonlyMetaJson.orgRelativePathes.forEach((f, i) => {
147
+ const fileToWritePath = path.join(hashDir, f);
148
+ Helpers.writeFile(fileToWritePath, this.fileContentByIndex(i));
149
+ });
150
+ const proj = ProjectClass.ins.From(path.join(hashDir, this.readonlyMetaJson.firstProjectBasename));
151
+ const linksToLInk = []; // proj?.forEmptyStructure().filter(f => !!f.relativeLinkFrom) || [];
152
+ linksToLInk.forEach(l => {
153
+ const source = path.resolve(path.join(proj.location, l.relativeLinkFrom));
154
+ if (Helpers.exists(source)) {
155
+ const dest = path.resolve(path.join(proj.location, l.relativePath));
156
+ Helpers.createSymLink(source, dest);
157
+ }
158
+ else {
159
+ Helpers.log(`[cli-tester][recreate-env] not exist ${source}`);
160
+ }
161
+ });
162
+ }
163
+ }
164
+ //#region create
165
+ async function create(json5string, fileContents, testContent) {
166
+ const metadataJSON = Helpers.parse(json5string, true);
167
+ // Helpers.log(`metadataJSON.orgFileBasename: ${metadataJSON.orgFileBasename}`)
168
+ if (!testContent) {
169
+ const projPath = _.maxBy(_.keys(metadataJSON.projects).map(projRelPath => {
170
+ return { path: projRelPath, length: projRelPath.length };
171
+ }), c => c.length)?.path || '';
172
+ let TestTemplatesClass = CLASS.getBy('TestTemplates');
173
+ if (!TestTemplatesClass) {
174
+ TestTemplatesClass = await (await import('./spec-templates.backend')).TestTemplates;
175
+ }
176
+ testContent = TestTemplatesClass.testPart(metadataJSON.orgRelativePathes, projPath, metadataJSON.timeHash);
177
+ }
178
+ const filesContestString = fileContents.map((fileContent, i) => {
179
+ const ext = path.extname(metadataJSON.orgFileBasenames[i]).replace(/^\./, '');
180
+ return `\`\`\`${ext} ${MetaMd.FILE_CONTENT_PART}
181
+ ${fileContent}
182
+ \`\`\``;
183
+ }).join('\n\n');
184
+ return `
185
+ \`\`\`ts ${MetaMd.TEST_PART}
186
+ ${testContent}
187
+ \`\`\`
188
+
189
+ \`\`\`json5 ${MetaMd.JSON_PART}
190
+ ${json5string}
191
+ \`\`\`
192
+
193
+ ${filesContestString}
194
+ `.split('\n').map(l => {
195
+ return l.trim().startsWith('\`\`\`') ? l.trimLeft() : l;
196
+ }).join('\n').trim() + '\n';
197
+ }
198
+ //#endregion
199
+ //#region extract data parts from content md file
200
+ export function extract(content, PARTS_TO_FIND) {
201
+ if (!content) {
202
+ return;
203
+ }
204
+ const parts = [];
205
+ let lines = [];
206
+ const allLines = content.split('\n');
207
+ let pushingActive = false;
208
+ for (let index = 0; index < allLines.length; index++) {
209
+ const orgLine = (allLines[index] || '');
210
+ const line = orgLine.trim();
211
+ if (pushingActive) {
212
+ if (line.startsWith('\`\`\`')) {
213
+ parts.push(lines.join('\n'));
214
+ lines = [];
215
+ }
216
+ else {
217
+ lines.push(orgLine);
218
+ }
219
+ }
220
+ if (line.startsWith('\`\`\`') && (line.search(PARTS_TO_FIND) !== -1)) {
221
+ pushingActive = true;
222
+ }
223
+ }
224
+ return parts.filter(f => !!f.trim());
225
+ }
226
+ //#endregion
227
+ //#region resolve founded projects
228
+ function resolveFoundedProject(originalAnyTypeFiles, editorCwd, foundProjectFn) {
229
+ let foundedProjectsInPath = [];
230
+ for (let index = 0; index < originalAnyTypeFiles.length; index++) {
231
+ const fileAbsPath = originalAnyTypeFiles[index];
232
+ foundedProjectsInPath = [
233
+ ...foundedProjectsInPath,
234
+ ...Project.ins.allProjectFrom(fileAbsPath, editorCwd)
235
+ ];
236
+ if (foundProjectFn) {
237
+ foundedProjectsInPath = foundProjectFn(Utils.uniqArray(foundedProjectsInPath, 'location'));
238
+ }
239
+ }
240
+ foundedProjectsInPath = Utils.uniqArray(foundedProjectsInPath, 'location');
241
+ return foundedProjectsInPath;
242
+ }
243
+ //#endregion
244
+ //#endregion
245
+ //# sourceMappingURL=meta-content-md.backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-content-md.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './migrations_index._auto-generated_';
@@ -0,0 +1,3 @@
1
+ //@ts-nocheck
2
+ export * from './migrations_index._auto-generated_';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,aAAa;AACb,cAAc,qCAAqC,CAAC"}
@@ -0,0 +1,4 @@
1
+ // THIS FILE IS GENERATED - DO NOT MODIFY
2
+ // THIS FILE IS GENERATED - DO NOT MODIFY
3
+ // THIS FILE IS GENERATED - DO NOT MODIFY
4
+ //# sourceMappingURL=migrations_index._auto-generated_.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations_index._auto-generated_.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,yCAAyC;AAEzC,yCAAyC;AAEzC,yCAAyC"}
@@ -0,0 +1,25 @@
1
+ import { BaseProject as Project } from 'tnp-helpers/lib';
2
+ export declare class NodeCliTester {
3
+ protected readonly cwd: string;
4
+ private static _instances;
5
+ private static ACTIONS;
6
+ static classFn: typeof NodeCliTester;
7
+ static projectClassFn: typeof Project;
8
+ static foundProjectsFn: (projects: Project[]) => Project[];
9
+ protected constructor(cwd?: string);
10
+ static Instance(cwd?: string): NodeCliTester;
11
+ static InstanceNearestTo(cwd: string): NodeCliTester;
12
+ protected getAllTestsNames(): void;
13
+ protected getMdContentFilesForTest(testNameOrPathToTestFolder: string): void;
14
+ protected getMdContentFilesWithHash(testNameOrPathToTestFolder: string): void;
15
+ protected getAllTestsNamesForRegenerate(): void;
16
+ createTest(testNameOrPathToTestFolder: string[] | string): Promise<void>;
17
+ createTestAndAddFiles(testName: string, absoluteFilePathes: string[], editorCwd?: string): Promise<void>;
18
+ addFilesToTest(testNameOrPathToTestFolder: string, filePath: string[], editorCwd?: string): Promise<void>;
19
+ addFilesToMdContent(testNameOrPathToTestFolder: string, mdContentFileBasenameOrPath: string | null, filePaths: string[], editorCwd?: string): Promise<void>;
20
+ private get lastRegenerateHashFile();
21
+ private get lastRegenerateMenuItem();
22
+ regenerate(timeHash: string): Promise<void>;
23
+ regenerateLast(): Promise<void>;
24
+ regenerateEnvironment(timeHash: string, tempFolder?: string, onlyIfNotExists?: boolean): Promise<void>;
25
+ }
@@ -0,0 +1,199 @@
1
+ //#region imports
2
+ //#region @backend
3
+ import { path, _ } from 'tnp-core/lib';
4
+ import { Helpers, HelpersTaon, BaseProject as Project } from 'tnp-helpers/lib';
5
+ import { config } from 'tnp-core/lib';
6
+ import { CliTest } from './cli-test.backend';
7
+ import { CLASS } from 'typescript-class-helpers/lib';
8
+ //#endregion
9
+ //#endregion
10
+ export class NodeCliTester {
11
+ cwd;
12
+ //#region @backend
13
+ //#region singleton
14
+ static _instances = {};
15
+ static ACTIONS = {
16
+ REGENERATE_LAST_HASH: 'regenerate-last-env-hash'
17
+ };
18
+ static classFn = NodeCliTester;
19
+ static projectClassFn = Project;
20
+ static foundProjectsFn = void 0;
21
+ constructor(cwd = process.cwd()) {
22
+ this.cwd = cwd;
23
+ const pathToScenarios = path.join(cwd, config.folder.scenarios);
24
+ const pathToScenariosTemp = path.join(cwd, config.folder.tmpScenarios);
25
+ if (!Helpers.exists(pathToScenarios)) {
26
+ Helpers.createSymLink(pathToScenariosTemp, pathToScenarios, { continueWhenExistedFolderDoesntExists: true });
27
+ }
28
+ }
29
+ static Instance(cwd = process.cwd()) {
30
+ if (!NodeCliTester._instances[cwd]) {
31
+ NodeCliTester._instances[cwd] = new (this.classFn)(cwd);
32
+ }
33
+ return NodeCliTester._instances[cwd];
34
+ }
35
+ static InstanceNearestTo(cwd) {
36
+ const proj = Project.ins.nearestTo(cwd);
37
+ if (!proj) {
38
+ Helpers.error(`Nearsest project instance not found for ${cwd} `, false, true);
39
+ }
40
+ return this.Instance(proj.location);
41
+ }
42
+ //#endregion
43
+ //#region get menu options
44
+ //#region get menu options / all tests names
45
+ getAllTestsNames() {
46
+ const names = CliTest.allFrom(this.cwd).map(c => {
47
+ return { label: c.testName, option: c.testDirnamePath };
48
+ });
49
+ HelpersTaon.outputToVScode(names);
50
+ }
51
+ //#endregion
52
+ //#region get menu options / all meta-content.md files for test (path as option)
53
+ getMdContentFilesForTest(testNameOrPathToTestFolder) {
54
+ const c = CliTest.from(this.cwd, path.isAbsolute(testNameOrPathToTestFolder) ? path.basename(testNameOrPathToTestFolder) : testNameOrPathToTestFolder);
55
+ const toOutput = [
56
+ { label: `< create new ${config.file.meta_config_md} file >`, option: null },
57
+ ...c.metaMd.all.map(c => {
58
+ const v = c.filePath;
59
+ return { option: v, label: `add to "${path.basename(v)}"` };
60
+ })
61
+ ];
62
+ HelpersTaon.outputToVScode(toOutput);
63
+ }
64
+ //#endregion
65
+ //#region get menu options / all meta-content.md files for test (hash as option)
66
+ getMdContentFilesWithHash(testNameOrPathToTestFolder) {
67
+ const c = CliTest.from(this.cwd, path.isAbsolute(testNameOrPathToTestFolder) ? path.basename(testNameOrPathToTestFolder) : testNameOrPathToTestFolder);
68
+ const toOutput = [
69
+ ...c.metaMd.all.map(c => {
70
+ return { option: c.readonlyMetaJson.timeHash, label: `add to "${path.basename(c.filePath)}"` };
71
+ })
72
+ ];
73
+ HelpersTaon.outputToVScode(toOutput);
74
+ }
75
+ //#endregion
76
+ //#region get menu options / all tests names (with additional options for regenerate)
77
+ getAllTestsNamesForRegenerate() {
78
+ const last = this.lastRegenerateMenuItem;
79
+ const specialOptions = [
80
+ ...(last ? [last] : [])
81
+ ];
82
+ const names = [
83
+ ...specialOptions,
84
+ ...CliTest.allFrom(this.cwd).map(c => {
85
+ return { label: c.testName, option: c.testDirnamePath };
86
+ }),
87
+ ];
88
+ HelpersTaon.outputToVScode(names);
89
+ }
90
+ //#endregion
91
+ //#endregion
92
+ //#region create test
93
+ async createTest(testNameOrPathToTestFolder) {
94
+ Helpers.log(`Create test from node-cli-tester`);
95
+ if (_.isString(testNameOrPathToTestFolder)) {
96
+ testNameOrPathToTestFolder = [testNameOrPathToTestFolder];
97
+ }
98
+ for (let index = 0; index < testNameOrPathToTestFolder.length; index++) {
99
+ const p = testNameOrPathToTestFolder[index];
100
+ const c = CliTest.from(this.cwd, path.isAbsolute(p) ? path.basename(p) : p);
101
+ await c.regenerateFiles();
102
+ }
103
+ }
104
+ //#endregion
105
+ //#region create test and add file
106
+ async createTestAndAddFiles(testName, absoluteFilePathes, editorCwd = process.cwd()) {
107
+ await this.createTest(testName);
108
+ await this.addFilesToTest(testName, absoluteFilePathes, editorCwd);
109
+ }
110
+ //#endregion
111
+ //#region add files to
112
+ //#region add files to / test
113
+ async addFilesToTest(testNameOrPathToTestFolder, filePath, editorCwd = process.cwd()) {
114
+ const c = CliTest.from(this.cwd, path.isAbsolute(testNameOrPathToTestFolder)
115
+ ? path.basename(testNameOrPathToTestFolder) : testNameOrPathToTestFolder);
116
+ await c.metaMd.add(filePath, editorCwd, CLASS.getFromObject(this));
117
+ }
118
+ //#endregion
119
+ //#region add files to / meta-content.md files
120
+ async addFilesToMdContent(testNameOrPathToTestFolder, mdContentFileBasenameOrPath, filePaths, editorCwd = process.cwd()) {
121
+ const c = CliTest.from(this.cwd, path.isAbsolute(testNameOrPathToTestFolder)
122
+ ? path.basename(testNameOrPathToTestFolder) : testNameOrPathToTestFolder);
123
+ const mdContentFileBasename = !!mdContentFileBasenameOrPath && (path.isAbsolute(mdContentFileBasenameOrPath)
124
+ ? path.basename(mdContentFileBasenameOrPath) : mdContentFileBasenameOrPath);
125
+ const m = mdContentFileBasename && c.metaMd.all.find(a => a.basename === mdContentFileBasename);
126
+ if (m) {
127
+ const NodeCliTestrClass = CLASS.getFromObject(this);
128
+ await m.addFiles(filePaths, c.testDirnamePath, editorCwd, NodeCliTestrClass.foundProjectsFn, c.cwd);
129
+ }
130
+ else {
131
+ await this.addFilesToTest(testNameOrPathToTestFolder, filePaths, editorCwd);
132
+ }
133
+ }
134
+ //#endregion
135
+ //#endregion
136
+ //#region regenerate
137
+ //#region regenerate / last regenerate hash file path
138
+ get lastRegenerateHashFile() {
139
+ return path.join(this.cwd, 'tmp-last-regenerate-hash-env');
140
+ }
141
+ //#endregion
142
+ //#region regenerate / get last regenerate manu item
143
+ get lastRegenerateMenuItem() {
144
+ const lashHash = Helpers.readFile(this.lastRegenerateHashFile, '').trim();
145
+ if (lashHash) {
146
+ const allTests = CliTest.allFrom(this.cwd);
147
+ let machingMdFile;
148
+ allTests.find(a => a.metaMd.all.find(b => {
149
+ if (b.readonlyMetaJson.timeHash === lashHash) {
150
+ machingMdFile = b;
151
+ return true;
152
+ }
153
+ return false;
154
+ }));
155
+ if (machingMdFile) {
156
+ const NodeCliTesterClass = CLASS.getFromObject(this);
157
+ const res = {
158
+ label: ` < regenerate last hash env "${machingMdFile.readonlyMetaJson.timeHash}" `
159
+ + `for project: "${machingMdFile.readonlyMetaJson.firstProjectBasename}" in `
160
+ + `${machingMdFile.basename} >`,
161
+ option: { action: NodeCliTesterClass.ACTIONS.REGENERATE_LAST_HASH }
162
+ };
163
+ return res;
164
+ }
165
+ }
166
+ return void 0;
167
+ }
168
+ //#endregion
169
+ //#region regenerate / aliases
170
+ async regenerate(timeHash) {
171
+ await this.regenerateEnvironment(timeHash);
172
+ }
173
+ async regenerateLast() {
174
+ const NodeCliTesterClass = CLASS.getFromObject(this);
175
+ await this.regenerateEnvironment(NodeCliTesterClass.ACTIONS.REGENERATE_LAST_HASH);
176
+ }
177
+ //#endregion
178
+ //#region regenerate / regenerate environment function
179
+ async regenerateEnvironment(timeHash, tempFolder = config.folder.tmpTestsEnvironments, onlyIfNotExists = false) {
180
+ const NodeCliTesterClass = CLASS.getFromObject(this);
181
+ if (timeHash === NodeCliTesterClass.ACTIONS.REGENERATE_LAST_HASH) {
182
+ timeHash = Helpers.readFile(this.lastRegenerateHashFile, '');
183
+ }
184
+ if (!path.isAbsolute(tempFolder)) {
185
+ tempFolder = path.join(this.cwd, tempFolder);
186
+ }
187
+ const c = CliTest.getBy(this.cwd, timeHash);
188
+ const m = c?.metaMd.all.find(a => a.readonlyMetaJson.timeHash === timeHash);
189
+ if (m) {
190
+ const ProjectClass = NodeCliTesterClass.projectClassFn;
191
+ m.recreate(tempFolder, this.cwd, ProjectClass, onlyIfNotExists);
192
+ Helpers.writeFile(this.lastRegenerateHashFile, timeHash);
193
+ }
194
+ else {
195
+ Helpers.error(`Not able to find test with hash ${timeHash}`, false, true);
196
+ }
197
+ }
198
+ }
199
+ //# sourceMappingURL=node-cli-tester.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-cli-tester.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,iBAAiB;AACjB,kBAAkB;AAClB,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AAErD,YAAY;AACZ,YAAY;AAEZ,MAAM,OAAO,aAAa;IAcH;IAbrB,kBAAkB;IAClB,mBAAmB;IACX,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;IAEvB,MAAM,CAAC,OAAO,GAAG;QACvB,oBAAoB,EAAE,0BAA0B;KACjD,CAAA;IACM,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC;IAC/B,MAAM,CAAC,cAAc,GAAG,OAAO,CAAC;IAEhC,MAAM,CAAC,eAAe,GAAuC,KAAK,CAAC,CAAC;IAE3E,YACqB,MAAM,OAAO,CAAC,GAAG,EAAE;QAAnB,QAAG,GAAH,GAAG,CAAgB;QAEtC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,aAAa,CAAC,mBAAmB,EAAE,eAAe,EACxD,EAAE,qCAAqC,EAAE,IAAI,EAAE,CAAC,CAAA;QACpD,CAAC;IACH,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;QACxC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACnC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,aAAa,CAAC,UAAU,CAAC,GAAG,CAAkB,CAAC;IACxD,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,GAAW;QACzC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,2CAA2C,GAAG,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,YAAY;IAEZ,0BAA0B;IAE1B,4CAA4C;IAClC,gBAAgB;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC9C,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;QACH,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,YAAY;IAEZ,gFAAgF;IACtE,wBAAwB,CAAC,0BAAkC;QACnE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACvJ,MAAM,QAAQ,GAAG;YACf,EAAE,KAAK,EAAE,gBAAgB,MAAM,CAAC,IAAI,CAAC,cAAc,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE;YAC5E,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACtB,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;gBACrB,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;YAC7D,CAAC,CAAC;SACH,CAAC;QACF,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IACD,YAAY;IAEZ,gFAAgF;IACtE,yBAAyB,CAAC,0BAAkC;QACpE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACvJ,MAAM,QAAQ,GAAG;YACf,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACtB,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAA;YAChG,CAAC,CAAC;SACH,CAAC;QACF,WAAW,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IACD,YAAY;IAEZ,qFAAqF;IAC3E,6BAA6B;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,sBAAsB,CAAC;QACzC,MAAM,cAAc,GAAG;YACrB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACxB,CAAC;QAEF,MAAM,KAAK,GAAG;YACZ,GAAG,cAAc;YACjB,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACnC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;YAC1D,CAAC,CAAC;SACH,CAAC;QACF,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,YAAY;IAEZ,YAAY;IAEZ,qBAAqB;IACd,KAAK,CAAC,UAAU,CAAC,0BAA6C;QACnE,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,IAAI,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,CAAC;YAC3C,0BAA0B,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAC5D,CAAC;QACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,0BAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACvE,MAAM,CAAC,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;YAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5E,MAAM,CAAC,CAAC,eAAe,EAAE,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,YAAY;IAEZ,kCAAkC;IAC3B,KAAK,CAAC,qBAAqB,CAAC,QAAgB,EAAE,kBAA4B,EAAE,YAAoB,OAAO,CAAC,GAAG,EAAE;QAClH,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,kBAAkB,EAAE,SAAS,CAAC,CAAC;IACrE,CAAC;IACD,YAAY;IAEZ,sBAAsB;IAEtB,6BAA6B;IACtB,KAAK,CAAC,cAAc,CAAC,0BAAkC,EAAE,QAAkB,EAAE,YAAoB,OAAO,CAAC,GAAG,EAAE;QACnH,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC;YAC1E,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;QAC5E,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,IAAI,CAAQ,CAAC,CAAC;IAC5E,CAAC;IACD,YAAY;IAEZ,8CAA8C;IACvC,KAAK,CAAC,mBAAmB,CAC9B,0BAAkC,EAClC,2BAA0C,EAAE,SAAmB,EAC/D,YAAoB,OAAO,CAAC,GAAG,EAAE;QAEjC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC;YAC1E,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;QAE5E,MAAM,qBAAqB,GAAG,CAAC,CAAC,2BAA2B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,2BAA2B,CAAC;YAC1G,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC;QAC9E,MAAM,CAAC,GAAG,qBAAqB,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,qBAAqB,CAAC,CAAC;QAChG,IAAI,CAAC,EAAE,CAAC;YACN,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAQ,CAAC;YAC3D,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,eAAe,EAAE,SAAS,EAAE,iBAAiB,CAAC,eAAe,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACtG,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,cAAc,CAAC,0BAA0B,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,YAAY;IAEZ,YAAY;IAEZ,oBAAoB;IAEpB,qDAAqD;IACrD,IAAY,sBAAsB;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,8BAA8B,CAAC,CAAC;IAC7D,CAAC;IACD,YAAY;IAEZ,oDAAoD;IACpD,IAAY,sBAAsB;QAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1E,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,aAAqB,CAAC;YAC1B,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBACvC,IAAI,CAAC,CAAC,gBAAgB,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC7C,aAAa,GAAG,CAAC,CAAC;oBAClB,OAAO,IAAI,CAAC;gBACd,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC,CAAC;YACJ,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,kBAAkB,GAAI,KAAK,CAAC,aAAa,CAAC,IAAI,CAAiC,CAAC;gBACtF,MAAM,GAAG,GAAG;oBACV,KAAK,EAAE,gCAAgC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,IAAI;0BAC9E,iBAAiB,aAAa,CAAC,gBAAgB,CAAC,oBAAoB,OAAO;0BAC3E,GAAG,aAAa,CAAC,QAAQ,IAAI;oBACjC,MAAM,EAAE,EAAE,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,oBAAoB,EAAE;iBACpE,CAAC;gBACF,OAAO,GAAG,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,CAAC;IAChB,CAAC;IACD,YAAY;IAEZ,8BAA8B;IACvB,KAAK,CAAC,UAAU,CAAC,QAAgB;QACtC,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACM,KAAK,CAAC,cAAc;QACzB,MAAM,kBAAkB,GAAI,KAAK,CAAC,aAAa,CAAC,IAAI,CAAiC,CAAC;QACtF,MAAM,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACpF,CAAC;IAED,YAAY;IAEZ,sDAAsD;IAC/C,KAAK,CAAC,qBAAqB,CAAC,QAAgB,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,eAAe,GAAG,KAAK;QAC3H,MAAM,kBAAkB,GAAI,KAAK,CAAC,aAAa,CAAC,IAAI,CAAiC,CAAC;QACtF,IAAI,QAAQ,KAAK,kBAAkB,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;YACjE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QAC5E,IAAI,CAAC,EAAE,CAAC;YACN,MAAM,YAAY,GAAG,kBAAkB,CAAC,cAAc,CAAC;YACvD,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;YAChE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,mCAAmC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare class TestTemplates {
2
+ static DEFAULT_COMMAND: string;
3
+ static PROJECT_ENTITY_LOCATION: string;
4
+ static testPart(pathToFiles: string[], projPath: string, timeHash: string): string;
5
+ static regenerateSpecTs(specTsPath: string, testRealName: string): void;
6
+ }
@@ -0,0 +1,101 @@
1
+ //#region imports
2
+ import { path, _ } from 'tnp-core/lib';
3
+ import { CLASS } from 'typescript-class-helpers/lib';
4
+ import { Helpers } from 'tnp-helpers/lib';
5
+ //#endregion
6
+ //#region base imports contant
7
+ const baseImports = `
8
+ import { _, path, crossPlatformPath } from 'tnp-core';
9
+ import chalk from 'chalk';
10
+ import { describe, before, beforeEach, it } from 'mocha';
11
+ import { expect } from 'chai';
12
+ import { CLASS } from 'typescript-class-helpers';
13
+ import { Helpers } from 'tnp-helpers';
14
+ import { config } from 'tnp-core';
15
+ import { NodeCliTester } from 'node-cli-tester';
16
+ `.trim();
17
+ const testMeta = `
18
+ // const testName = this.test.title;
19
+ // const testFullName = this.test.fullTitle();
20
+ `.trim();
21
+ //#endregion
22
+ let TestTemplates = class TestTemplates {
23
+ static DEFAULT_COMMAND = `echo "hello world"`;
24
+ static PROJECT_ENTITY_LOCATION = `tnp-helpers`;
25
+ //#region create test part
26
+ static testPart(pathToFiles, projPath, timeHash) {
27
+ const describes = `
28
+
29
+ it('Should pass the test with hash ' + cwdHash // chalk.hidden(cwdHash)
30
+ , async () => {
31
+ //#region resolve variables
32
+ ${'' // testMeta
33
+ }
34
+ const projFolder = '${_.first(projPath.split('/'))}';
35
+ const tmpTestEnvironmentFolder = 'tmp-tests-environments';
36
+ const cwd = path.resolve(path.join(crossPlatformPath(__dirname), \`../../../../\${tmpTestEnvironmentFolder}\`, cwdHash));
37
+ const relativePathToFile = {
38
+ ${pathToFiles.map(pathToFile => `${_.camelCase(path.basename(pathToFile))} : \`${pathToFile.split('/').slice(1).join('/')}\``)
39
+ .join(',\n ')}
40
+ };
41
+ const absolutePathToTestFile = {
42
+ ${pathToFiles.map(pathToFile => `${_.camelCase(path.basename(pathToFile))} : path.join(cwd, projFolder, relativePathToFile.${_.camelCase(path.basename(pathToFile))})`)
43
+ .join(',\n ')}
44
+ };
45
+ await NodeCliTester.InstanceNearestTo(cwd).regenerateEnvironment(cwdHash,tmpTestEnvironmentFolder);
46
+ const $Project = Project || CLASS.getBy('Project') as typeof Project;
47
+ const proj = $Project.From(path.join(cwd,projFolder));
48
+ //#endregion
49
+
50
+ // @ts-ignore
51
+ expect(proj.runCommandGetString(\`${this.DEFAULT_COMMAND}\`)).to.be.eq('hello world');
52
+ });
53
+ `;
54
+ const testsImports = `
55
+ ${'' // baseImports
56
+ }
57
+ ${'' // import { Project } from '${this.PROJECT_ENTITY_LOCATION}';
58
+ }
59
+
60
+ `;
61
+ const result = '\n'
62
+ + testsImports.trim()
63
+ + `
64
+ describe('${projPath}',()=> {
65
+ const cwdHash = '${timeHash}';
66
+ ${describes}
67
+ });
68
+ `.trim() + '\n\n';
69
+ return result;
70
+ }
71
+ //#endregion
72
+ //#region regenerate spec ts
73
+ static regenerateSpecTs(specTsPath, testRealName) {
74
+ if (!Helpers.exists(specTsPath)) {
75
+ Helpers.writeFile(specTsPath,
76
+ //#region content of *.spec.ts
77
+ `
78
+ ${baseImports}
79
+ import { Project } from '${this.PROJECT_ENTITY_LOCATION}';
80
+
81
+ describe('${testRealName}', () => {
82
+
83
+ // PUT ALL YOUR TESTS HERE
84
+
85
+ it('should works example unit test', () => {
86
+ ${testMeta}
87
+ expect(1).to.be.gt(0)
88
+ });
89
+
90
+ });
91
+ `.trim() + '\n'
92
+ //#endregion
93
+ );
94
+ }
95
+ }
96
+ };
97
+ TestTemplates = __decorate([
98
+ CLASS.NAME('TestTemplates')
99
+ ], TestTemplates);
100
+ export { TestTemplates };
101
+ //# sourceMappingURL=spec-templates.backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-templates.backend.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,YAAY;AAEZ,8BAA8B;AAC9B,MAAM,WAAW,GAAG;;;;;;;;;CASnB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,QAAQ,GAAG;;;CAGhB,CAAC,IAAI,EAAE,CAAC;AACT,YAAY;AAEL,IAAM,aAAa,GAAnB,MAAM,aAAa;IACjB,MAAM,CAAC,eAAe,GAAG,oBAAoB,CAAC;IAC9C,MAAM,CAAC,uBAAuB,GAAG,aAAa,CAAC;IAEtD,0BAA0B;IACnB,MAAM,CAAC,QAAQ,CAAC,WAAqB,EAAE,QAAgB,EAAE,QAAgB;QAC9E,MAAM,SAAS,GAAG;;;;;EAKpB,EAAE,CAAE,WAAW;QACX;yBACmB,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;;;OAI9C,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;aAC1H,IAAI,CAAC,UAAU,CAAC;;;OAGlB,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,oDAAoD,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC;aACnK,IAAI,CAAC,UAAU,CAAC;;;;;;;;uCAQc,IAAI,CAAC,eAAe;;CAE1D,CAAC;QAGE,MAAM,YAAY,GAAG;EACvB,EAAE,CAAE,cAAc;QACd;EACJ,EAAE,CAAC,6DAA6D;QAC5D;;CAEL,CAAC;QACE,MAAM,MAAM,GAAG,IAAI;cACf,YAAY,CAAC,IAAI,EAAE;cACnB;YACI,QAAQ;qBACC,QAAQ;EAC3B,SAAS;;GAER,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC;QAChB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,YAAY;IAEZ,4BAA4B;IACrB,MAAM,CAAC,gBAAgB,CAAC,UAAkB,EAAE,YAAoB;QACrE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,SAAS,CAAC,UAAU;YAC1B,8BAA8B;YAC9B;EACN,WAAW;2BACc,IAAI,CAAC,uBAAuB;;YAE3C,YAAY;;;;;EAKtB,QAAQ;;;;;CAKT,CAAC,IAAI,EAAE,GAAG,IAAI;YACP,YAAY;aACb,CAAC;QACJ,CAAC;IACH,CAAC;;AA7EU,aAAa;IADzB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;GACf,aAAa,CAgFzB"}
@@ -0,0 +1,2 @@
1
+ import { NodeCliTester } from './node-cli-tester';
2
+ export declare function run<T extends NodeCliTester = NodeCliTester>(argsv: string[], instance?: T): Promise<void>;