node-cli-tester 21.0.34 → 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.
- package/VERIFIED-BUILD-DATA.jsonc +3 -3
- package/browser/package.json +1 -1
- package/browser-prod/package.json +1 -1
- package/lib/build-info._auto-generated_.d.ts +1 -1
- package/lib/build-info._auto-generated_.js +1 -1
- package/lib/package.json +1 -1
- package/lib-esm/app.d.ts +3 -0
- package/lib-esm/app.electron.d.ts +2 -0
- package/lib-esm/app.electron.js +83 -0
- package/lib-esm/app.electron.js.map +1 -0
- package/lib-esm/app.hosts.d.ts +95 -0
- package/lib-esm/app.hosts.js +157 -0
- package/lib-esm/app.hosts.js.map +1 -0
- package/lib-esm/app.js +200 -0
- package/lib-esm/app.js.map +1 -0
- package/lib-esm/app.vscode.d.ts +9 -0
- package/lib-esm/app.vscode.js +31 -0
- package/lib-esm/app.vscode.js.map +1 -0
- package/lib-esm/index.d.ts +1 -0
- package/lib-esm/index.js +2 -0
- package/lib-esm/index.js.map +1 -0
- package/lib-esm/lib/base-project-structure.backend.d.ts +13 -0
- package/lib-esm/lib/base-project-structure.backend.js +75 -0
- package/lib-esm/lib/base-project-structure.backend.js.map +1 -0
- package/lib-esm/lib/build-info._auto-generated_.d.ts +24 -0
- package/lib-esm/lib/build-info._auto-generated_.js +27 -0
- package/lib-esm/lib/build-info._auto-generated_.js.map +1 -0
- package/lib-esm/lib/cli-test.backend.d.ts +24 -0
- package/lib-esm/lib/cli-test.backend.js +141 -0
- package/lib-esm/lib/cli-test.backend.js.map +1 -0
- package/lib-esm/lib/env/env.angular-node-app.d.ts +66 -0
- package/lib-esm/lib/env/env.angular-node-app.js +135 -0
- package/lib-esm/lib/env/env.angular-node-app.js.map +1 -0
- package/lib-esm/lib/env/env.docs-webapp.d.ts +66 -0
- package/lib-esm/lib/env/env.docs-webapp.js +135 -0
- package/lib-esm/lib/env/env.docs-webapp.js.map +1 -0
- package/lib-esm/lib/env/env.electron-app.d.ts +66 -0
- package/lib-esm/lib/env/env.electron-app.js +135 -0
- package/lib-esm/lib/env/env.electron-app.js.map +1 -0
- package/lib-esm/lib/env/env.mobile-app.d.ts +66 -0
- package/lib-esm/lib/env/env.mobile-app.js +135 -0
- package/lib-esm/lib/env/env.mobile-app.js.map +1 -0
- package/lib-esm/lib/env/env.npm-lib-and-cli-tool.d.ts +66 -0
- package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js +135 -0
- package/lib-esm/lib/env/env.npm-lib-and-cli-tool.js.map +1 -0
- package/lib-esm/lib/env/env.vscode-plugin.d.ts +66 -0
- package/lib-esm/lib/env/env.vscode-plugin.js +135 -0
- package/lib-esm/lib/env/env.vscode-plugin.js.map +1 -0
- package/lib-esm/lib/env/index.d.ts +6 -0
- package/lib-esm/lib/env/index.js +7 -0
- package/lib-esm/lib/env/index.js.map +1 -0
- package/lib-esm/lib/index._auto-generated_.d.ts +0 -0
- package/lib-esm/lib/index._auto-generated_.js +6 -0
- package/lib-esm/lib/index._auto-generated_.js.map +1 -0
- package/lib-esm/lib/index.d.ts +4 -0
- package/lib-esm/lib/index.js +7 -0
- package/lib-esm/lib/index.js.map +1 -0
- package/lib-esm/lib/meta-content-md.backend.d.ts +42 -0
- package/lib-esm/lib/meta-content-md.backend.js +245 -0
- package/lib-esm/lib/meta-content-md.backend.js.map +1 -0
- package/lib-esm/lib/migrations/index.d.ts +1 -0
- package/lib-esm/lib/migrations/index.js +3 -0
- package/lib-esm/lib/migrations/index.js.map +1 -0
- package/lib-esm/lib/migrations/migrations_index._auto-generated_.d.ts +0 -0
- package/lib-esm/lib/migrations/migrations_index._auto-generated_.js +4 -0
- package/lib-esm/lib/migrations/migrations_index._auto-generated_.js.map +1 -0
- package/lib-esm/lib/node-cli-tester.d.ts +25 -0
- package/lib-esm/lib/node-cli-tester.js +199 -0
- package/lib-esm/lib/node-cli-tester.js.map +1 -0
- package/lib-esm/lib/spec-templates.backend.d.ts +6 -0
- package/lib-esm/lib/spec-templates.backend.js +101 -0
- package/lib-esm/lib/spec-templates.backend.js.map +1 -0
- package/lib-esm/lib/start.backend.d.ts +2 -0
- package/lib-esm/lib/start.backend.js +26 -0
- package/lib-esm/lib/start.backend.js.map +1 -0
- package/lib-prod/base-project-structure.backend.js.map +1 -1
- package/lib-prod/build-info._auto-generated_.d.ts +1 -1
- package/lib-prod/build-info._auto-generated_.js +1 -1
- package/lib-prod/cli-test.backend.js.map +1 -1
- package/lib-prod/meta-content-md.backend.js.map +1 -1
- package/lib-prod/node-cli-tester.js.map +1 -1
- package/lib-prod/package.json +1 -1
- package/lib-prod/spec-templates.backend.js.map +1 -1
- package/package.json +1 -1
- package/src.js +4 -20
- package/websql/package.json +1 -1
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,aAAa;AACb,cAAc,qCAAqC,CAAC"}
|
|
File without changes
|
|
@@ -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":"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"}
|
|
@@ -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"}
|