testeranto 0.146.2 → 0.146.5

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 (215) hide show
  1. package/dist/common/src/Node.js +9 -6
  2. package/dist/common/src/PM/PM_WithEslintAndTsc.js +75 -58
  3. package/dist/common/src/PM/main.js +131 -79
  4. package/dist/common/src/PM/node.js +1 -14
  5. package/dist/common/src/PM/nodeSidecar.js +0 -1
  6. package/dist/common/src/Pure.js +17 -1
  7. package/dist/common/src/Pure.test.js +172 -0
  8. package/dist/common/src/build.js +0 -1
  9. package/dist/common/src/esbuildConfigs/consoleDetectorPlugin.js +22 -11
  10. package/dist/common/src/esbuildConfigs/nativeImportDetectorPlugin.js +24 -0
  11. package/dist/common/src/esbuildConfigs/pure.js +2 -1
  12. package/dist/common/src/esbuildConfigs/rebuildPlugin.js +1 -4
  13. package/dist/common/src/lib/BaseSuite.js +89 -0
  14. package/dist/common/src/lib/BaseSuite.test/node.test.js +9 -0
  15. package/dist/common/src/lib/BaseSuite.test/pure.test.js +9 -0
  16. package/dist/common/src/lib/BaseSuite.test/test.js +232 -0
  17. package/dist/common/src/lib/BaseSuite.test/web.test.js +9 -0
  18. package/dist/common/src/lib/abstractBase.js +1 -90
  19. package/dist/common/src/lib/abstractBase.test/MockGiven.js +17 -0
  20. package/dist/common/src/lib/abstractBase.test/MockThen.js +13 -0
  21. package/dist/common/src/lib/abstractBase.test/MockWhen.js +13 -0
  22. package/dist/common/src/lib/abstractBase.test/implementation.js +42 -0
  23. package/dist/common/src/lib/abstractBase.test/index.js +17 -0
  24. package/dist/common/src/lib/abstractBase.test/interface.js +12 -0
  25. package/dist/common/src/lib/abstractBase.test/specification.js +19 -0
  26. package/dist/common/src/lib/abstractBase.test/types.js +2 -0
  27. package/dist/common/src/lib/baseBuilder.test/TestBaseBuilder.js +36 -0
  28. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +97 -0
  29. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.interface.js +17 -0
  30. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.node.js +11 -0
  31. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.pure.js +11 -0
  32. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.specification.js +13 -0
  33. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.types.js +2 -0
  34. package/dist/common/src/lib/baseBuilder.test/baseBuilder.test.web.js +11 -0
  35. package/dist/common/src/lib/basebuilder.js +2 -20
  36. package/dist/common/src/lib/classBuilder.test/TestClassBuilder.js +41 -0
  37. package/dist/common/src/lib/classBuilder.test/classBuilder.test.implementation.js +182 -0
  38. package/dist/common/src/lib/classBuilder.test/classBuilder.test.interface.js +17 -0
  39. package/dist/common/src/lib/classBuilder.test/classBuilder.test.js +11 -0
  40. package/dist/common/src/lib/classBuilder.test/classBuilder.test.specification.js +41 -0
  41. package/dist/common/src/lib/classBuilder.test/classBuilder.test.types.js +2 -0
  42. package/dist/common/src/lib/core.js +4 -13
  43. package/dist/common/src/lib/core.test/MockCore.js +25 -0
  44. package/dist/common/src/lib/core.test/core.test.implementation.js +102 -0
  45. package/dist/common/src/lib/core.test/core.test.interface.js +18 -0
  46. package/dist/common/src/lib/core.test/core.test.js +17 -0
  47. package/dist/common/src/lib/core.test/core.test.specification.js +33 -0
  48. package/dist/common/src/lib/core.test/core.test.types.js +2 -0
  49. package/dist/common/src/lib/pmProxy.js +9 -166
  50. package/dist/common/src/lib/pmProxy.test/implementation.js +76 -0
  51. package/dist/common/src/lib/pmProxy.test/index.js +15 -0
  52. package/dist/common/src/lib/pmProxy.test/interface.js +37 -0
  53. package/dist/common/src/lib/pmProxy.test/mockPM.js +34 -0
  54. package/dist/common/src/lib/pmProxy.test/mockPMBase.js +115 -0
  55. package/dist/common/src/lib/pmProxy.test/specification.js +39 -0
  56. package/dist/common/src/lib/pmProxy.test/types.js +2 -0
  57. package/dist/common/src/run.js +6 -6
  58. package/dist/common/testeranto.config.js +33 -18
  59. package/dist/common/tsconfig.common.tsbuildinfo +1 -1
  60. package/dist/module/src/Node.js +9 -6
  61. package/dist/module/src/PM/PM_WithEslintAndTsc.js +75 -58
  62. package/dist/module/src/PM/main.js +131 -79
  63. package/dist/module/src/PM/node.js +1 -14
  64. package/dist/module/src/PM/nodeSidecar.js +0 -1
  65. package/dist/module/src/Pure.js +17 -1
  66. package/dist/module/src/Pure.test.js +167 -0
  67. package/dist/module/src/build.js +0 -1
  68. package/dist/module/src/esbuildConfigs/consoleDetectorPlugin.js +19 -11
  69. package/dist/module/src/esbuildConfigs/nativeImportDetectorPlugin.js +21 -0
  70. package/dist/module/src/esbuildConfigs/pure.js +2 -1
  71. package/dist/module/src/esbuildConfigs/rebuildPlugin.js +1 -4
  72. package/dist/module/src/lib/BaseSuite.js +85 -0
  73. package/dist/module/src/lib/BaseSuite.test/node.test.js +4 -0
  74. package/dist/module/src/lib/BaseSuite.test/pure.test.js +4 -0
  75. package/dist/module/src/lib/BaseSuite.test/test.js +227 -0
  76. package/dist/module/src/lib/BaseSuite.test/web.test.js +4 -0
  77. package/dist/module/src/lib/abstractBase.js +1 -89
  78. package/dist/module/src/lib/abstractBase.test/MockGiven.js +13 -0
  79. package/dist/module/src/lib/abstractBase.test/MockThen.js +9 -0
  80. package/dist/module/src/lib/abstractBase.test/MockWhen.js +9 -0
  81. package/dist/module/src/lib/abstractBase.test/implementation.js +39 -0
  82. package/dist/module/src/lib/abstractBase.test/index.js +12 -0
  83. package/dist/module/src/lib/abstractBase.test/interface.js +9 -0
  84. package/dist/module/src/lib/abstractBase.test/specification.js +15 -0
  85. package/dist/module/src/lib/abstractBase.test/types.js +1 -0
  86. package/dist/module/src/lib/baseBuilder.test/TestBaseBuilder.js +32 -0
  87. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.implementation.js +94 -0
  88. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.interface.js +14 -0
  89. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.node.js +6 -0
  90. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.pure.js +6 -0
  91. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.specification.js +9 -0
  92. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.types.js +1 -0
  93. package/dist/module/src/lib/baseBuilder.test/baseBuilder.test.web.js +6 -0
  94. package/dist/module/src/lib/basebuilder.js +2 -20
  95. package/dist/module/src/lib/classBuilder.test/TestClassBuilder.js +37 -0
  96. package/dist/module/src/lib/classBuilder.test/classBuilder.test.implementation.js +179 -0
  97. package/dist/module/src/lib/classBuilder.test/classBuilder.test.interface.js +14 -0
  98. package/dist/module/src/lib/classBuilder.test/classBuilder.test.js +6 -0
  99. package/dist/module/src/lib/classBuilder.test/classBuilder.test.specification.js +37 -0
  100. package/dist/module/src/lib/classBuilder.test/classBuilder.test.types.js +1 -0
  101. package/dist/module/src/lib/core.js +3 -12
  102. package/dist/module/src/lib/core.test/MockCore.js +18 -0
  103. package/dist/module/src/lib/core.test/core.test.implementation.js +99 -0
  104. package/dist/module/src/lib/core.test/core.test.interface.js +15 -0
  105. package/dist/module/src/lib/core.test/core.test.js +12 -0
  106. package/dist/module/src/lib/core.test/core.test.specification.js +29 -0
  107. package/dist/module/src/lib/core.test/core.test.types.js +1 -0
  108. package/dist/module/src/lib/pmProxy.js +9 -166
  109. package/dist/module/src/lib/pmProxy.test/implementation.js +73 -0
  110. package/dist/module/src/lib/pmProxy.test/index.js +10 -0
  111. package/dist/module/src/lib/pmProxy.test/interface.js +34 -0
  112. package/dist/module/src/lib/pmProxy.test/mockPM.js +30 -0
  113. package/dist/module/src/lib/pmProxy.test/mockPMBase.js +111 -0
  114. package/dist/module/src/lib/pmProxy.test/specification.js +35 -0
  115. package/dist/module/src/lib/pmProxy.test/types.js +1 -0
  116. package/dist/module/src/run.js +6 -6
  117. package/dist/module/testeranto.config.js +33 -18
  118. package/dist/module/tsconfig.module.tsbuildinfo +1 -1
  119. package/dist/prebuild/Project.js +16 -15
  120. package/dist/prebuild/TestReport.js +14 -12
  121. package/dist/prebuild/build.mjs +34 -34
  122. package/dist/prebuild/run.mjs +259 -173
  123. package/dist/tsconfig.tsbuildinfo +1 -1
  124. package/dist/types/src/PM/PM_WithEslintAndTsc.d.ts +2 -1
  125. package/dist/types/src/PM/main.d.ts +5 -2
  126. package/dist/types/src/Pure.d.ts +2 -2
  127. package/dist/types/src/Pure.test.d.ts +36 -0
  128. package/dist/types/src/Types.d.ts +7 -6
  129. package/dist/types/src/Web.d.ts +1 -1
  130. package/dist/types/src/esbuildConfigs/consoleDetectorPlugin.d.ts +1 -1
  131. package/dist/types/src/esbuildConfigs/nativeImportDetectorPlugin.d.ts +2 -0
  132. package/dist/types/src/lib/BaseSuite.d.ts +39 -0
  133. package/dist/types/src/lib/BaseSuite.test/node.test.d.ts +3 -0
  134. package/dist/types/src/lib/BaseSuite.test/pure.test.d.ts +3 -0
  135. package/dist/types/src/lib/BaseSuite.test/test.d.ts +42 -0
  136. package/dist/types/src/lib/BaseSuite.test/web.test.d.ts +3 -0
  137. package/dist/types/src/lib/abstractBase.d.ts +1 -36
  138. package/dist/types/src/lib/abstractBase.test/MockGiven.d.ts +7 -0
  139. package/dist/types/src/lib/abstractBase.test/MockThen.d.ts +6 -0
  140. package/dist/types/src/lib/abstractBase.test/MockWhen.d.ts +6 -0
  141. package/dist/types/src/lib/abstractBase.test/implementation.d.ts +3 -0
  142. package/dist/types/src/lib/abstractBase.test/index.d.ts +3 -0
  143. package/dist/types/src/lib/abstractBase.test/interface.d.ts +3 -0
  144. package/dist/types/src/lib/abstractBase.test/specification.d.ts +3 -0
  145. package/dist/types/src/lib/abstractBase.test/types.d.ts +39 -0
  146. package/dist/types/src/lib/baseBuilder.test/TestBaseBuilder.d.ts +15 -0
  147. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.implementation.d.ts +3 -0
  148. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.interface.d.ts +3 -0
  149. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.node.d.ts +3 -0
  150. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.pure.d.ts +3 -0
  151. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.specification.d.ts +3 -0
  152. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.types.d.ts +20 -0
  153. package/dist/types/src/lib/baseBuilder.test/baseBuilder.test.web.d.ts +3 -0
  154. package/dist/types/src/lib/classBuilder.test/TestClassBuilder.d.ts +21 -0
  155. package/dist/types/src/lib/classBuilder.test/classBuilder.test.d.ts +3 -0
  156. package/dist/types/src/lib/classBuilder.test/classBuilder.test.implementation.d.ts +3 -0
  157. package/dist/types/src/lib/classBuilder.test/classBuilder.test.interface.d.ts +3 -0
  158. package/dist/types/src/lib/classBuilder.test/classBuilder.test.specification.d.ts +3 -0
  159. package/dist/types/src/lib/classBuilder.test/classBuilder.test.types.d.ts +56 -0
  160. package/dist/types/src/lib/core.d.ts +1 -1
  161. package/dist/types/src/lib/core.test/MockCore.d.ts +10 -0
  162. package/dist/types/src/lib/core.test/core.test.d.ts +3 -0
  163. package/dist/types/src/lib/core.test/core.test.implementation.d.ts +3 -0
  164. package/dist/types/src/lib/core.test/core.test.interface.d.ts +3 -0
  165. package/dist/types/src/lib/core.test/core.test.specification.d.ts +3 -0
  166. package/dist/types/src/lib/core.test/core.test.types.d.ts +46 -0
  167. package/dist/types/src/lib/index.d.ts +2 -1
  168. package/dist/types/src/lib/pmProxy.d.ts +11 -6
  169. package/dist/types/src/lib/pmProxy.test/implementation.d.ts +3 -0
  170. package/dist/types/src/lib/pmProxy.test/index.d.ts +7 -0
  171. package/dist/types/src/lib/pmProxy.test/interface.d.ts +3 -0
  172. package/dist/types/src/lib/pmProxy.test/mockPM.d.ts +10 -0
  173. package/dist/types/src/lib/pmProxy.test/mockPMBase.d.ts +39 -0
  174. package/dist/types/src/lib/pmProxy.test/specification.d.ts +3 -0
  175. package/dist/types/src/lib/pmProxy.test/types.d.ts +42 -0
  176. package/dist/types/src/lib/types.d.ts +2 -1
  177. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  178. package/docs.html +35 -33
  179. package/index.html +23 -30
  180. package/package.json +8 -18
  181. package/src/lib/basebuilder.ts +0 -24
  182. package/testeranto/Project.css +1 -26
  183. package/testeranto/Project.js +3337 -385
  184. package/testeranto/TestReport.css +1 -26
  185. package/testeranto/TestReport.js +43 -16
  186. package/testeranto/bundles/node/allTests/metafile.json +1 -1
  187. package/testeranto/bundles/pure/allTests/metafile.json +1 -1
  188. package/testeranto/bundles/web/allTests/metafile.json +1 -1
  189. package/testeranto/index.html +1 -1
  190. package/testeranto/reports/allTests/index.html +1 -1
  191. package/testeranto/reports/allTests/src/Pure.test/pure/index.html +1 -1
  192. package/testeranto/reports/allTests/src/Pure.test/pure/lint_errors.json +137 -1539
  193. package/testeranto/reports/allTests/src/Pure.test/pure/logs.txt +2 -2
  194. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/index.html +1 -1
  195. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/lint_errors.json +58 -620
  196. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/index.html +1 -1
  197. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/lint_errors.json +58 -620
  198. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/logs.txt +2 -2
  199. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/index.html +1 -1
  200. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/lint_errors.json +58 -620
  201. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/index.html +1 -1
  202. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/lint_errors.json +104 -966
  203. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/index.html +1 -1
  204. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/lint_errors.json +104 -966
  205. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/index.html +1 -1
  206. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/lint_errors.json +104 -966
  207. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/index.html +1 -1
  208. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/lint_errors.json +63 -791
  209. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/index.html +1 -1
  210. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/lint_errors.json +39 -416
  211. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/index.html +1 -1
  212. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/lint_errors.json +156 -1724
  213. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/logs.txt +3 -3
  214. package/testeranto.config.ts +1 -1
  215. package/tsc.log +36 -38
@@ -12,6 +12,7 @@ import crypto from "node:crypto";
12
12
  import { getRunnables } from "../utils";
13
13
  import { Queue } from "../utils/queue.js";
14
14
  import { PM_WithEslintAndTsc } from "./PM_WithEslintAndTsc.js";
15
+ import ansiColors from "ansi-colors";
15
16
  const changes = {};
16
17
  const fileHashes = {};
17
18
  const files = {};
@@ -32,12 +33,12 @@ async function fileHash(filePath, algorithm = "md5") {
32
33
  });
33
34
  });
34
35
  }
35
- const statusMessagePretty = (failures, test) => {
36
+ const statusMessagePretty = (failures, test, runtime) => {
36
37
  if (failures === 0) {
37
- console.log(ansiC.green(ansiC.inverse(`> ${test} completed successfully?!?`)));
38
+ console.log(ansiC.green(ansiC.inverse(`${runtime} > ${test} completed successfully`)));
38
39
  }
39
40
  else {
40
- console.log(ansiC.red(ansiC.inverse(`> ${test} failed ${failures} times`)));
41
+ console.log(ansiC.red(ansiC.inverse(`${runtime} > ${test} failed ${failures} times`)));
41
42
  }
42
43
  };
43
44
  async function writeFileAndCreateDir(filePath, data) {
@@ -71,8 +72,6 @@ async function pollForFile(path, timeout = 2000) {
71
72
  const intervalObj = setInterval(function () {
72
73
  const file = path;
73
74
  const fileExists = fs.existsSync(file);
74
- // console.log("Checking for: ", file);
75
- // console.log("Exists: ", fileExists);
76
75
  if (fileExists) {
77
76
  clearInterval(intervalObj);
78
77
  }
@@ -92,7 +91,7 @@ export class PM_Main extends PM_WithEslintAndTsc {
92
91
  return getRunnables(tests, testName, payload);
93
92
  };
94
93
  this.launchPure = async (src, dest) => {
95
- console.log(ansiC.green(ansiC.inverse(`! pure, ${src}`)));
94
+ console.log(ansiC.green(ansiC.inverse(`pure < ${src}`)));
96
95
  this.bddTestIsRunning(src);
97
96
  const reportDest = `testeranto/reports/${this.name}/${src
98
97
  .split(".")
@@ -122,11 +121,11 @@ export class PM_Main extends PM_WithEslintAndTsc {
122
121
  });
123
122
  }
124
123
  else if (testConfigResource.ports > 0) {
125
- const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
124
+ const openPorts = Object.entries(this.ports).filter(([portnumber, status]) => status === "");
126
125
  if (openPorts.length >= testConfigResource.ports) {
127
126
  for (let i = 0; i < testConfigResource.ports; i++) {
128
127
  portsToUse.push(openPorts[i][0]);
129
- this.ports[openPorts[i][0]] = false; // port is now closed
128
+ this.ports[openPorts[i][0]] = src; // port is now claimed
130
129
  }
131
130
  argz = JSON.stringify({
132
131
  scheduled: true,
@@ -180,11 +179,11 @@ export class PM_Main extends PM_WithEslintAndTsc {
180
179
  .then(async (results) => {
181
180
  // this.receiveFeatures(results.features, destFolder, src, "pure");
182
181
  // this.receiveFeaturesV2(reportDest, src, "pure");
183
- statusMessagePretty(results.fails, src);
182
+ statusMessagePretty(results.fails, src, "pure");
184
183
  this.bddTestIsNowDone(src, results.fails);
185
184
  })
186
185
  .catch((e) => {
187
- console.log(ansiC.red(ansiC.inverse(`launchPure - ${src} errored with: ${e}`)));
186
+ console.log(ansiC.red(`launchPure - ${src} errored with: ${e}`));
188
187
  this.bddTestIsNowDone(src, -1);
189
188
  });
190
189
  // .finally(() => {
@@ -192,28 +191,28 @@ export class PM_Main extends PM_WithEslintAndTsc {
192
191
  // });
193
192
  })
194
193
  .catch((e) => {
195
- console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}. Check ${reportDest}/error.txt for more info`)));
196
- this.writeFileSync(`${reportDest}/error.txt`, e.stack, src);
194
+ console.log(ansiColors.red(`pure ! ${src} failed to execute. No "tests.json" file was generated. Check ${reportDest}/logs.txt for more info`));
195
+ this.writeFileSync(`${reportDest}/logs.txt`, e.stack, src);
197
196
  this.bddTestIsNowDone(src, -1);
198
- statusMessagePretty(-1, src);
197
+ statusMessagePretty(-1, src, "pure");
199
198
  // console.error(e);
200
199
  });
201
200
  });
202
201
  }
203
202
  catch (e) {
204
- console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e}. Check ${reportDest}/error.txt for more info`)));
205
- this.writeFileSync(`${reportDest}/error.txt`, e.stack, src);
203
+ console.log(ansiC.red(ansiC.inverse(`${src} 1 errored with: ${e}. Check ${reportDest}/logs.txt for more info`)));
204
+ this.writeFileSync(`${reportDest}/logs.txt`, e.stack, src);
206
205
  this.bddTestIsNowDone(src, -1);
207
- statusMessagePretty(-1, src);
206
+ statusMessagePretty(-1, src, "pure");
208
207
  }
209
208
  for (let i = 0; i <= portsToUse.length; i++) {
210
209
  if (portsToUse[i]) {
211
- this.ports[portsToUse[i]] = true; //port is open again
210
+ this.ports[portsToUse[i]] = ""; //port is open again
212
211
  }
213
212
  }
214
213
  };
215
214
  this.launchNode = async (src, dest) => {
216
- console.log(ansiC.green(ansiC.inverse(`! node, ${src}`)));
215
+ console.log(ansiC.green(ansiC.inverse(`node < ${src}`)));
217
216
  this.bddTestIsRunning(src);
218
217
  const reportDest = `testeranto/reports/${this.name}/${src
219
218
  .split(".")
@@ -234,7 +233,6 @@ export class PM_Main extends PM_WithEslintAndTsc {
234
233
  const testConfigResource = testConfig[2];
235
234
  const portsToUse = [];
236
235
  if (testConfigResource.ports === 0) {
237
- console.error("portsToUse?!", []);
238
236
  const t = {
239
237
  name: src,
240
238
  // ports: portsToUse.map((v) => Number(v)),
@@ -245,13 +243,12 @@ export class PM_Main extends PM_WithEslintAndTsc {
245
243
  testResources = JSON.stringify(t);
246
244
  }
247
245
  else if (testConfigResource.ports > 0) {
248
- const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
246
+ const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen === "");
249
247
  if (openPorts.length >= testConfigResource.ports) {
250
248
  for (let i = 0; i < testConfigResource.ports; i++) {
251
249
  portsToUse.push(openPorts[i][0]);
252
- this.ports[openPorts[i][0]] = false; // port is now closed
250
+ this.ports[openPorts[i][0]] = src; // port is now claimed
253
251
  }
254
- console.error("portsToUse", portsToUse);
255
252
  testResources = JSON.stringify({
256
253
  scheduled: true,
257
254
  name: src,
@@ -261,7 +258,7 @@ export class PM_Main extends PM_WithEslintAndTsc {
261
258
  });
262
259
  }
263
260
  else {
264
- console.log("Not enough ports! Enqueuing test job...");
261
+ console.log(ansiC.red(`node: cannot run ${src} because there are no open ports ATM. This job will be enqueued and run again run a port is available`));
265
262
  this.queue.push(src);
266
263
  return;
267
264
  }
@@ -273,9 +270,9 @@ export class PM_Main extends PM_WithEslintAndTsc {
273
270
  const builtfile = dest;
274
271
  let haltReturns = false;
275
272
  const ipcfile = "/tmp/tpipe_" + Math.random();
276
- const child = spawn("node",
273
+ const child = spawn(
277
274
  // "node --inspect-brk ",
278
- [builtfile, testResources, ipcfile], {
275
+ "node", [builtfile, testResources, ipcfile], {
279
276
  stdio: ["pipe", "pipe", "pipe", "ipc"],
280
277
  });
281
278
  let buffer = new Buffer("");
@@ -316,8 +313,8 @@ export class PM_Main extends PM_WithEslintAndTsc {
316
313
  }
317
314
  });
318
315
  });
319
- const oStream = fs.createWriteStream(`${reportDest}/console_log.txt`);
320
- const errFile = `${reportDest}/error.txt`;
316
+ const oStream = fs.createWriteStream(`${reportDest}/logs.txt`);
317
+ const errFile = `${reportDest}/logs.txt`;
321
318
  if (fs.existsSync(errFile)) {
322
319
  fs.rmSync(errFile);
323
320
  }
@@ -329,21 +326,22 @@ export class PM_Main extends PM_WithEslintAndTsc {
329
326
  (_b = child.stdout) === null || _b === void 0 ? void 0 : _b.on("data", (data) => {
330
327
  oStream.write(`stdout > ${data}`);
331
328
  });
329
+ child.on("error", (err) => { });
332
330
  child.on("close", (code) => {
333
331
  oStream.close();
334
332
  server.close();
335
- // this.receiveFeaturesV2(reportDest, src, "node");
336
- if (code === null) {
333
+ if (code === 255) {
334
+ console.log(ansiColors.red(`node ! ${src} failed to execute. No "tests.json" file was generated. Check ${reportDest}/logs.txt for more info`));
337
335
  this.bddTestIsNowDone(src, -1);
338
- statusMessagePretty(-1, src);
336
+ statusMessagePretty(-1, src, "node");
339
337
  }
340
338
  else if (code === 0) {
341
339
  this.bddTestIsNowDone(src, 0);
342
- statusMessagePretty(0, src);
340
+ statusMessagePretty(0, src, "node");
343
341
  }
344
342
  else {
345
343
  this.bddTestIsNowDone(src, code);
346
- statusMessagePretty(code, src);
344
+ statusMessagePretty(code, src, "node");
347
345
  }
348
346
  haltReturns = true;
349
347
  });
@@ -351,24 +349,21 @@ export class PM_Main extends PM_WithEslintAndTsc {
351
349
  haltReturns = true;
352
350
  for (let i = 0; i <= portsToUse.length; i++) {
353
351
  if (portsToUse[i]) {
354
- this.ports[portsToUse[i]] = true; //port is open again
352
+ this.ports[portsToUse[i]] = ""; //port is open again
355
353
  }
356
354
  }
357
355
  });
358
356
  child.on("error", (e) => {
359
357
  console.log("error");
360
358
  haltReturns = true;
361
- console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e.name}. Check ${errFile}for more info`)));
362
- this.writeFileSync(`${reportDest}/error.txt`, e.toString(), src);
359
+ console.log(ansiC.red(ansiC.inverse(`${src} errored with: ${e.name}. Check ${errFile} for more info`)));
360
+ this.writeFileSync(`${reportDest}/logs.txt`, e.toString(), src);
363
361
  this.bddTestIsNowDone(src, -1);
364
- statusMessagePretty(-1, src);
362
+ statusMessagePretty(-1, src, "node");
365
363
  });
366
364
  });
367
365
  };
368
- this.launchWebSideCar = async (
369
- // src: string,
370
- // dest: string,
371
- testConfig) => {
366
+ this.launchWebSideCar = async (testConfig) => {
372
367
  const src = testConfig[0];
373
368
  const dest = src.split(".").slice(0, -1).join(".");
374
369
  // const d = dest + ".mjs";
@@ -376,7 +371,7 @@ export class PM_Main extends PM_WithEslintAndTsc {
376
371
  console.log(ansiC.green(ansiC.inverse(`launchWebSideCar ${src}`)));
377
372
  const fileStreams2 = [];
378
373
  const doneFileStream2 = [];
379
- const oStream = fs.createWriteStream(`${destFolder}/console_log.txt`);
374
+ const oStream = fs.createWriteStream(`${destFolder}/logs.txt`);
380
375
  return new Promise((res, rej) => {
381
376
  this.browser
382
377
  .newPage()
@@ -448,7 +443,7 @@ export class PM_Main extends PM_WithEslintAndTsc {
448
443
  .then(async ({ fails, failed, features }) => {
449
444
  // this.receiveFeatures(features, destFolder, src, "web");
450
445
  // this.receiveFeaturesV2(reportDest, src, "web");
451
- statusMessagePretty(fails, src);
446
+ statusMessagePretty(fails, src, "web");
452
447
  this.bddTestIsNowDone(src, fails);
453
448
  })
454
449
  .catch((e) => {
@@ -495,13 +490,12 @@ export class PM_Main extends PM_WithEslintAndTsc {
495
490
  // };
496
491
  }
497
492
  else if (testReq.ports > 0) {
498
- const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
493
+ const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen === "");
499
494
  if (openPorts.length >= testReq.ports) {
500
495
  for (let i = 0; i < testReq.ports; i++) {
501
496
  portsToUse.push(openPorts[i][0]);
502
- this.ports[openPorts[i][0]] = false; // port is now closed
497
+ this.ports[openPorts[i][0]] = src; // port is now closed
503
498
  }
504
- console.log("nodeSideCar portsToUse", portsToUse);
505
499
  argz.ports = portsToUse;
506
500
  const builtfile = destFolder + ".mjs";
507
501
  let haltReturns = false;
@@ -539,13 +533,13 @@ export class PM_Main extends PM_WithEslintAndTsc {
539
533
  });
540
534
  });
541
535
  });
542
- const oStream = fs.createWriteStream(`${reportDest}/console_log.txt`);
536
+ const oStream = fs.createWriteStream(`${reportDest}/logs.txt`);
543
537
  const child = spawn("node", [builtfile, JSON.stringify(argz)], {
544
538
  stdio: ["pipe", "pipe", "pipe", "ipc"],
545
539
  // silent: true
546
540
  });
547
541
  const p = "/tmp/tpipe" + Math.random();
548
- const errFile = `${reportDest}/error.txt`;
542
+ const errFile = `${reportDest}/logs.txt`;
549
543
  server.listen(p, () => {
550
544
  var _a, _b;
551
545
  (_a = child.stderr) === null || _a === void 0 ? void 0 : _a.on("data", (data) => {
@@ -563,7 +557,7 @@ export class PM_Main extends PM_WithEslintAndTsc {
563
557
  haltReturns = true;
564
558
  for (let i = 0; i <= portsToUse.length; i++) {
565
559
  if (portsToUse[i]) {
566
- this.ports[portsToUse[i]] = true; //port is open again
560
+ this.ports[portsToUse[i]] = ""; //port is open again
567
561
  }
568
562
  }
569
563
  });
@@ -573,7 +567,7 @@ export class PM_Main extends PM_WithEslintAndTsc {
573
567
  }
574
568
  haltReturns = true;
575
569
  console.log(ansiC.red(ansiC.inverse(`launchNodeSideCar - ${src} errored with: ${e.name}. Check ${errFile}for more info`)));
576
- this.writeFileSync(`${reportDest}/error.txt`, e.toString(), src);
570
+ this.writeFileSync(`${reportDest}/logs.txt`, e.toString(), src);
577
571
  // this.bddTestIsNowDone(src, -1);
578
572
  // statusMessagePretty(-1, src);
579
573
  });
@@ -584,7 +578,7 @@ export class PM_Main extends PM_WithEslintAndTsc {
584
578
  return [r, argz];
585
579
  }
586
580
  else {
587
- console.log("Not enough open ports!", openPorts, testReq.ports);
581
+ console.log(ansiC.red(`cannot ${src} because there are no open ports. the job will be unqueued`));
588
582
  this.queue.push(sidecar[0]);
589
583
  return [Math.random(), argz];
590
584
  }
@@ -620,12 +614,11 @@ export class PM_Main extends PM_WithEslintAndTsc {
620
614
  };
621
615
  }
622
616
  else if (testConfigResource.ports > 0) {
623
- const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen);
624
- // console.log("openPorts", openPorts);
617
+ const openPorts = Object.entries(this.ports).filter(([portnumber, portopen]) => portopen === "");
625
618
  if (openPorts.length >= testConfigResource.ports) {
626
619
  for (let i = 0; i < testConfigResource.ports; i++) {
627
620
  portsToUse.push(openPorts[i][0]);
628
- this.ports[openPorts[i][0]] = false; // port is now closed
621
+ this.ports[openPorts[i][0]] = src; // port is now claimed
629
622
  }
630
623
  argz = {
631
624
  // scheduled: true,
@@ -658,7 +651,7 @@ export class PM_Main extends PM_WithEslintAndTsc {
658
651
  // }
659
652
  };
660
653
  this.launchWeb = async (src, dest) => {
661
- console.log(ansiC.green(ansiC.inverse(`! web ${src}`)));
654
+ console.log(ansiC.green(ansiC.inverse(`web < ${src}`)));
662
655
  this.bddTestIsRunning(src);
663
656
  const reportDest = `testeranto/reports/${this.name}/${src
664
657
  .split(".")
@@ -685,7 +678,8 @@ export class PM_Main extends PM_WithEslintAndTsc {
685
678
  console.log("fail", e)
686
679
  }
687
680
  })`;
688
- const oStream = fs.createWriteStream(`${reportDest}/console_log.txt`);
681
+ const ofile = `${reportDest}/logs.txt`;
682
+ const oStream = fs.createWriteStream(ofile);
689
683
  this.browser
690
684
  .newPage()
691
685
  .then((page) => {
@@ -724,22 +718,21 @@ export class PM_Main extends PM_WithEslintAndTsc {
724
718
  });
725
719
  };
726
720
  page.on("pageerror", (err) => {
727
- console.debug(`Error from ${src}: [${err.name}] `);
721
+ console.log(ansiColors.red(`web ! ${src} failed to execute. No "tests.json" file was generated. Check ${reportDest}/logs.txt for more info`));
728
722
  oStream.write(err.name);
729
723
  oStream.write("\n");
730
724
  if (err.cause) {
731
- console.debug(`Error from ${src} cause: [${err.cause}] `);
732
725
  oStream.write(err.cause);
733
726
  oStream.write("\n");
734
727
  }
735
728
  if (err.stack) {
736
- console.debug(`Error from stack ${src}: [${err.stack}] `);
737
729
  oStream.write(err.stack);
738
730
  oStream.write("\n");
739
731
  }
740
- console.debug(`Error from message ${src}: [${err.message}] `);
741
- oStream.write(err.message);
742
- oStream.write("\n");
732
+ if (err.message) {
733
+ oStream.write(err.message);
734
+ oStream.write("\n");
735
+ }
743
736
  this.bddTestIsNowDone(src, -1);
744
737
  close();
745
738
  });
@@ -758,16 +751,23 @@ export class PM_Main extends PM_WithEslintAndTsc {
758
751
  .then(async ({ fails, failed, features }) => {
759
752
  // this.receiveFeatures(features, destFolder, src, "web");
760
753
  // this.receiveFeaturesV2(reportDest, src, "web");
761
- statusMessagePretty(fails, src);
754
+ statusMessagePretty(fails, src, "web");
762
755
  this.bddTestIsNowDone(src, fails);
756
+ close();
763
757
  })
764
758
  .catch((e) => {
765
- console.log(ansiC.red(ansiC.inverse(`launchweb - ${src} errored with: ${e}`)));
759
+ // console.log(ansiC.red(ansiC.inverse(e)));
760
+ // console.log(
761
+ // ansiC.red(
762
+ // ansiC.inverse(
763
+ // `web ! ${src} failed to execute. No "tests.json" file was generated. Check ${reportDest}/logs.txt for more info`
764
+ // )
765
+ // )
766
+ // );
767
+ this.bddTestIsNowDone(src, -1);
766
768
  })
767
769
  .finally(() => {
768
- this.bddTestIsNowDone(src, -1);
769
770
  // process.exit(-1);
770
- close();
771
771
  });
772
772
  return page;
773
773
  });
@@ -775,10 +775,8 @@ export class PM_Main extends PM_WithEslintAndTsc {
775
775
  this.receiveFeaturesV2 = (reportDest, srcTest, platform) => {
776
776
  const featureDestination = path.resolve(process.cwd(), "reports", "features", "strings", srcTest.split(".").slice(0, -1).join(".") + ".features.txt");
777
777
  const testReport = JSON.parse(fs.readFileSync(`${reportDest}/tests.json`).toString());
778
- // console.log("mark2", testReport);
779
778
  testReport.features
780
779
  .reduce(async (mm, featureStringKey) => {
781
- // console.log("mark4", featureStringKey);
782
780
  const accum = await mm;
783
781
  const isUrl = isValidUrl(featureStringKey);
784
782
  if (isUrl) {
@@ -838,13 +836,55 @@ export class PM_Main extends PM_WithEslintAndTsc {
838
836
  // this.summary[srcTest].failingFeatures = f;
839
837
  this.writeBigBoard();
840
838
  };
839
+ this.checkForShutdown = () => {
840
+ // console.log(ansiC.inverse(JSON.stringify(this.summary, null, 2)));
841
+ this.checkQueue();
842
+ console.log(ansiC.inverse(`The following jobs are awaiting resources: ${JSON.stringify(this.queue)}`));
843
+ console.log(ansiC.inverse(`The status of ports: ${JSON.stringify(this.ports)}`));
844
+ this.writeBigBoard();
845
+ if (this.mode === "dev")
846
+ return;
847
+ let inflight = false;
848
+ Object.keys(this.summary).forEach((k) => {
849
+ if (this.summary[k].prompt === "?") {
850
+ console.log(ansiC.blue(ansiC.inverse(`🕕 prompt ${k}`)));
851
+ inflight = true;
852
+ }
853
+ });
854
+ Object.keys(this.summary).forEach((k) => {
855
+ if (this.summary[k].runTimeErrors === "?") {
856
+ console.log(ansiC.blue(ansiC.inverse(`🕕 runTimeError ${k}`)));
857
+ inflight = true;
858
+ }
859
+ });
860
+ Object.keys(this.summary).forEach((k) => {
861
+ if (this.summary[k].staticErrors === "?") {
862
+ console.log(ansiC.blue(ansiC.inverse(`🕕 staticErrors ${k}`)));
863
+ inflight = true;
864
+ }
865
+ });
866
+ Object.keys(this.summary).forEach((k) => {
867
+ if (this.summary[k].typeErrors === "?") {
868
+ console.log(ansiC.blue(ansiC.inverse(`🕕 typeErrors ${k}`)));
869
+ inflight = true;
870
+ }
871
+ });
872
+ this.writeBigBoard();
873
+ if (!inflight) {
874
+ this.browser.disconnect().then(() => {
875
+ console.log(ansiC.inverse(`${this.name} has been tested. Goodbye.`));
876
+ process.exit();
877
+ });
878
+ }
879
+ };
880
+ this.launchers = {};
841
881
  this.ports = {};
842
882
  this.queue = [];
843
883
  this.nodeSidecars = {};
844
884
  this.webSidecars = {};
845
885
  this.pureSidecars = {};
846
886
  this.configs.ports.forEach((element) => {
847
- this.ports[element] = true; // set ports as open
887
+ this.ports[element] = ""; // set ports as open
848
888
  });
849
889
  }
850
890
  async stopSideCar(uid) {
@@ -1004,16 +1044,18 @@ export class PM_Main extends PM_WithEslintAndTsc {
1004
1044
  ].forEach(async ([eps, launcher, runtime, watcher]) => {
1005
1045
  const metafile = `./testeranto/bundles/${runtime}/${this.name}/metafile.json`;
1006
1046
  await pollForFile(metafile);
1007
- Object.entries(eps).forEach(async ([k, outputFile]) => {
1008
- // await pollForFile(outputFile);
1009
- launcher(k, outputFile);
1047
+ Object.entries(eps).forEach(async ([inputFile, outputFile]) => {
1048
+ // await pollForFile(outputFile);\
1049
+ this.launchers[inputFile] = () => launcher(inputFile, outputFile);
1050
+ this.launchers[inputFile]();
1010
1051
  try {
1011
1052
  watch(outputFile, async (e, filename) => {
1012
1053
  const hash = await fileHash(outputFile);
1013
- if (fileHashes[k] !== hash) {
1014
- fileHashes[k] = hash;
1054
+ if (fileHashes[inputFile] !== hash) {
1055
+ fileHashes[inputFile] = hash;
1015
1056
  console.log(ansiC.yellow(ansiC.inverse(`< ${e} ${filename}`)));
1016
- launcher(k, outputFile);
1057
+ // launcher(inputFile, outputFile);
1058
+ this.launchers[inputFile]();
1017
1059
  }
1018
1060
  });
1019
1061
  }
@@ -1053,8 +1095,6 @@ export class PM_Main extends PM_WithEslintAndTsc {
1053
1095
  // `testeranto/externalTests/${externalTestName}/stderr.txt`,
1054
1096
  // stderr
1055
1097
  // );
1056
- // // console.log(`externalTest stdout: ${stdout}`);
1057
- // // console.error(`externalTest stderr: ${stderr}`);
1058
1098
  // });
1059
1099
  }
1060
1100
  async stop() {
@@ -1101,12 +1141,24 @@ export class PM_Main extends PM_WithEslintAndTsc {
1101
1141
  this.tscCheck({
1102
1142
  platform,
1103
1143
  addableFiles,
1104
- entrypoint: "./" + entrypoint,
1144
+ entrypoint: entrypoint,
1105
1145
  });
1106
- this.eslintCheck("./" + entrypoint, platform, addableFiles);
1107
- this.makePrompt("./" + entrypoint, addableFiles, platform);
1146
+ this.eslintCheck(entrypoint, platform, addableFiles);
1147
+ this.makePrompt(entrypoint, addableFiles, platform);
1108
1148
  }
1109
1149
  }
1110
1150
  });
1111
1151
  }
1152
+ checkQueue() {
1153
+ const x = this.queue.pop();
1154
+ if (!x) {
1155
+ ansiC.inverse(`The following queue is empty`);
1156
+ return;
1157
+ }
1158
+ const test = this.configs.tests.find((t) => t[0] === x);
1159
+ if (!test)
1160
+ throw `test is undefined ${x}`;
1161
+ // const [src, runtime, ...xx]: [string, IRunTime, ...any] = test;
1162
+ this.launchers[test[0]]();
1163
+ }
1112
1164
  }
@@ -15,25 +15,13 @@ export class PM_Node extends PM {
15
15
  });
16
16
  }
17
17
  start() {
18
- throw new Error("DEPREFECATED");
19
- // console.log("START");
20
- // return new Promise((res) => {
21
- // process.on("message", (message: { path?: string }) => {
22
- // console.log("MESSAGE");
23
- // if (message.path) {
24
- // this.client = net.createConnection(message.path, () => {
25
- // res();
26
- // });
27
- // }
28
- // });
29
- // });
18
+ throw new Error("DEPRECATED");
30
19
  }
31
20
  stop() {
32
21
  throw new Error("stop not implemented.");
33
22
  }
34
23
  send(command, ...argz) {
35
24
  const key = Math.random().toString();
36
- // console.log("SEND", key, command, ...argz);
37
25
  if (!this.client) {
38
26
  console.error(`Tried to send "${command} (${argz})" but the test has not been started and the IPC client is not established. Exiting as failure!`);
39
27
  process.exit(-1);
@@ -121,7 +109,6 @@ export class PM_Node extends PM {
121
109
  return await this.send("write", ...arguments);
122
110
  }
123
111
  async writeFileSync(filepath, contents) {
124
- // console.log("mark55");
125
112
  return await this.send("writeFileSync", this.testResourceConfiguration.fs + "/" + filepath, contents, this.testResourceConfiguration.name);
126
113
  }
127
114
  async createWriteStream(filepath) {
@@ -14,7 +14,6 @@ export class PM_Node_Sidecar extends PM_sidecar {
14
14
  return new Promise((res) => {
15
15
  process.on("message", async (message) => {
16
16
  if (message === "stop") {
17
- console.log("STOP!", stopper.toString());
18
17
  await stopper();
19
18
  process.exit();
20
19
  }
@@ -10,7 +10,12 @@ export class PureTesteranto extends Testeranto {
10
10
  async receiveTestResourceConfig(partialTestResource) {
11
11
  const t = JSON.parse(partialTestResource);
12
12
  const pm = new PM_Pure(t);
13
- return await this.testJobs[0].receiveTestResourceConfig(pm);
13
+ try {
14
+ return await this.testJobs[0].receiveTestResourceConfig(pm);
15
+ }
16
+ catch (e) {
17
+ return -2;
18
+ }
14
19
  // const { failed, artifacts, logPromise, features, fails } =
15
20
  // await this.testJobs[0].receiveTestResourceConfig(pm);
16
21
  // // pm.customclose();
@@ -19,4 +24,15 @@ export class PureTesteranto extends Testeranto {
19
24
  }
20
25
  export default async (input, testSpecification, testImplementation, testInterface, testResourceRequirement = defaultTestResourceRequirement) => {
21
26
  return new PureTesteranto(input, testSpecification, testImplementation, testResourceRequirement, testInterface);
27
+ // try {
28
+ // return new PureTesteranto<I, O, M>(
29
+ // input,
30
+ // testSpecification,
31
+ // testImplementation,
32
+ // testResourceRequirement,
33
+ // testInterface
34
+ // );
35
+ // } catch (e) {
36
+ // return -1;
37
+ // }
22
38
  };