testeranto 0.146.2 → 0.146.4
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/dist/common/src/Node.js +9 -6
- package/dist/common/src/PM/PM_WithEslintAndTsc.js +75 -58
- package/dist/common/src/PM/main.js +131 -79
- package/dist/common/src/PM/node.js +1 -14
- package/dist/common/src/PM/nodeSidecar.js +0 -1
- package/dist/common/src/Pure.js +17 -1
- package/dist/common/src/Pure.test.js +172 -0
- package/dist/common/src/build.js +0 -1
- package/dist/common/src/esbuildConfigs/consoleDetectorPlugin.js +22 -11
- package/dist/common/src/esbuildConfigs/nativeImportDetectorPlugin.js +24 -0
- package/dist/common/src/esbuildConfigs/pure.js +2 -1
- package/dist/common/src/esbuildConfigs/rebuildPlugin.js +1 -4
- package/dist/common/src/lib/BaseSuite.js +89 -0
- package/dist/common/src/lib/BaseSuite.test/node.test.js +9 -0
- package/dist/common/src/lib/BaseSuite.test/pure.test.js +9 -0
- package/dist/common/src/lib/BaseSuite.test/test.js +232 -0
- package/dist/common/src/lib/BaseSuite.test/web.test.js +9 -0
- package/dist/common/src/lib/abstractBase.js +1 -90
- package/dist/common/src/lib/abstractBase.test/MockGiven.js +17 -0
- package/dist/common/src/lib/abstractBase.test/MockThen.js +13 -0
- package/dist/common/src/lib/abstractBase.test/MockWhen.js +13 -0
- package/dist/common/src/lib/abstractBase.test/implementation.js +42 -0
- package/dist/common/src/lib/abstractBase.test/index.js +17 -0
- package/dist/common/src/lib/abstractBase.test/interface.js +12 -0
- package/dist/common/src/lib/abstractBase.test/specification.js +19 -0
- package/dist/common/src/lib/abstractBase.test/types.js +2 -0
- package/dist/common/src/lib/baseBuilder.test/TestBaseBuilder.js +36 -0
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +97 -0
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.interface.js +17 -0
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.node.js +11 -0
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.pure.js +11 -0
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.specification.js +13 -0
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.types.js +2 -0
- package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.web.js +11 -0
- package/dist/common/src/lib/basebuilder.js +2 -1
- package/dist/common/src/lib/classBuilder.test/TestClassBuilder.js +41 -0
- package/dist/common/src/lib/classBuilder.test/classBuilder.test.implementation.js +182 -0
- package/dist/common/src/lib/classBuilder.test/classBuilder.test.interface.js +17 -0
- package/dist/common/src/lib/classBuilder.test/classBuilder.test.js +11 -0
- package/dist/common/src/lib/classBuilder.test/classBuilder.test.specification.js +41 -0
- package/dist/common/src/lib/classBuilder.test/classBuilder.test.types.js +2 -0
- package/dist/common/src/lib/core.js +4 -13
- package/dist/common/src/lib/core.test/MockCore.js +25 -0
- package/dist/common/src/lib/core.test/core.test.implementation.js +102 -0
- package/dist/common/src/lib/core.test/core.test.interface.js +18 -0
- package/dist/common/src/lib/core.test/core.test.js +17 -0
- package/dist/common/src/lib/core.test/core.test.specification.js +33 -0
- package/dist/common/src/lib/core.test/core.test.types.js +2 -0
- package/dist/common/src/lib/pmProxy.js +9 -166
- package/dist/common/src/lib/pmProxy.test/implementation.js +76 -0
- package/dist/common/src/lib/pmProxy.test/index.js +15 -0
- package/dist/common/src/lib/pmProxy.test/interface.js +37 -0
- package/dist/common/src/lib/pmProxy.test/mockPM.js +34 -0
- package/dist/common/src/lib/pmProxy.test/mockPMBase.js +115 -0
- package/dist/common/src/lib/pmProxy.test/specification.js +39 -0
- package/dist/common/src/lib/pmProxy.test/types.js +2 -0
- package/dist/common/src/run.js +6 -6
- package/dist/common/testeranto.config.js +33 -18
- package/dist/common/tsconfig.common.tsbuildinfo +1 -1
- package/dist/module/src/Node.js +9 -6
- package/dist/module/src/PM/PM_WithEslintAndTsc.js +75 -58
- package/dist/module/src/PM/main.js +131 -79
- package/dist/module/src/PM/node.js +1 -14
- package/dist/module/src/PM/nodeSidecar.js +0 -1
- package/dist/module/src/Pure.js +17 -1
- package/dist/module/src/Pure.test.js +167 -0
- package/dist/module/src/build.js +0 -1
- package/dist/module/src/esbuildConfigs/consoleDetectorPlugin.js +19 -11
- package/dist/module/src/esbuildConfigs/nativeImportDetectorPlugin.js +21 -0
- package/dist/module/src/esbuildConfigs/pure.js +2 -1
- package/dist/module/src/esbuildConfigs/rebuildPlugin.js +1 -4
- package/dist/module/src/lib/BaseSuite.js +85 -0
- package/dist/module/src/lib/BaseSuite.test/node.test.js +4 -0
- package/dist/module/src/lib/BaseSuite.test/pure.test.js +4 -0
- package/dist/module/src/lib/BaseSuite.test/test.js +227 -0
- package/dist/module/src/lib/BaseSuite.test/web.test.js +4 -0
- package/dist/module/src/lib/abstractBase.js +1 -89
- package/dist/module/src/lib/abstractBase.test/MockGiven.js +13 -0
- package/dist/module/src/lib/abstractBase.test/MockThen.js +9 -0
- package/dist/module/src/lib/abstractBase.test/MockWhen.js +9 -0
- package/dist/module/src/lib/abstractBase.test/implementation.js +39 -0
- package/dist/module/src/lib/abstractBase.test/index.js +12 -0
- package/dist/module/src/lib/abstractBase.test/interface.js +9 -0
- package/dist/module/src/lib/abstractBase.test/specification.js +15 -0
- package/dist/module/src/lib/abstractBase.test/types.js +1 -0
- package/dist/module/src/lib/baseBuilder.test/TestBaseBuilder.js +32 -0
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +94 -0
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.interface.js +14 -0
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.node.js +6 -0
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.pure.js +6 -0
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.specification.js +9 -0
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.types.js +1 -0
- package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.web.js +6 -0
- package/dist/module/src/lib/basebuilder.js +2 -1
- package/dist/module/src/lib/classBuilder.test/TestClassBuilder.js +37 -0
- package/dist/module/src/lib/classBuilder.test/classBuilder.test.implementation.js +179 -0
- package/dist/module/src/lib/classBuilder.test/classBuilder.test.interface.js +14 -0
- package/dist/module/src/lib/classBuilder.test/classBuilder.test.js +6 -0
- package/dist/module/src/lib/classBuilder.test/classBuilder.test.specification.js +37 -0
- package/dist/module/src/lib/classBuilder.test/classBuilder.test.types.js +1 -0
- package/dist/module/src/lib/core.js +3 -12
- package/dist/module/src/lib/core.test/MockCore.js +18 -0
- package/dist/module/src/lib/core.test/core.test.implementation.js +99 -0
- package/dist/module/src/lib/core.test/core.test.interface.js +15 -0
- package/dist/module/src/lib/core.test/core.test.js +12 -0
- package/dist/module/src/lib/core.test/core.test.specification.js +29 -0
- package/dist/module/src/lib/core.test/core.test.types.js +1 -0
- package/dist/module/src/lib/pmProxy.js +9 -166
- package/dist/module/src/lib/pmProxy.test/implementation.js +73 -0
- package/dist/module/src/lib/pmProxy.test/index.js +10 -0
- package/dist/module/src/lib/pmProxy.test/interface.js +34 -0
- package/dist/module/src/lib/pmProxy.test/mockPM.js +30 -0
- package/dist/module/src/lib/pmProxy.test/mockPMBase.js +111 -0
- package/dist/module/src/lib/pmProxy.test/specification.js +35 -0
- package/dist/module/src/lib/pmProxy.test/types.js +1 -0
- package/dist/module/src/run.js +6 -6
- package/dist/module/testeranto.config.js +33 -18
- package/dist/module/tsconfig.module.tsbuildinfo +1 -1
- package/dist/prebuild/Project.js +16 -15
- package/dist/prebuild/TestReport.js +14 -12
- package/dist/prebuild/build.mjs +34 -34
- package/dist/prebuild/run.mjs +259 -173
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/src/PM/PM_WithEslintAndTsc.d.ts +2 -1
- package/dist/types/src/PM/main.d.ts +5 -2
- package/dist/types/src/Pure.d.ts +2 -2
- package/dist/types/src/Pure.test.d.ts +36 -0
- package/dist/types/src/Types.d.ts +7 -6
- package/dist/types/src/Web.d.ts +1 -1
- package/dist/types/src/esbuildConfigs/consoleDetectorPlugin.d.ts +1 -1
- package/dist/types/src/esbuildConfigs/nativeImportDetectorPlugin.d.ts +2 -0
- package/dist/types/src/lib/BaseSuite.d.ts +39 -0
- package/dist/types/src/lib/BaseSuite.test/node.test.d.ts +3 -0
- package/dist/types/src/lib/BaseSuite.test/pure.test.d.ts +3 -0
- package/dist/types/src/lib/BaseSuite.test/test.d.ts +42 -0
- package/dist/types/src/lib/BaseSuite.test/web.test.d.ts +3 -0
- package/dist/types/src/lib/abstractBase.d.ts +1 -36
- package/dist/types/src/lib/abstractBase.test/MockGiven.d.ts +7 -0
- package/dist/types/src/lib/abstractBase.test/MockThen.d.ts +6 -0
- package/dist/types/src/lib/abstractBase.test/MockWhen.d.ts +6 -0
- package/dist/types/src/lib/abstractBase.test/implementation.d.ts +3 -0
- package/dist/types/src/lib/abstractBase.test/index.d.ts +3 -0
- package/dist/types/src/lib/abstractBase.test/interface.d.ts +3 -0
- package/dist/types/src/lib/abstractBase.test/specification.d.ts +3 -0
- package/dist/types/src/lib/abstractBase.test/types.d.ts +39 -0
- package/dist/types/src/lib/baseBuilder.test/TestBaseBuilder.d.ts +15 -0
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.implementation.d.ts +3 -0
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.interface.d.ts +3 -0
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.node.d.ts +3 -0
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.pure.d.ts +3 -0
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.specification.d.ts +3 -0
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.types.d.ts +20 -0
- package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.web.d.ts +3 -0
- package/dist/types/src/lib/classBuilder.test/TestClassBuilder.d.ts +21 -0
- package/dist/types/src/lib/classBuilder.test/classBuilder.test.d.ts +3 -0
- package/dist/types/src/lib/classBuilder.test/classBuilder.test.implementation.d.ts +3 -0
- package/dist/types/src/lib/classBuilder.test/classBuilder.test.interface.d.ts +3 -0
- package/dist/types/src/lib/classBuilder.test/classBuilder.test.specification.d.ts +3 -0
- package/dist/types/src/lib/classBuilder.test/classBuilder.test.types.d.ts +56 -0
- package/dist/types/src/lib/core.d.ts +1 -1
- package/dist/types/src/lib/core.test/MockCore.d.ts +10 -0
- package/dist/types/src/lib/core.test/core.test.d.ts +3 -0
- package/dist/types/src/lib/core.test/core.test.implementation.d.ts +3 -0
- package/dist/types/src/lib/core.test/core.test.interface.d.ts +3 -0
- package/dist/types/src/lib/core.test/core.test.specification.d.ts +3 -0
- package/dist/types/src/lib/core.test/core.test.types.d.ts +46 -0
- package/dist/types/src/lib/index.d.ts +2 -1
- package/dist/types/src/lib/pmProxy.d.ts +11 -6
- package/dist/types/src/lib/pmProxy.test/implementation.d.ts +3 -0
- package/dist/types/src/lib/pmProxy.test/index.d.ts +7 -0
- package/dist/types/src/lib/pmProxy.test/interface.d.ts +3 -0
- package/dist/types/src/lib/pmProxy.test/mockPM.d.ts +10 -0
- package/dist/types/src/lib/pmProxy.test/mockPMBase.d.ts +39 -0
- package/dist/types/src/lib/pmProxy.test/specification.d.ts +3 -0
- package/dist/types/src/lib/pmProxy.test/types.d.ts +42 -0
- package/dist/types/src/lib/types.d.ts +2 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/docs.html +35 -33
- package/index.html +23 -30
- package/package.json +3 -2
- package/testeranto/index.html +1 -1
- package/testeranto/reports/allTests/index.html +1 -1
- package/testeranto/reports/allTests/src/Pure.test/pure/index.html +1 -1
- package/testeranto/reports/allTests/src/Pure.test/pure/logs.txt +2 -2
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/logs.txt +2 -2
- package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/core.test/core.test/node/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/index.html +1 -1
- package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/logs.txt +3 -3
- package/testeranto.config.ts +1 -1
- package/tsc.log +36 -38
package/dist/prebuild/run.mjs
CHANGED
|
@@ -15,37 +15,37 @@ import crypto from "node:crypto";
|
|
|
15
15
|
|
|
16
16
|
// src/utils.ts
|
|
17
17
|
import path from "path";
|
|
18
|
-
var tscPather = (entryPoint, platform,
|
|
18
|
+
var tscPather = (entryPoint, platform, projectName2) => {
|
|
19
19
|
return path.join(
|
|
20
20
|
"testeranto",
|
|
21
21
|
"reports",
|
|
22
|
-
|
|
22
|
+
projectName2,
|
|
23
23
|
entryPoint.split(".").slice(0, -1).join("."),
|
|
24
24
|
platform,
|
|
25
25
|
`type_errors.txt`
|
|
26
26
|
);
|
|
27
27
|
};
|
|
28
|
-
var lintPather = (entryPoint, platform,
|
|
28
|
+
var lintPather = (entryPoint, platform, projectName2) => {
|
|
29
29
|
return path.join(
|
|
30
30
|
"testeranto",
|
|
31
31
|
"reports",
|
|
32
|
-
|
|
32
|
+
projectName2,
|
|
33
33
|
entryPoint.split(".").slice(0, -1).join("."),
|
|
34
34
|
platform,
|
|
35
35
|
`lint_errors.json`
|
|
36
36
|
);
|
|
37
37
|
};
|
|
38
|
-
var promptPather = (entryPoint, platform,
|
|
38
|
+
var promptPather = (entryPoint, platform, projectName2) => {
|
|
39
39
|
return path.join(
|
|
40
40
|
"testeranto",
|
|
41
41
|
"reports",
|
|
42
|
-
|
|
42
|
+
projectName2,
|
|
43
43
|
entryPoint.split(".").slice(0, -1).join("."),
|
|
44
44
|
platform,
|
|
45
45
|
`prompt.txt`
|
|
46
46
|
);
|
|
47
47
|
};
|
|
48
|
-
var getRunnables = (tests,
|
|
48
|
+
var getRunnables = (tests, projectName2, payload = {
|
|
49
49
|
nodeEntryPoints: {},
|
|
50
50
|
nodeEntryPointSidecars: {},
|
|
51
51
|
webEntryPoints: {},
|
|
@@ -56,30 +56,30 @@ var getRunnables = (tests, projectName, payload = {
|
|
|
56
56
|
return tests.reduce((pt, cv, cndx, cry) => {
|
|
57
57
|
if (cv[1] === "node") {
|
|
58
58
|
pt.nodeEntryPoints[cv[0]] = path.resolve(
|
|
59
|
-
`./testeranto/bundles/node/${
|
|
59
|
+
`./testeranto/bundles/node/${projectName2}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
|
|
60
60
|
);
|
|
61
61
|
} else if (cv[1] === "web") {
|
|
62
62
|
pt.webEntryPoints[cv[0]] = path.resolve(
|
|
63
|
-
`./testeranto/bundles/web/${
|
|
63
|
+
`./testeranto/bundles/web/${projectName2}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
|
|
64
64
|
);
|
|
65
65
|
} else if (cv[1] === "pure") {
|
|
66
66
|
pt.pureEntryPoints[cv[0]] = path.resolve(
|
|
67
|
-
`./testeranto/bundles/pure/${
|
|
67
|
+
`./testeranto/bundles/pure/${projectName2}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
|
|
68
68
|
);
|
|
69
69
|
}
|
|
70
70
|
cv[3].filter((t) => t[1] === "node").forEach((t) => {
|
|
71
71
|
pt.nodeEntryPointSidecars[`${t[0]}`] = path.resolve(
|
|
72
|
-
`./testeranto/bundles/node/${
|
|
72
|
+
`./testeranto/bundles/node/${projectName2}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
|
|
73
73
|
);
|
|
74
74
|
});
|
|
75
75
|
cv[3].filter((t) => t[1] === "web").forEach((t) => {
|
|
76
76
|
pt.webEntryPointSidecars[`${t[0]}`] = path.resolve(
|
|
77
|
-
`./testeranto/bundles/web/${
|
|
77
|
+
`./testeranto/bundles/web/${projectName2}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
|
|
78
78
|
);
|
|
79
79
|
});
|
|
80
80
|
cv[3].filter((t) => t[1] === "pure").forEach((t) => {
|
|
81
81
|
pt.pureEntryPointSidecars[`${t[0]}`] = path.resolve(
|
|
82
|
-
`./testeranto/bundles/pure/${
|
|
82
|
+
`./testeranto/bundles/pure/${projectName2}/${cv[0].split(".").slice(0, -1).concat("mjs").join(".")}`
|
|
83
83
|
);
|
|
84
84
|
});
|
|
85
85
|
return pt;
|
|
@@ -185,37 +185,37 @@ var PM_Base = class {
|
|
|
185
185
|
return p.mainFrame()._id;
|
|
186
186
|
});
|
|
187
187
|
}
|
|
188
|
-
async screencast(ssOpts,
|
|
188
|
+
async screencast(ssOpts, testName, page) {
|
|
189
189
|
const p = ssOpts.path;
|
|
190
190
|
const dir = path2.dirname(p);
|
|
191
191
|
fs.mkdirSync(dir, {
|
|
192
192
|
recursive: true
|
|
193
193
|
});
|
|
194
|
-
if (!files[
|
|
195
|
-
files[
|
|
194
|
+
if (!files[testName]) {
|
|
195
|
+
files[testName] = /* @__PURE__ */ new Set();
|
|
196
196
|
}
|
|
197
|
-
files[
|
|
197
|
+
files[testName].add(ssOpts.path);
|
|
198
198
|
const sPromise = page.screenshot({
|
|
199
199
|
...ssOpts,
|
|
200
200
|
path: p
|
|
201
201
|
});
|
|
202
|
-
if (!screenshots[
|
|
203
|
-
screenshots[
|
|
202
|
+
if (!screenshots[testName]) {
|
|
203
|
+
screenshots[testName] = [];
|
|
204
204
|
}
|
|
205
|
-
screenshots[
|
|
205
|
+
screenshots[testName].push(sPromise);
|
|
206
206
|
await sPromise;
|
|
207
207
|
return sPromise;
|
|
208
208
|
}
|
|
209
|
-
async customScreenShot(ssOpts,
|
|
209
|
+
async customScreenShot(ssOpts, testName, pageUid) {
|
|
210
210
|
const p = ssOpts.path;
|
|
211
211
|
const dir = path2.dirname(p);
|
|
212
212
|
fs.mkdirSync(dir, {
|
|
213
213
|
recursive: true
|
|
214
214
|
});
|
|
215
|
-
if (!files[
|
|
216
|
-
files[
|
|
215
|
+
if (!files[testName]) {
|
|
216
|
+
files[testName] = /* @__PURE__ */ new Set();
|
|
217
217
|
}
|
|
218
|
-
files[
|
|
218
|
+
files[testName].add(ssOpts.path);
|
|
219
219
|
const page = (await this.browser.pages()).find(
|
|
220
220
|
(p2) => p2.mainFrame()._id === pageUid
|
|
221
221
|
);
|
|
@@ -223,10 +223,10 @@ var PM_Base = class {
|
|
|
223
223
|
...ssOpts,
|
|
224
224
|
path: p
|
|
225
225
|
});
|
|
226
|
-
if (!screenshots[
|
|
227
|
-
screenshots[
|
|
226
|
+
if (!screenshots[testName]) {
|
|
227
|
+
screenshots[testName] = [];
|
|
228
228
|
}
|
|
229
|
-
screenshots[
|
|
229
|
+
screenshots[testName].push(sPromise);
|
|
230
230
|
await sPromise;
|
|
231
231
|
return sPromise;
|
|
232
232
|
}
|
|
@@ -245,20 +245,20 @@ var PM_Base = class {
|
|
|
245
245
|
}
|
|
246
246
|
return false;
|
|
247
247
|
}
|
|
248
|
-
async writeFileSync(filepath, contents,
|
|
248
|
+
async writeFileSync(filepath, contents, testName) {
|
|
249
249
|
return new Promise(async (res) => {
|
|
250
250
|
fs.mkdirSync(path2.dirname(filepath), {
|
|
251
251
|
recursive: true
|
|
252
252
|
});
|
|
253
|
-
if (!files[
|
|
254
|
-
files[
|
|
253
|
+
if (!files[testName]) {
|
|
254
|
+
files[testName] = /* @__PURE__ */ new Set();
|
|
255
255
|
}
|
|
256
|
-
files[
|
|
256
|
+
files[testName].add(filepath);
|
|
257
257
|
await fs.writeFileSync(filepath, contents);
|
|
258
258
|
res(true);
|
|
259
259
|
});
|
|
260
260
|
}
|
|
261
|
-
async createWriteStream(filepath,
|
|
261
|
+
async createWriteStream(filepath, testName) {
|
|
262
262
|
const folder = filepath.split("/").slice(0, -1).join("/");
|
|
263
263
|
return new Promise((res) => {
|
|
264
264
|
if (!fs.existsSync(folder)) {
|
|
@@ -268,10 +268,10 @@ var PM_Base = class {
|
|
|
268
268
|
}
|
|
269
269
|
const f = fs.createWriteStream(filepath);
|
|
270
270
|
fileStreams3.push(f);
|
|
271
|
-
if (!files[
|
|
272
|
-
files[
|
|
271
|
+
if (!files[testName]) {
|
|
272
|
+
files[testName] = /* @__PURE__ */ new Set();
|
|
273
273
|
}
|
|
274
|
-
files[
|
|
274
|
+
files[testName].add(filepath);
|
|
275
275
|
res(fileStreams3.length - 1);
|
|
276
276
|
});
|
|
277
277
|
}
|
|
@@ -400,7 +400,15 @@ var PM_WithEslintAndTsc = class extends PM_Base {
|
|
|
400
400
|
platform
|
|
401
401
|
}) => {
|
|
402
402
|
console.log(ansiC.green(ansiC.inverse(`tsc < ${entrypoint}`)));
|
|
403
|
-
|
|
403
|
+
try {
|
|
404
|
+
this.typeCheckIsRunning(entrypoint);
|
|
405
|
+
} catch (e) {
|
|
406
|
+
console.error("error in tscCheck");
|
|
407
|
+
console.error(e);
|
|
408
|
+
console.error(entrypoint);
|
|
409
|
+
console.error(JSON.stringify(this.summary, null, 2));
|
|
410
|
+
process.exit(-1);
|
|
411
|
+
}
|
|
404
412
|
const program = tsc.createProgramFromConfig({
|
|
405
413
|
basePath: process.cwd(),
|
|
406
414
|
// always required, used for relative paths
|
|
@@ -444,7 +452,15 @@ var PM_WithEslintAndTsc = class extends PM_Base {
|
|
|
444
452
|
};
|
|
445
453
|
this.eslintCheck = async (entrypoint, platform, addableFiles) => {
|
|
446
454
|
console.log(ansiC.green(ansiC.inverse(`eslint < ${entrypoint}`)));
|
|
447
|
-
|
|
455
|
+
try {
|
|
456
|
+
this.lintIsRunning(entrypoint);
|
|
457
|
+
} catch (e) {
|
|
458
|
+
console.error("error in eslintCheck");
|
|
459
|
+
console.error(e);
|
|
460
|
+
console.error(entrypoint);
|
|
461
|
+
console.error(JSON.stringify(this.summary, null, 2));
|
|
462
|
+
process.exit(-1);
|
|
463
|
+
}
|
|
448
464
|
const results = (await eslint.lintFiles(addableFiles)).filter((r) => r.messages.length).filter((r) => {
|
|
449
465
|
return r.messages[0].ruleId !== null;
|
|
450
466
|
}).map((r) => {
|
|
@@ -482,7 +498,7 @@ var PM_WithEslintAndTsc = class extends PM_Base {
|
|
|
482
498
|
this.name,
|
|
483
499
|
entryPoint.split(".").slice(0, -1).join("."),
|
|
484
500
|
platform,
|
|
485
|
-
`
|
|
501
|
+
`logs.txt`
|
|
486
502
|
);
|
|
487
503
|
const lintPath = path3.join(
|
|
488
504
|
"testeranto",
|
|
@@ -529,28 +545,60 @@ ${addableFiles.map((x) => {
|
|
|
529
545
|
this.checkForShutdown();
|
|
530
546
|
};
|
|
531
547
|
this.typeCheckIsRunning = (src) => {
|
|
548
|
+
if (!this.summary[src]) {
|
|
549
|
+
throw `this.summary[${src}] is undefined`;
|
|
550
|
+
}
|
|
532
551
|
this.summary[src].typeErrors = "?";
|
|
533
552
|
};
|
|
534
553
|
this.typeCheckIsNowDone = (src, failures) => {
|
|
554
|
+
if (!this.summary[src]) {
|
|
555
|
+
throw `this.summary[${src}] is undefined`;
|
|
556
|
+
}
|
|
557
|
+
if (failures === 0) {
|
|
558
|
+
console.log(ansiC.green(ansiC.inverse(`tsc > ${src}`)));
|
|
559
|
+
} else {
|
|
560
|
+
console.log(
|
|
561
|
+
ansiC.red(ansiC.inverse(`tsc > ${src} failed ${failures} times`))
|
|
562
|
+
);
|
|
563
|
+
}
|
|
535
564
|
this.summary[src].typeErrors = failures;
|
|
536
565
|
this.writeBigBoard();
|
|
537
566
|
this.checkForShutdown();
|
|
538
567
|
};
|
|
539
568
|
this.lintIsRunning = (src) => {
|
|
569
|
+
if (!this.summary[src]) {
|
|
570
|
+
throw `this.summary[${src}] is undefined`;
|
|
571
|
+
}
|
|
540
572
|
this.summary[src].staticErrors = "?";
|
|
541
573
|
this.writeBigBoard();
|
|
542
574
|
};
|
|
543
575
|
this.lintIsNowDone = (src, failures) => {
|
|
576
|
+
if (!this.summary[src]) {
|
|
577
|
+
throw `this.summary[${src}] is undefined`;
|
|
578
|
+
}
|
|
579
|
+
if (failures === 0) {
|
|
580
|
+
console.log(ansiC.green(ansiC.inverse(`eslint > ${src}`)));
|
|
581
|
+
} else {
|
|
582
|
+
console.log(
|
|
583
|
+
ansiC.red(ansiC.inverse(`eslint > ${src} failed ${failures} times`))
|
|
584
|
+
);
|
|
585
|
+
}
|
|
544
586
|
this.summary[src].staticErrors = failures;
|
|
545
587
|
this.writeBigBoard();
|
|
546
588
|
this.checkForShutdown();
|
|
547
589
|
};
|
|
548
590
|
this.bddTestIsRunning = (src) => {
|
|
549
|
-
this.summary[src]
|
|
591
|
+
if (!this.summary[src]) {
|
|
592
|
+
throw `this.summary[${src}] is undefined`;
|
|
593
|
+
}
|
|
594
|
+
this.summary[src].runTimeErrors = "?";
|
|
550
595
|
this.writeBigBoard();
|
|
551
596
|
};
|
|
552
597
|
this.bddTestIsNowDone = (src, failures) => {
|
|
553
|
-
this.summary[src]
|
|
598
|
+
if (!this.summary[src]) {
|
|
599
|
+
throw `this.summary[${src}] is undefined`;
|
|
600
|
+
}
|
|
601
|
+
this.summary[src].runTimeErrors = failures;
|
|
554
602
|
this.writeBigBoard();
|
|
555
603
|
this.checkForShutdown();
|
|
556
604
|
};
|
|
@@ -560,68 +608,34 @@ ${addableFiles.map((x) => {
|
|
|
560
608
|
JSON.stringify(this.summary, null, 2)
|
|
561
609
|
);
|
|
562
610
|
};
|
|
563
|
-
this.checkForShutdown = () => {
|
|
564
|
-
console.log(ansiC.inverse(`checkForShutdown`));
|
|
565
|
-
this.writeBigBoard();
|
|
566
|
-
if (this.mode === "dev")
|
|
567
|
-
return;
|
|
568
|
-
let inflight = false;
|
|
569
|
-
Object.keys(this.summary).forEach((k) => {
|
|
570
|
-
if (this.summary[k].prompt === "?") {
|
|
571
|
-
console.log(ansiC.blue(ansiC.inverse(`\u{1F555} prompt ${k}`)));
|
|
572
|
-
inflight = true;
|
|
573
|
-
}
|
|
574
|
-
});
|
|
575
|
-
Object.keys(this.summary).forEach((k) => {
|
|
576
|
-
if (this.summary[k].runTimeError === "?") {
|
|
577
|
-
console.log(ansiC.blue(ansiC.inverse(`\u{1F555} runTimeError ${k}`)));
|
|
578
|
-
inflight = true;
|
|
579
|
-
}
|
|
580
|
-
});
|
|
581
|
-
Object.keys(this.summary).forEach((k) => {
|
|
582
|
-
if (this.summary[k].staticErrors === "?") {
|
|
583
|
-
console.log(ansiC.blue(ansiC.inverse(`\u{1F555} staticErrors ${k}`)));
|
|
584
|
-
inflight = true;
|
|
585
|
-
}
|
|
586
|
-
});
|
|
587
|
-
Object.keys(this.summary).forEach((k) => {
|
|
588
|
-
if (this.summary[k].typeErrors === "?") {
|
|
589
|
-
console.log(ansiC.blue(ansiC.inverse(`\u{1F555} typeErrors ${k}`)));
|
|
590
|
-
inflight = true;
|
|
591
|
-
}
|
|
592
|
-
});
|
|
593
|
-
this.writeBigBoard();
|
|
594
|
-
if (!inflight) {
|
|
595
|
-
this.browser.disconnect().then(() => {
|
|
596
|
-
console.log(ansiC.inverse(`${this.name} has been tested. Goodbye.`));
|
|
597
|
-
process.exit();
|
|
598
|
-
});
|
|
599
|
-
}
|
|
600
|
-
};
|
|
601
611
|
this.name = name;
|
|
602
612
|
this.mode = mode2;
|
|
613
|
+
this.summary = {};
|
|
603
614
|
this.configs.tests.forEach(([t, rt, tr, sidecars]) => {
|
|
604
|
-
this.
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
staticErrors: "?",
|
|
608
|
-
prompt: "?",
|
|
609
|
-
failingFeatures: {}
|
|
610
|
-
};
|
|
611
|
-
sidecars.forEach(([t2]) => {
|
|
612
|
-
this.summary[t2] = {
|
|
613
|
-
// runTimeError: "?",
|
|
614
|
-
typeErrors: "?",
|
|
615
|
-
staticErrors: "?"
|
|
616
|
-
// prompt: "?",
|
|
617
|
-
// failingFeatures: {},
|
|
618
|
-
};
|
|
615
|
+
this.ensureSummaryEntry(t);
|
|
616
|
+
sidecars.forEach(([sidecarName]) => {
|
|
617
|
+
this.ensureSummaryEntry(sidecarName, true);
|
|
619
618
|
});
|
|
620
619
|
});
|
|
621
620
|
}
|
|
621
|
+
ensureSummaryEntry(src, isSidecar = false) {
|
|
622
|
+
if (!this.summary[src]) {
|
|
623
|
+
this.summary[src] = {
|
|
624
|
+
typeErrors: void 0,
|
|
625
|
+
staticErrors: void 0,
|
|
626
|
+
runTimeErrors: void 0,
|
|
627
|
+
prompt: void 0,
|
|
628
|
+
failingFeatures: {}
|
|
629
|
+
};
|
|
630
|
+
if (isSidecar) {
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
return this.summary[src];
|
|
634
|
+
}
|
|
622
635
|
};
|
|
623
636
|
|
|
624
637
|
// src/PM/main.ts
|
|
638
|
+
import ansiColors from "ansi-colors";
|
|
625
639
|
var changes = {};
|
|
626
640
|
var fileHashes = {};
|
|
627
641
|
var files2 = {};
|
|
@@ -642,13 +656,15 @@ async function fileHash(filePath, algorithm = "md5") {
|
|
|
642
656
|
});
|
|
643
657
|
});
|
|
644
658
|
}
|
|
645
|
-
var statusMessagePretty = (failures, test) => {
|
|
659
|
+
var statusMessagePretty = (failures, test, runtime) => {
|
|
646
660
|
if (failures === 0) {
|
|
647
661
|
console.log(
|
|
648
|
-
ansiC2.green(ansiC2.inverse(
|
|
662
|
+
ansiC2.green(ansiC2.inverse(`${runtime} > ${test} completed successfully`))
|
|
649
663
|
);
|
|
650
664
|
} else {
|
|
651
|
-
console.log(
|
|
665
|
+
console.log(
|
|
666
|
+
ansiC2.red(ansiC2.inverse(`${runtime} > ${test} failed ${failures} times`))
|
|
667
|
+
);
|
|
652
668
|
}
|
|
653
669
|
};
|
|
654
670
|
async function writeFileAndCreateDir(filePath, data) {
|
|
@@ -689,7 +705,7 @@ async function pollForFile(path5, timeout = 2e3) {
|
|
|
689
705
|
var PM_Main = class extends PM_WithEslintAndTsc {
|
|
690
706
|
constructor(configs, name, mode2) {
|
|
691
707
|
super(configs, name, mode2);
|
|
692
|
-
this.getRunnables = (tests,
|
|
708
|
+
this.getRunnables = (tests, testName, payload = {
|
|
693
709
|
nodeEntryPoints: {},
|
|
694
710
|
nodeEntryPointSidecars: {},
|
|
695
711
|
webEntryPoints: {},
|
|
@@ -697,10 +713,10 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
697
713
|
pureEntryPoints: {},
|
|
698
714
|
pureEntryPointSidecars: {}
|
|
699
715
|
}) => {
|
|
700
|
-
return getRunnables(tests,
|
|
716
|
+
return getRunnables(tests, testName, payload);
|
|
701
717
|
};
|
|
702
718
|
this.launchPure = async (src, dest) => {
|
|
703
|
-
console.log(ansiC2.green(ansiC2.inverse(
|
|
719
|
+
console.log(ansiC2.green(ansiC2.inverse(`pure < ${src}`)));
|
|
704
720
|
this.bddTestIsRunning(src);
|
|
705
721
|
const reportDest = `testeranto/reports/${this.name}/${src.split(".").slice(0, -1).join(".")}/pure`;
|
|
706
722
|
if (!fs3.existsSync(reportDest)) {
|
|
@@ -727,12 +743,12 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
727
743
|
});
|
|
728
744
|
} else if (testConfigResource.ports > 0) {
|
|
729
745
|
const openPorts = Object.entries(this.ports).filter(
|
|
730
|
-
([portnumber,
|
|
746
|
+
([portnumber, status]) => status === ""
|
|
731
747
|
);
|
|
732
748
|
if (openPorts.length >= testConfigResource.ports) {
|
|
733
749
|
for (let i = 0; i < testConfigResource.ports; i++) {
|
|
734
750
|
portsToUse.push(openPorts[i][0]);
|
|
735
|
-
this.ports[openPorts[i][0]] =
|
|
751
|
+
this.ports[openPorts[i][0]] = src;
|
|
736
752
|
}
|
|
737
753
|
argz = JSON.stringify({
|
|
738
754
|
scheduled: true,
|
|
@@ -755,49 +771,45 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
755
771
|
await import(`${builtfile}?cacheBust=${Date.now()}`).then((module) => {
|
|
756
772
|
return module.default.then((defaultModule) => {
|
|
757
773
|
defaultModule.receiveTestResourceConfig(argz).then(async (results) => {
|
|
758
|
-
statusMessagePretty(results.fails, src);
|
|
774
|
+
statusMessagePretty(results.fails, src, "pure");
|
|
759
775
|
this.bddTestIsNowDone(src, results.fails);
|
|
760
776
|
}).catch((e) => {
|
|
761
777
|
console.log(
|
|
762
|
-
ansiC2.red(
|
|
763
|
-
ansiC2.inverse(`launchPure - ${src} errored with: ${e}`)
|
|
764
|
-
)
|
|
778
|
+
ansiC2.red(`launchPure - ${src} errored with: ${e}`)
|
|
765
779
|
);
|
|
766
780
|
this.bddTestIsNowDone(src, -1);
|
|
767
781
|
});
|
|
768
782
|
}).catch((e) => {
|
|
769
783
|
console.log(
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
`${src} errored with: ${e}. Check ${reportDest}/error.txt for more info`
|
|
773
|
-
)
|
|
784
|
+
ansiColors.red(
|
|
785
|
+
`pure ! ${src} failed to execute. No "tests.json" file was generated. Check ${reportDest}/logs.txt for more info`
|
|
774
786
|
)
|
|
775
787
|
);
|
|
776
|
-
this.writeFileSync(`${reportDest}/
|
|
788
|
+
this.writeFileSync(`${reportDest}/logs.txt`, e.stack, src);
|
|
777
789
|
this.bddTestIsNowDone(src, -1);
|
|
778
|
-
statusMessagePretty(-1, src);
|
|
790
|
+
statusMessagePretty(-1, src, "pure");
|
|
779
791
|
});
|
|
780
792
|
});
|
|
781
793
|
} catch (e) {
|
|
782
794
|
console.log(
|
|
783
795
|
ansiC2.red(
|
|
784
796
|
ansiC2.inverse(
|
|
785
|
-
`${src} errored with: ${e}. Check ${reportDest}/
|
|
797
|
+
`${src} 1 errored with: ${e}. Check ${reportDest}/logs.txt for more info`
|
|
786
798
|
)
|
|
787
799
|
)
|
|
788
800
|
);
|
|
789
|
-
this.writeFileSync(`${reportDest}/
|
|
801
|
+
this.writeFileSync(`${reportDest}/logs.txt`, e.stack, src);
|
|
790
802
|
this.bddTestIsNowDone(src, -1);
|
|
791
|
-
statusMessagePretty(-1, src);
|
|
803
|
+
statusMessagePretty(-1, src, "pure");
|
|
792
804
|
}
|
|
793
805
|
for (let i = 0; i <= portsToUse.length; i++) {
|
|
794
806
|
if (portsToUse[i]) {
|
|
795
|
-
this.ports[portsToUse[i]] =
|
|
807
|
+
this.ports[portsToUse[i]] = "";
|
|
796
808
|
}
|
|
797
809
|
}
|
|
798
810
|
};
|
|
799
811
|
this.launchNode = async (src, dest) => {
|
|
800
|
-
console.log(ansiC2.green(ansiC2.inverse(
|
|
812
|
+
console.log(ansiC2.green(ansiC2.inverse(`node < ${src}`)));
|
|
801
813
|
this.bddTestIsRunning(src);
|
|
802
814
|
const reportDest = `testeranto/reports/${this.name}/${src.split(".").slice(0, -1).join(".")}/node`;
|
|
803
815
|
if (!fs3.existsSync(reportDest)) {
|
|
@@ -816,7 +828,6 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
816
828
|
const testConfigResource = testConfig[2];
|
|
817
829
|
const portsToUse = [];
|
|
818
830
|
if (testConfigResource.ports === 0) {
|
|
819
|
-
console.error("portsToUse?!", []);
|
|
820
831
|
const t = {
|
|
821
832
|
name: src,
|
|
822
833
|
// ports: portsToUse.map((v) => Number(v)),
|
|
@@ -827,14 +838,13 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
827
838
|
testResources = JSON.stringify(t);
|
|
828
839
|
} else if (testConfigResource.ports > 0) {
|
|
829
840
|
const openPorts = Object.entries(this.ports).filter(
|
|
830
|
-
([portnumber, portopen]) => portopen
|
|
841
|
+
([portnumber, portopen]) => portopen === ""
|
|
831
842
|
);
|
|
832
843
|
if (openPorts.length >= testConfigResource.ports) {
|
|
833
844
|
for (let i = 0; i < testConfigResource.ports; i++) {
|
|
834
845
|
portsToUse.push(openPorts[i][0]);
|
|
835
|
-
this.ports[openPorts[i][0]] =
|
|
846
|
+
this.ports[openPorts[i][0]] = src;
|
|
836
847
|
}
|
|
837
|
-
console.error("portsToUse", portsToUse);
|
|
838
848
|
testResources = JSON.stringify({
|
|
839
849
|
scheduled: true,
|
|
840
850
|
name: src,
|
|
@@ -843,7 +853,11 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
843
853
|
browserWSEndpoint: this.browser.wsEndpoint()
|
|
844
854
|
});
|
|
845
855
|
} else {
|
|
846
|
-
console.log(
|
|
856
|
+
console.log(
|
|
857
|
+
ansiC2.red(
|
|
858
|
+
`node: cannot run ${src} because there are no open ports ATM. This job will be enqueued and run again run a port is available`
|
|
859
|
+
)
|
|
860
|
+
);
|
|
847
861
|
this.queue.push(src);
|
|
848
862
|
return;
|
|
849
863
|
}
|
|
@@ -855,8 +869,8 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
855
869
|
let haltReturns = false;
|
|
856
870
|
const ipcfile = "/tmp/tpipe_" + Math.random();
|
|
857
871
|
const child = spawn(
|
|
858
|
-
"node",
|
|
859
872
|
// "node --inspect-brk ",
|
|
873
|
+
"node",
|
|
860
874
|
[builtfile, testResources, ipcfile],
|
|
861
875
|
{
|
|
862
876
|
stdio: ["pipe", "pipe", "pipe", "ipc"]
|
|
@@ -899,8 +913,8 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
899
913
|
}
|
|
900
914
|
});
|
|
901
915
|
});
|
|
902
|
-
const oStream = fs3.createWriteStream(`${reportDest}/
|
|
903
|
-
const errFile = `${reportDest}/
|
|
916
|
+
const oStream = fs3.createWriteStream(`${reportDest}/logs.txt`);
|
|
917
|
+
const errFile = `${reportDest}/logs.txt`;
|
|
904
918
|
if (fs3.existsSync(errFile)) {
|
|
905
919
|
fs3.rmSync(errFile);
|
|
906
920
|
}
|
|
@@ -911,18 +925,25 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
911
925
|
child.stdout?.on("data", (data) => {
|
|
912
926
|
oStream.write(`stdout > ${data}`);
|
|
913
927
|
});
|
|
928
|
+
child.on("error", (err) => {
|
|
929
|
+
});
|
|
914
930
|
child.on("close", (code) => {
|
|
915
931
|
oStream.close();
|
|
916
932
|
server.close();
|
|
917
|
-
if (code ===
|
|
933
|
+
if (code === 255) {
|
|
934
|
+
console.log(
|
|
935
|
+
ansiColors.red(
|
|
936
|
+
`node ! ${src} failed to execute. No "tests.json" file was generated. Check ${reportDest}/logs.txt for more info`
|
|
937
|
+
)
|
|
938
|
+
);
|
|
918
939
|
this.bddTestIsNowDone(src, -1);
|
|
919
|
-
statusMessagePretty(-1, src);
|
|
940
|
+
statusMessagePretty(-1, src, "node");
|
|
920
941
|
} else if (code === 0) {
|
|
921
942
|
this.bddTestIsNowDone(src, 0);
|
|
922
|
-
statusMessagePretty(0, src);
|
|
943
|
+
statusMessagePretty(0, src, "node");
|
|
923
944
|
} else {
|
|
924
945
|
this.bddTestIsNowDone(src, code);
|
|
925
|
-
statusMessagePretty(code, src);
|
|
946
|
+
statusMessagePretty(code, src, "node");
|
|
926
947
|
}
|
|
927
948
|
haltReturns = true;
|
|
928
949
|
});
|
|
@@ -930,7 +951,7 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
930
951
|
haltReturns = true;
|
|
931
952
|
for (let i = 0; i <= portsToUse.length; i++) {
|
|
932
953
|
if (portsToUse[i]) {
|
|
933
|
-
this.ports[portsToUse[i]] =
|
|
954
|
+
this.ports[portsToUse[i]] = "";
|
|
934
955
|
}
|
|
935
956
|
}
|
|
936
957
|
});
|
|
@@ -940,13 +961,13 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
940
961
|
console.log(
|
|
941
962
|
ansiC2.red(
|
|
942
963
|
ansiC2.inverse(
|
|
943
|
-
`${src} errored with: ${e.name}. Check ${errFile}for more info`
|
|
964
|
+
`${src} errored with: ${e.name}. Check ${errFile} for more info`
|
|
944
965
|
)
|
|
945
966
|
)
|
|
946
967
|
);
|
|
947
|
-
this.writeFileSync(`${reportDest}/
|
|
968
|
+
this.writeFileSync(`${reportDest}/logs.txt`, e.toString(), src);
|
|
948
969
|
this.bddTestIsNowDone(src, -1);
|
|
949
|
-
statusMessagePretty(-1, src);
|
|
970
|
+
statusMessagePretty(-1, src, "node");
|
|
950
971
|
});
|
|
951
972
|
});
|
|
952
973
|
};
|
|
@@ -957,7 +978,7 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
957
978
|
console.log(ansiC2.green(ansiC2.inverse(`launchWebSideCar ${src}`)));
|
|
958
979
|
const fileStreams2 = [];
|
|
959
980
|
const doneFileStream2 = [];
|
|
960
|
-
const oStream = fs3.createWriteStream(`${destFolder}/
|
|
981
|
+
const oStream = fs3.createWriteStream(`${destFolder}/logs.txt`);
|
|
961
982
|
return new Promise((res, rej) => {
|
|
962
983
|
this.browser.newPage().then(async (page) => {
|
|
963
984
|
this.mapping().forEach(async ([command, func]) => {
|
|
@@ -1018,7 +1039,7 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
1018
1039
|
}
|
|
1019
1040
|
})`;
|
|
1020
1041
|
await page.evaluate(evaluation).then(async ({ fails, failed, features }) => {
|
|
1021
|
-
statusMessagePretty(fails, src);
|
|
1042
|
+
statusMessagePretty(fails, src, "web");
|
|
1022
1043
|
this.bddTestIsNowDone(src, fails);
|
|
1023
1044
|
}).catch((e) => {
|
|
1024
1045
|
console.log(
|
|
@@ -1055,14 +1076,13 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
1055
1076
|
if (testReq.ports === 0) {
|
|
1056
1077
|
} else if (testReq.ports > 0) {
|
|
1057
1078
|
const openPorts = Object.entries(this.ports).filter(
|
|
1058
|
-
([portnumber, portopen]) => portopen
|
|
1079
|
+
([portnumber, portopen]) => portopen === ""
|
|
1059
1080
|
);
|
|
1060
1081
|
if (openPorts.length >= testReq.ports) {
|
|
1061
1082
|
for (let i = 0; i < testReq.ports; i++) {
|
|
1062
1083
|
portsToUse.push(openPorts[i][0]);
|
|
1063
|
-
this.ports[openPorts[i][0]] =
|
|
1084
|
+
this.ports[openPorts[i][0]] = src;
|
|
1064
1085
|
}
|
|
1065
|
-
console.log("nodeSideCar portsToUse", portsToUse);
|
|
1066
1086
|
argz.ports = portsToUse;
|
|
1067
1087
|
const builtfile = destFolder + ".mjs";
|
|
1068
1088
|
let haltReturns = false;
|
|
@@ -1100,13 +1120,13 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
1100
1120
|
});
|
|
1101
1121
|
});
|
|
1102
1122
|
});
|
|
1103
|
-
const oStream = fs3.createWriteStream(`${reportDest}/
|
|
1123
|
+
const oStream = fs3.createWriteStream(`${reportDest}/logs.txt`);
|
|
1104
1124
|
const child = spawn("node", [builtfile, JSON.stringify(argz)], {
|
|
1105
1125
|
stdio: ["pipe", "pipe", "pipe", "ipc"]
|
|
1106
1126
|
// silent: true
|
|
1107
1127
|
});
|
|
1108
1128
|
const p = "/tmp/tpipe" + Math.random();
|
|
1109
|
-
const errFile = `${reportDest}/
|
|
1129
|
+
const errFile = `${reportDest}/logs.txt`;
|
|
1110
1130
|
server.listen(p, () => {
|
|
1111
1131
|
child.stderr?.on("data", (data) => {
|
|
1112
1132
|
oStream.write(`stderr > ${data}`);
|
|
@@ -1123,7 +1143,7 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
1123
1143
|
haltReturns = true;
|
|
1124
1144
|
for (let i = 0; i <= portsToUse.length; i++) {
|
|
1125
1145
|
if (portsToUse[i]) {
|
|
1126
|
-
this.ports[portsToUse[i]] =
|
|
1146
|
+
this.ports[portsToUse[i]] = "";
|
|
1127
1147
|
}
|
|
1128
1148
|
}
|
|
1129
1149
|
});
|
|
@@ -1139,7 +1159,7 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
1139
1159
|
)
|
|
1140
1160
|
)
|
|
1141
1161
|
);
|
|
1142
|
-
this.writeFileSync(`${reportDest}/
|
|
1162
|
+
this.writeFileSync(`${reportDest}/logs.txt`, e.toString(), src);
|
|
1143
1163
|
});
|
|
1144
1164
|
});
|
|
1145
1165
|
child.send({ path: p });
|
|
@@ -1147,7 +1167,11 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
1147
1167
|
this.nodeSidecars[r] = child;
|
|
1148
1168
|
return [r, argz];
|
|
1149
1169
|
} else {
|
|
1150
|
-
console.log(
|
|
1170
|
+
console.log(
|
|
1171
|
+
ansiC2.red(
|
|
1172
|
+
`cannot ${src} because there are no open ports. the job will be unqueued`
|
|
1173
|
+
)
|
|
1174
|
+
);
|
|
1151
1175
|
this.queue.push(sidecar[0]);
|
|
1152
1176
|
return [Math.random(), argz];
|
|
1153
1177
|
}
|
|
@@ -1182,12 +1206,12 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
1182
1206
|
};
|
|
1183
1207
|
} else if (testConfigResource.ports > 0) {
|
|
1184
1208
|
const openPorts = Object.entries(this.ports).filter(
|
|
1185
|
-
([portnumber, portopen]) => portopen
|
|
1209
|
+
([portnumber, portopen]) => portopen === ""
|
|
1186
1210
|
);
|
|
1187
1211
|
if (openPorts.length >= testConfigResource.ports) {
|
|
1188
1212
|
for (let i = 0; i < testConfigResource.ports; i++) {
|
|
1189
1213
|
portsToUse.push(openPorts[i][0]);
|
|
1190
|
-
this.ports[openPorts[i][0]] =
|
|
1214
|
+
this.ports[openPorts[i][0]] = src;
|
|
1191
1215
|
}
|
|
1192
1216
|
argz = {
|
|
1193
1217
|
// scheduled: true,
|
|
@@ -1212,7 +1236,7 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
1212
1236
|
return [r, argz];
|
|
1213
1237
|
};
|
|
1214
1238
|
this.launchWeb = async (src, dest) => {
|
|
1215
|
-
console.log(ansiC2.green(ansiC2.inverse(
|
|
1239
|
+
console.log(ansiC2.green(ansiC2.inverse(`web < ${src}`)));
|
|
1216
1240
|
this.bddTestIsRunning(src);
|
|
1217
1241
|
const reportDest = `testeranto/reports/${this.name}/${src.split(".").slice(0, -1).join(".")}/web`;
|
|
1218
1242
|
if (!fs3.existsSync(reportDest)) {
|
|
@@ -1236,7 +1260,8 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
1236
1260
|
console.log("fail", e)
|
|
1237
1261
|
}
|
|
1238
1262
|
})`;
|
|
1239
|
-
const
|
|
1263
|
+
const ofile = `${reportDest}/logs.txt`;
|
|
1264
|
+
const oStream = fs3.createWriteStream(ofile);
|
|
1240
1265
|
this.browser.newPage().then((page) => {
|
|
1241
1266
|
this.mapping().forEach(async ([command, func]) => {
|
|
1242
1267
|
if (command === "page") {
|
|
@@ -1265,22 +1290,25 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
1265
1290
|
});
|
|
1266
1291
|
};
|
|
1267
1292
|
page.on("pageerror", (err) => {
|
|
1268
|
-
console.
|
|
1293
|
+
console.log(
|
|
1294
|
+
ansiColors.red(
|
|
1295
|
+
`web ! ${src} failed to execute. No "tests.json" file was generated. Check ${reportDest}/logs.txt for more info`
|
|
1296
|
+
)
|
|
1297
|
+
);
|
|
1269
1298
|
oStream.write(err.name);
|
|
1270
1299
|
oStream.write("\n");
|
|
1271
1300
|
if (err.cause) {
|
|
1272
|
-
console.debug(`Error from ${src} cause: [${err.cause}] `);
|
|
1273
1301
|
oStream.write(err.cause);
|
|
1274
1302
|
oStream.write("\n");
|
|
1275
1303
|
}
|
|
1276
1304
|
if (err.stack) {
|
|
1277
|
-
console.debug(`Error from stack ${src}: [${err.stack}] `);
|
|
1278
1305
|
oStream.write(err.stack);
|
|
1279
1306
|
oStream.write("\n");
|
|
1280
1307
|
}
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1308
|
+
if (err.message) {
|
|
1309
|
+
oStream.write(err.message);
|
|
1310
|
+
oStream.write("\n");
|
|
1311
|
+
}
|
|
1284
1312
|
this.bddTestIsNowDone(src, -1);
|
|
1285
1313
|
close();
|
|
1286
1314
|
});
|
|
@@ -1295,15 +1323,12 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
1295
1323
|
await page.goto(`file://${`${destFolder}.html`}`, {});
|
|
1296
1324
|
this.webSidecars[Math.random()] = page.mainFrame()._id;
|
|
1297
1325
|
await page.evaluate(evaluation).then(async ({ fails, failed, features }) => {
|
|
1298
|
-
statusMessagePretty(fails, src);
|
|
1326
|
+
statusMessagePretty(fails, src, "web");
|
|
1299
1327
|
this.bddTestIsNowDone(src, fails);
|
|
1328
|
+
close();
|
|
1300
1329
|
}).catch((e) => {
|
|
1301
|
-
console.log(
|
|
1302
|
-
ansiC2.red(ansiC2.inverse(`launchweb - ${src} errored with: ${e}`))
|
|
1303
|
-
);
|
|
1304
|
-
}).finally(() => {
|
|
1305
1330
|
this.bddTestIsNowDone(src, -1);
|
|
1306
|
-
|
|
1331
|
+
}).finally(() => {
|
|
1307
1332
|
});
|
|
1308
1333
|
return page;
|
|
1309
1334
|
});
|
|
@@ -1358,13 +1383,62 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
1358
1383
|
});
|
|
1359
1384
|
this.writeBigBoard();
|
|
1360
1385
|
};
|
|
1386
|
+
this.checkForShutdown = () => {
|
|
1387
|
+
this.checkQueue();
|
|
1388
|
+
console.log(
|
|
1389
|
+
ansiC2.inverse(
|
|
1390
|
+
`The following jobs are awaiting resources: ${JSON.stringify(
|
|
1391
|
+
this.queue
|
|
1392
|
+
)}`
|
|
1393
|
+
)
|
|
1394
|
+
);
|
|
1395
|
+
console.log(
|
|
1396
|
+
ansiC2.inverse(`The status of ports: ${JSON.stringify(this.ports)}`)
|
|
1397
|
+
);
|
|
1398
|
+
this.writeBigBoard();
|
|
1399
|
+
if (this.mode === "dev")
|
|
1400
|
+
return;
|
|
1401
|
+
let inflight = false;
|
|
1402
|
+
Object.keys(this.summary).forEach((k) => {
|
|
1403
|
+
if (this.summary[k].prompt === "?") {
|
|
1404
|
+
console.log(ansiC2.blue(ansiC2.inverse(`\u{1F555} prompt ${k}`)));
|
|
1405
|
+
inflight = true;
|
|
1406
|
+
}
|
|
1407
|
+
});
|
|
1408
|
+
Object.keys(this.summary).forEach((k) => {
|
|
1409
|
+
if (this.summary[k].runTimeErrors === "?") {
|
|
1410
|
+
console.log(ansiC2.blue(ansiC2.inverse(`\u{1F555} runTimeError ${k}`)));
|
|
1411
|
+
inflight = true;
|
|
1412
|
+
}
|
|
1413
|
+
});
|
|
1414
|
+
Object.keys(this.summary).forEach((k) => {
|
|
1415
|
+
if (this.summary[k].staticErrors === "?") {
|
|
1416
|
+
console.log(ansiC2.blue(ansiC2.inverse(`\u{1F555} staticErrors ${k}`)));
|
|
1417
|
+
inflight = true;
|
|
1418
|
+
}
|
|
1419
|
+
});
|
|
1420
|
+
Object.keys(this.summary).forEach((k) => {
|
|
1421
|
+
if (this.summary[k].typeErrors === "?") {
|
|
1422
|
+
console.log(ansiC2.blue(ansiC2.inverse(`\u{1F555} typeErrors ${k}`)));
|
|
1423
|
+
inflight = true;
|
|
1424
|
+
}
|
|
1425
|
+
});
|
|
1426
|
+
this.writeBigBoard();
|
|
1427
|
+
if (!inflight) {
|
|
1428
|
+
this.browser.disconnect().then(() => {
|
|
1429
|
+
console.log(ansiC2.inverse(`${this.name} has been tested. Goodbye.`));
|
|
1430
|
+
process.exit();
|
|
1431
|
+
});
|
|
1432
|
+
}
|
|
1433
|
+
};
|
|
1434
|
+
this.launchers = {};
|
|
1361
1435
|
this.ports = {};
|
|
1362
1436
|
this.queue = [];
|
|
1363
1437
|
this.nodeSidecars = {};
|
|
1364
1438
|
this.webSidecars = {};
|
|
1365
1439
|
this.pureSidecars = {};
|
|
1366
1440
|
this.configs.ports.forEach((element) => {
|
|
1367
|
-
this.ports[element] =
|
|
1441
|
+
this.ports[element] = "";
|
|
1368
1442
|
});
|
|
1369
1443
|
}
|
|
1370
1444
|
async stopSideCar(uid) {
|
|
@@ -1524,17 +1598,18 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
1524
1598
|
const metafile = `./testeranto/bundles/${runtime}/${this.name}/metafile.json`;
|
|
1525
1599
|
await pollForFile(metafile);
|
|
1526
1600
|
Object.entries(eps).forEach(
|
|
1527
|
-
async ([
|
|
1528
|
-
launcher(
|
|
1601
|
+
async ([inputFile, outputFile]) => {
|
|
1602
|
+
this.launchers[inputFile] = () => launcher(inputFile, outputFile);
|
|
1603
|
+
this.launchers[inputFile]();
|
|
1529
1604
|
try {
|
|
1530
1605
|
watch(outputFile, async (e, filename) => {
|
|
1531
1606
|
const hash = await fileHash(outputFile);
|
|
1532
|
-
if (fileHashes[
|
|
1533
|
-
fileHashes[
|
|
1607
|
+
if (fileHashes[inputFile] !== hash) {
|
|
1608
|
+
fileHashes[inputFile] = hash;
|
|
1534
1609
|
console.log(
|
|
1535
1610
|
ansiC2.yellow(ansiC2.inverse(`< ${e} ${filename}`))
|
|
1536
1611
|
);
|
|
1537
|
-
|
|
1612
|
+
this.launchers[inputFile]();
|
|
1538
1613
|
}
|
|
1539
1614
|
});
|
|
1540
1615
|
} catch (e) {
|
|
@@ -1600,42 +1675,53 @@ var PM_Main = class extends PM_WithEslintAndTsc {
|
|
|
1600
1675
|
this.tscCheck({
|
|
1601
1676
|
platform,
|
|
1602
1677
|
addableFiles,
|
|
1603
|
-
entrypoint
|
|
1678
|
+
entrypoint
|
|
1604
1679
|
});
|
|
1605
|
-
this.eslintCheck(
|
|
1606
|
-
this.makePrompt(
|
|
1680
|
+
this.eslintCheck(entrypoint, platform, addableFiles);
|
|
1681
|
+
this.makePrompt(entrypoint, addableFiles, platform);
|
|
1607
1682
|
}
|
|
1608
1683
|
}
|
|
1609
1684
|
});
|
|
1610
1685
|
}
|
|
1686
|
+
checkQueue() {
|
|
1687
|
+
const x = this.queue.pop();
|
|
1688
|
+
if (!x) {
|
|
1689
|
+
ansiC2.inverse(`The following queue is empty`);
|
|
1690
|
+
return;
|
|
1691
|
+
}
|
|
1692
|
+
const test = this.configs.tests.find((t) => t[0] === x);
|
|
1693
|
+
if (!test)
|
|
1694
|
+
throw `test is undefined ${x}`;
|
|
1695
|
+
this.launchers[test[0]]();
|
|
1696
|
+
}
|
|
1611
1697
|
};
|
|
1612
1698
|
|
|
1613
1699
|
// src/run.ts
|
|
1614
1700
|
readline.emitKeypressEvents(process.stdin);
|
|
1615
1701
|
if (process.stdin.isTTY)
|
|
1616
1702
|
process.stdin.setRawMode(true);
|
|
1617
|
-
console.log(ansiC3.inverse("Press '
|
|
1703
|
+
console.log(ansiC3.inverse("Press 'q' to initiate a graceful shutdown."));
|
|
1704
|
+
console.log(ansiC3.inverse("Press 'x' to quit forcefully."));
|
|
1618
1705
|
process.stdin.on("keypress", (str, key) => {
|
|
1619
1706
|
if (key.name === "x") {
|
|
1620
1707
|
console.log(ansiC3.inverse("Shutting down forcefully..."));
|
|
1621
1708
|
process.exit(-1);
|
|
1622
1709
|
}
|
|
1623
1710
|
});
|
|
1624
|
-
var
|
|
1711
|
+
var projectName = process.argv[2];
|
|
1625
1712
|
var mode = process.argv[3];
|
|
1626
1713
|
if (mode !== "once" && mode !== "dev") {
|
|
1627
1714
|
console.error("the 2nd argument should be 'dev' or 'once' ");
|
|
1628
1715
|
process.exit(-1);
|
|
1629
1716
|
}
|
|
1630
|
-
console.log("testeranto is running", testName, mode);
|
|
1631
1717
|
import(process.cwd() + "/testeranto.config.ts").then(async (module) => {
|
|
1632
1718
|
const bigConfig = module.default;
|
|
1633
|
-
const rawConfig = bigConfig.projects[
|
|
1719
|
+
const rawConfig = bigConfig.projects[projectName];
|
|
1634
1720
|
const config = {
|
|
1635
1721
|
...rawConfig,
|
|
1636
|
-
buildDir: process.cwd() + `/testeranto/${
|
|
1722
|
+
buildDir: process.cwd() + `/testeranto/${projectName}.json`
|
|
1637
1723
|
};
|
|
1638
|
-
const pm = new PM_Main(config,
|
|
1724
|
+
const pm = new PM_Main(config, projectName, mode);
|
|
1639
1725
|
pm.start();
|
|
1640
1726
|
process.stdin.on("keypress", (str, key) => {
|
|
1641
1727
|
if (key.name === "q") {
|