@neurodevs/node-tdd 0.2.5 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/.vscode/launch.json +52 -57
  2. package/.vscode/settings.json +61 -66
  3. package/.vscode/tasks.json +98 -129
  4. package/README.md +1 -0
  5. package/build/.spruce/settings.json +3 -10
  6. package/build/__tests__/MockFetch.d.ts +18 -0
  7. package/build/__tests__/MockFetch.js +55 -0
  8. package/build/__tests__/MockFetch.js.map +1 -0
  9. package/build/__tests__/{impl → behavioral}/AbstractModuleTest.test.d.ts +2 -3
  10. package/build/__tests__/{impl → behavioral}/AbstractModuleTest.test.js +3 -12
  11. package/build/__tests__/behavioral/AbstractModuleTest.test.js.map +1 -0
  12. package/build/__tests__/behavioral/utilities/AllHooksCalledEvenIfNotDefined.test.d.ts +5 -0
  13. package/build/__tests__/behavioral/utilities/AllHooksCalledEvenIfNotDefined.test.js +34 -0
  14. package/build/__tests__/behavioral/utilities/AllHooksCalledEvenIfNotDefined.test.js.map +1 -0
  15. package/build/__tests__/behavioral/utilities/Assert.test.d.ts +45 -0
  16. package/build/__tests__/behavioral/utilities/Assert.test.js +645 -0
  17. package/build/__tests__/behavioral/utilities/Assert.test.js.map +1 -0
  18. package/build/__tests__/behavioral/utilities/InstanceParentTestCanAccessParentMethods.test.d.ts +4 -0
  19. package/build/__tests__/behavioral/utilities/InstanceParentTestCanAccessParentMethods.test.js +23 -0
  20. package/build/__tests__/behavioral/utilities/InstanceParentTestCanAccessParentMethods.test.js.map +1 -0
  21. package/build/__tests__/behavioral/utilities/MockFetch.test.d.ts +28 -0
  22. package/build/__tests__/behavioral/utilities/MockFetch.test.js +211 -0
  23. package/build/__tests__/behavioral/utilities/MockFetch.test.js.map +1 -0
  24. package/build/__tests__/behavioral/utilities/StackCleaner.test.d.ts +4 -0
  25. package/build/__tests__/behavioral/utilities/StackCleaner.test.js +46 -0
  26. package/build/__tests__/behavioral/utilities/StackCleaner.test.js.map +1 -0
  27. package/build/__tests__/behavioral/utilities/StaticParentTestCanAccessParentMethods.test.d.ts +7 -0
  28. package/build/__tests__/behavioral/utilities/StaticParentTestCanAccessParentMethods.test.js +32 -0
  29. package/build/__tests__/behavioral/utilities/StaticParentTestCanAccessParentMethods.test.js.map +1 -0
  30. package/build/__tests__/behavioral/utilities/StaticTestInheritsAbstractSpruceTestProperly.test.d.ts +4 -0
  31. package/build/__tests__/behavioral/utilities/StaticTestInheritsAbstractSpruceTestProperly.test.js +19 -0
  32. package/build/__tests__/behavioral/utilities/StaticTestInheritsAbstractSpruceTestProperly.test.js.map +1 -0
  33. package/build/__tests__/behavioral/utilities/Stringify.test.d.ts +5 -0
  34. package/build/__tests__/behavioral/utilities/Stringify.test.js +127 -0
  35. package/build/__tests__/behavioral/utilities/Stringify.test.js.map +1 -0
  36. package/build/__tests__/behavioral/utilities/TestDecoratorResolver.test.d.ts +7 -0
  37. package/build/__tests__/behavioral/utilities/TestDecoratorResolver.test.js +38 -0
  38. package/build/__tests__/behavioral/utilities/TestDecoratorResolver.test.js.map +1 -0
  39. package/build/__tests__/behavioral/utilities/TestOnBasic.test.d.ts +12 -0
  40. package/build/__tests__/behavioral/utilities/TestOnBasic.test.js +68 -0
  41. package/build/__tests__/behavioral/utilities/TestOnBasic.test.js.map +1 -0
  42. package/build/__tests__/behavioral/utilities/TestOnInstance.test.d.ts +28 -0
  43. package/build/__tests__/behavioral/utilities/TestOnInstance.test.js +289 -0
  44. package/build/__tests__/behavioral/utilities/TestOnInstance.test.js.map +1 -0
  45. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTest.test.d.ts +9 -0
  46. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTest.test.js +118 -0
  47. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTest.test.js.map +1 -0
  48. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTestWithHooks.test.d.ts +5 -0
  49. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTestWithHooks.test.js +78 -0
  50. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTestWithHooks.test.js.map +1 -0
  51. package/build/__tests__/behavioral/utilities/TestOnInstanceWithParentBeforeAll.test.d.ts +4 -0
  52. package/build/__tests__/behavioral/utilities/TestOnInstanceWithParentBeforeAll.test.js +23 -0
  53. package/build/__tests__/behavioral/utilities/TestOnInstanceWithParentBeforeAll.test.js.map +1 -0
  54. package/build/__tests__/behavioral/utilities/TestOnInstanceWithTwoLevelsOfInheritence.test.d.ts +4 -0
  55. package/build/__tests__/behavioral/utilities/TestOnInstanceWithTwoLevelsOfInheritence.test.js +24 -0
  56. package/build/__tests__/behavioral/utilities/TestOnInstanceWithTwoLevelsOfInheritence.test.js.map +1 -0
  57. package/build/__tests__/behavioral/utilities/TestResolver.test.d.ts +7 -0
  58. package/build/__tests__/behavioral/utilities/TestResolver.test.js +38 -0
  59. package/build/__tests__/behavioral/utilities/TestResolver.test.js.map +1 -0
  60. package/build/__tests__/behavioral/utilities/TestResolverOnStatic.test.d.ts +4 -0
  61. package/build/__tests__/behavioral/utilities/TestResolverOnStatic.test.js +20 -0
  62. package/build/__tests__/behavioral/utilities/TestResolverOnStatic.test.js.map +1 -0
  63. package/build/__tests__/behavioral/workspace/JestJsonParser.test.d.ts +18 -0
  64. package/build/__tests__/behavioral/workspace/JestJsonParser.test.js +267 -0
  65. package/build/__tests__/behavioral/workspace/JestJsonParser.test.js.map +1 -0
  66. package/build/__tests__/behavioral/workspace/TestReporter.test.d.ts +16 -0
  67. package/build/__tests__/behavioral/workspace/TestReporter.test.js +227 -0
  68. package/build/__tests__/behavioral/workspace/TestReporter.test.js.map +1 -0
  69. package/build/__tests__/behavioral/workspace/TestRunner.test.d.ts +15 -0
  70. package/build/__tests__/behavioral/workspace/TestRunner.test.js +99 -0
  71. package/build/__tests__/behavioral/workspace/TestRunner.test.js.map +1 -0
  72. package/build/__tests__/behavioral/workspace/Widgets.test.d.ts +13 -0
  73. package/build/__tests__/behavioral/workspace/Widgets.test.js +99 -0
  74. package/build/__tests__/behavioral/workspace/Widgets.test.js.map +1 -0
  75. package/build/__tests__/mock-terminal-kit.d.ts +79 -0
  76. package/build/__tests__/mock-terminal-kit.js +103 -0
  77. package/build/__tests__/mock-terminal-kit.js.map +1 -0
  78. package/build/__tests__/support/AbstractForInstanceTest.d.ts +4 -0
  79. package/build/__tests__/support/AbstractForInstanceTest.js +9 -0
  80. package/build/__tests__/support/AbstractForInstanceTest.js.map +1 -0
  81. package/build/__tests__/support/AbstractLevelOneTest.d.ts +3 -0
  82. package/build/__tests__/support/AbstractLevelOneTest.js +4 -0
  83. package/build/__tests__/support/AbstractLevelOneTest.js.map +1 -0
  84. package/build/__tests__/support/AbstractLevelTwoTest.d.ts +7 -0
  85. package/build/__tests__/support/AbstractLevelTwoTest.js +14 -0
  86. package/build/__tests__/support/AbstractLevelTwoTest.js.map +1 -0
  87. package/build/__tests__/support/AbstractStaticTest.d.ts +7 -0
  88. package/build/__tests__/support/AbstractStaticTest.js +14 -0
  89. package/build/__tests__/support/AbstractStaticTest.js.map +1 -0
  90. package/build/__tests__/support/AbstractTestOnInstanceTest.d.ts +22 -0
  91. package/build/__tests__/support/AbstractTestOnInstanceTest.js +23 -0
  92. package/build/__tests__/support/AbstractTestOnInstanceTest.js.map +1 -0
  93. package/build/__tests__/support/AbstractTestOnInstanceWithHooks.d.ts +26 -0
  94. package/build/__tests__/support/AbstractTestOnInstanceWithHooks.js +59 -0
  95. package/build/__tests__/support/AbstractTestOnInstanceWithHooks.js.map +1 -0
  96. package/build/__tests__/support/jest.setup.d.ts +1 -0
  97. package/build/__tests__/support/jest.setup.js +4 -0
  98. package/build/__tests__/support/jest.setup.js.map +1 -0
  99. package/build/__tests__/support/onTestFileResult.d.ts +244 -0
  100. package/build/__tests__/support/onTestFileResult.js +980 -0
  101. package/build/__tests__/support/onTestFileResult.js.map +1 -0
  102. package/build/impl/AbstractModuleTest.d.ts +18 -4
  103. package/build/impl/AbstractModuleTest.js +47 -9
  104. package/build/impl/AbstractModuleTest.js.map +1 -1
  105. package/build/index.d.ts +4 -4
  106. package/build/index.js +4 -4
  107. package/build/index.js.map +1 -1
  108. package/build/utilities/AssertionError.d.ts +3 -0
  109. package/build/utilities/AssertionError.js +12 -0
  110. package/build/utilities/AssertionError.js.map +1 -0
  111. package/build/utilities/StackCleaner.d.ts +4 -0
  112. package/build/utilities/StackCleaner.js +10 -0
  113. package/build/utilities/StackCleaner.js.map +1 -0
  114. package/build/utilities/TestDecoratorResolver.d.ts +35 -0
  115. package/build/utilities/TestDecoratorResolver.js +93 -0
  116. package/build/utilities/TestDecoratorResolver.js.map +1 -0
  117. package/build/utilities/assert.d.ts +49 -0
  118. package/build/utilities/assert.js +255 -0
  119. package/build/utilities/assert.js.map +1 -0
  120. package/build/utilities/assert.utility.d.ts +28 -0
  121. package/build/utilities/assert.utility.js +185 -0
  122. package/build/utilities/assert.utility.js.map +1 -0
  123. package/build/utilities/decorators.d.ts +9 -0
  124. package/build/utilities/decorators.js +133 -0
  125. package/build/utilities/decorators.js.map +1 -0
  126. package/build/workspace/CommandService.d.ts +49 -0
  127. package/build/workspace/CommandService.js +179 -0
  128. package/build/workspace/CommandService.js.map +1 -0
  129. package/build/workspace/JestJsonParser.d.ts +15 -0
  130. package/build/workspace/JestJsonParser.js +149 -0
  131. package/build/workspace/JestJsonParser.js.map +1 -0
  132. package/build/workspace/TKButtonWidget.d.ts +13 -0
  133. package/build/workspace/TKButtonWidget.js +37 -0
  134. package/build/workspace/TKButtonWidget.js.map +1 -0
  135. package/build/workspace/TestLogItemGenerator.d.ts +15 -0
  136. package/build/workspace/TestLogItemGenerator.js +142 -0
  137. package/build/workspace/TestLogItemGenerator.js.map +1 -0
  138. package/build/workspace/TestReporter.d.ts +103 -0
  139. package/build/workspace/TestReporter.js +677 -0
  140. package/build/workspace/TestReporter.js.map +1 -0
  141. package/build/workspace/TestRunner.d.ts +24 -0
  142. package/build/workspace/TestRunner.js +95 -0
  143. package/build/workspace/TestRunner.js.map +1 -0
  144. package/build/workspace/TkBaseWidget.d.ts +37 -0
  145. package/build/workspace/TkBaseWidget.js +185 -0
  146. package/build/workspace/TkBaseWidget.js.map +1 -0
  147. package/build/workspace/TkInputWidget.d.ts +16 -0
  148. package/build/workspace/TkInputWidget.js +64 -0
  149. package/build/workspace/TkInputWidget.js.map +1 -0
  150. package/build/workspace/TkLayoutCellWidget.d.ts +18 -0
  151. package/build/workspace/TkLayoutCellWidget.js +32 -0
  152. package/build/workspace/TkLayoutCellWidget.js.map +1 -0
  153. package/build/workspace/TkLayoutWidget.d.ts +34 -0
  154. package/build/workspace/TkLayoutWidget.js +130 -0
  155. package/build/workspace/TkLayoutWidget.js.map +1 -0
  156. package/build/workspace/TkMenuBarWidget.d.ts +13 -0
  157. package/build/workspace/TkMenuBarWidget.js +71 -0
  158. package/build/workspace/TkMenuBarWidget.js.map +1 -0
  159. package/build/workspace/TkPopupWidget.d.ts +16 -0
  160. package/build/workspace/TkPopupWidget.js +36 -0
  161. package/build/workspace/TkPopupWidget.js.map +1 -0
  162. package/build/workspace/TkProgressBarWidget.d.ts +10 -0
  163. package/build/workspace/TkProgressBarWidget.js +39 -0
  164. package/build/workspace/TkProgressBarWidget.js.map +1 -0
  165. package/build/workspace/TkTextWidget.d.ts +20 -0
  166. package/build/workspace/TkTextWidget.js +115 -0
  167. package/build/workspace/TkTextWidget.js.map +1 -0
  168. package/build/workspace/TkWindowWidget.d.ts +22 -0
  169. package/build/workspace/TkWindowWidget.js +88 -0
  170. package/build/workspace/TkWindowWidget.js.map +1 -0
  171. package/build/workspace/WidgetFactory.d.ts +6 -0
  172. package/build/workspace/WidgetFactory.js +21 -0
  173. package/build/workspace/WidgetFactory.js.map +1 -0
  174. package/build/workspace/button.types.d.ts +15 -0
  175. package/build/workspace/button.types.js +6 -0
  176. package/build/workspace/button.types.js.map +1 -0
  177. package/build/workspace/duration.utility.d.ts +4 -0
  178. package/build/workspace/duration.utility.js +26 -0
  179. package/build/workspace/duration.utility.js.map +1 -0
  180. package/build/workspace/factory.types.d.ts +89 -0
  181. package/build/workspace/factory.types.js +37 -0
  182. package/build/workspace/factory.types.js.map +1 -0
  183. package/build/workspace/input.types.d.ts +18 -0
  184. package/build/workspace/input.types.js +7 -0
  185. package/build/workspace/input.types.js.map +1 -0
  186. package/build/workspace/keySelectChoices.d.ts +517 -0
  187. package/build/workspace/keySelectChoices.js +2 -0
  188. package/build/workspace/keySelectChoices.js.map +1 -0
  189. package/build/workspace/layout.types.d.ts +33 -0
  190. package/build/workspace/layout.types.js +2 -0
  191. package/build/workspace/layout.types.js.map +1 -0
  192. package/build/workspace/menuBar.types.d.ts +19 -0
  193. package/build/workspace/menuBar.types.js +6 -0
  194. package/build/workspace/menuBar.types.js.map +1 -0
  195. package/build/workspace/popup.types.d.ts +13 -0
  196. package/build/workspace/popup.types.js +6 -0
  197. package/build/workspace/popup.types.js.map +1 -0
  198. package/build/workspace/progressBar.types.d.ts +10 -0
  199. package/build/workspace/progressBar.types.js +2 -0
  200. package/build/workspace/progressBar.types.js.map +1 -0
  201. package/build/workspace/table.types.d.ts +6 -0
  202. package/build/workspace/table.types.js +2 -0
  203. package/build/workspace/table.types.js.map +1 -0
  204. package/build/workspace/termKit.utility.d.ts +12 -0
  205. package/build/workspace/termKit.utility.js +128 -0
  206. package/build/workspace/termKit.utility.js.map +1 -0
  207. package/build/workspace/test.types.d.ts +24 -0
  208. package/build/workspace/test.types.js +2 -0
  209. package/build/workspace/test.types.js.map +1 -0
  210. package/build/workspace/testRunner.cli.d.ts +1 -0
  211. package/build/workspace/testRunner.cli.js +149 -0
  212. package/build/workspace/testRunner.cli.js.map +1 -0
  213. package/build/workspace/text.types.d.ts +20 -0
  214. package/build/workspace/text.types.js +7 -0
  215. package/build/workspace/text.types.js.map +1 -0
  216. package/build/workspace/widget.utilities.d.ts +5 -0
  217. package/build/workspace/widget.utilities.js +20 -0
  218. package/build/workspace/widget.utilities.js.map +1 -0
  219. package/build/workspace/widgets.types.d.ts +66 -0
  220. package/build/workspace/widgets.types.js +2 -0
  221. package/build/workspace/widgets.types.js.map +1 -0
  222. package/build/workspace/window.types.d.ts +18 -0
  223. package/build/workspace/window.types.js +9 -0
  224. package/build/workspace/window.types.js.map +1 -0
  225. package/eslint.config.js +3 -0
  226. package/package.json +31 -37
  227. package/prettier.config.js +3 -0
  228. package/src/.spruce/settings.json +3 -10
  229. package/src/__tests__/MockFetch.ts +100 -0
  230. package/src/__tests__/behavioral/AbstractModuleTest.test.ts +15 -0
  231. package/src/__tests__/behavioral/utilities/AllHooksCalledEvenIfNotDefined.test.ts +31 -0
  232. package/src/__tests__/behavioral/utilities/Assert.test.ts +826 -0
  233. package/src/__tests__/behavioral/utilities/InstanceParentTestCanAccessParentMethods.test.ts +14 -0
  234. package/src/__tests__/behavioral/utilities/MockFetch.test.ts +240 -0
  235. package/src/__tests__/behavioral/utilities/StackCleaner.test.ts +46 -0
  236. package/src/__tests__/behavioral/utilities/StaticParentTestCanAccessParentMethods.test.ts +34 -0
  237. package/src/__tests__/behavioral/utilities/StaticTestInheritsAbstractSpruceTestProperly.test.ts +11 -0
  238. package/src/__tests__/behavioral/utilities/Stringify.test.ts +169 -0
  239. package/src/__tests__/behavioral/utilities/TestDecoratorResolver.test.ts +51 -0
  240. package/src/__tests__/behavioral/utilities/TestOnBasic.test.ts +62 -0
  241. package/src/__tests__/behavioral/utilities/TestOnInstance.test.ts +439 -0
  242. package/src/__tests__/behavioral/utilities/TestOnInstanceExtendsTest.test.ts +237 -0
  243. package/src/__tests__/behavioral/utilities/TestOnInstanceExtendsTestWithHooks.test.ts +85 -0
  244. package/src/__tests__/behavioral/utilities/TestOnInstanceWithParentBeforeAll.test.ts +14 -0
  245. package/src/__tests__/behavioral/utilities/TestOnInstanceWithTwoLevelsOfInheritence.test.ts +16 -0
  246. package/src/__tests__/behavioral/utilities/TestResolver.test.ts +48 -0
  247. package/src/__tests__/behavioral/utilities/TestResolverOnStatic.test.ts +12 -0
  248. package/src/__tests__/behavioral/workspace/JestJsonParser.test.ts +357 -0
  249. package/src/__tests__/behavioral/workspace/TestReporter.test.ts +257 -0
  250. package/src/__tests__/behavioral/workspace/TestRunner.test.ts +87 -0
  251. package/src/__tests__/behavioral/workspace/Widgets.test.ts +90 -0
  252. package/src/__tests__/mock-terminal-kit.ts +115 -0
  253. package/src/__tests__/support/AbstractForInstanceTest.ts +12 -0
  254. package/src/__tests__/support/AbstractLevelOneTest.ts +3 -0
  255. package/src/__tests__/support/AbstractLevelTwoTest.ts +16 -0
  256. package/src/__tests__/support/AbstractStaticTest.ts +16 -0
  257. package/src/__tests__/support/AbstractTestOnInstanceTest.ts +30 -0
  258. package/src/__tests__/support/AbstractTestOnInstanceWithHooks.ts +138 -0
  259. package/src/__tests__/support/jest.setup.ts +2 -0
  260. package/src/__tests__/support/onTestFileResult.ts +1008 -0
  261. package/src/impl/AbstractModuleTest.ts +59 -10
  262. package/src/index.ts +4 -4
  263. package/src/utilities/AssertionError.ts +14 -0
  264. package/src/utilities/StackCleaner.ts +14 -0
  265. package/src/utilities/TestDecoratorResolver.ts +118 -0
  266. package/src/utilities/assert.ts +583 -0
  267. package/src/utilities/assert.utility.ts +295 -0
  268. package/src/utilities/decorators.ts +167 -0
  269. package/src/workspace/CommandService.ts +256 -0
  270. package/src/workspace/JestJsonParser.ts +255 -0
  271. package/src/workspace/TKButtonWidget.ts +54 -0
  272. package/src/workspace/TestLogItemGenerator.ts +184 -0
  273. package/src/workspace/TestReporter.ts +865 -0
  274. package/src/workspace/TestRunner.ts +128 -0
  275. package/src/workspace/TkBaseWidget.ts +249 -0
  276. package/src/workspace/TkInputWidget.ts +83 -0
  277. package/src/workspace/TkLayoutCellWidget.ts +46 -0
  278. package/src/workspace/TkLayoutWidget.ts +181 -0
  279. package/src/workspace/TkMenuBarWidget.ts +95 -0
  280. package/src/workspace/TkPopupWidget.ts +47 -0
  281. package/src/workspace/TkProgressBarWidget.ts +54 -0
  282. package/src/workspace/TkTextWidget.ts +158 -0
  283. package/src/workspace/TkWindowWidget.ts +122 -0
  284. package/src/workspace/WidgetFactory.ts +33 -0
  285. package/src/workspace/button.types.ts +19 -0
  286. package/src/workspace/duration.utility.ts +34 -0
  287. package/src/workspace/factory.types.ts +101 -0
  288. package/src/workspace/input.types.ts +22 -0
  289. package/src/workspace/keySelectChoices.ts +134 -0
  290. package/src/workspace/layout.types.ts +40 -0
  291. package/src/workspace/menuBar.types.ts +24 -0
  292. package/src/workspace/popup.types.ts +17 -0
  293. package/src/workspace/progressBar.types.ts +13 -0
  294. package/src/workspace/table.types.ts +9 -0
  295. package/src/workspace/termKit.utility.ts +130 -0
  296. package/src/workspace/terminal-kit.d.ts +28 -0
  297. package/src/workspace/test.types.ts +34 -0
  298. package/src/workspace/testRunner.cli.ts +159 -0
  299. package/src/workspace/text.types.ts +26 -0
  300. package/src/workspace/widget.utilities.ts +35 -0
  301. package/src/workspace/widgets.types.ts +102 -0
  302. package/src/workspace/window.types.ts +22 -0
  303. package/tsconfig.json +23 -27
  304. package/build/__tests__/AbstractPackageTest.d.ts +0 -4
  305. package/build/__tests__/AbstractPackageTest.js +0 -7
  306. package/build/__tests__/AbstractPackageTest.js.map +0 -1
  307. package/build/__tests__/functions/assertFunction.test.d.ts +0 -5
  308. package/build/__tests__/functions/assertFunction.test.js +0 -23
  309. package/build/__tests__/functions/assertFunction.test.js.map +0 -1
  310. package/build/__tests__/functions/testFunction.test.d.ts +0 -5
  311. package/build/__tests__/functions/testFunction.test.js +0 -23
  312. package/build/__tests__/functions/testFunction.test.js.map +0 -1
  313. package/build/__tests__/impl/AbstractModuleTest.test.js.map +0 -1
  314. package/build/functions/assert.d.ts +0 -3
  315. package/build/functions/assert.js +0 -4
  316. package/build/functions/assert.js.map +0 -1
  317. package/build/functions/test.d.ts +0 -3
  318. package/build/functions/test.js +0 -4
  319. package/build/functions/test.js.map +0 -1
  320. package/eslint.config.mjs +0 -3
  321. package/src/__tests__/AbstractPackageTest.ts +0 -7
  322. package/src/__tests__/functions/assertFunction.test.ts +0 -22
  323. package/src/__tests__/functions/testFunction.test.ts +0 -22
  324. package/src/__tests__/impl/AbstractModuleTest.test.ts +0 -34
  325. package/src/functions/assert.ts +0 -4
  326. package/src/functions/test.ts +0 -4
@@ -0,0 +1,49 @@
1
+ import { SpawnOptions } from 'child_process';
2
+ import { Writable } from 'stream';
3
+ export default class CommandServiceImpl implements CommandService {
4
+ private cwd;
5
+ private activeChildProcess;
6
+ private ignoreCloseErrors;
7
+ private static fakeResponses;
8
+ private static commandsRunCapturedByMockResponses;
9
+ constructor(cwd: string);
10
+ getCwd(): string;
11
+ setCwd(cwd: string): void;
12
+ execute(cmd: string, options?: ExecuteCommandOptions): Promise<{
13
+ stdout: string;
14
+ }>;
15
+ private parseArgv;
16
+ kill: () => void;
17
+ pid: () => number | undefined;
18
+ private getMockResponse;
19
+ static fakeCommand(command: string | RegExp, response: FakedCommandResponse): void;
20
+ static clearFakedResponses(): void;
21
+ }
22
+ export type FakedCommandCallback = (executable: string, args: any[]) => void;
23
+ interface FakedCommandResponse {
24
+ code: number;
25
+ stdout?: string;
26
+ stderr?: string;
27
+ callback?: FakedCommandCallback;
28
+ }
29
+ export interface CommandService {
30
+ execute(cmd: string, options?: ExecuteCommandOptions): Promise<{
31
+ stdout: string;
32
+ }>;
33
+ getCwd(): string;
34
+ setCwd(cwd: string): void;
35
+ kill(): void;
36
+ pid(): number | undefined;
37
+ }
38
+ export interface ExecuteCommandOptions {
39
+ ignoreErrors?: boolean;
40
+ args?: string[];
41
+ shouldStream?: boolean;
42
+ outStream?: Writable;
43
+ onError?: (error: string) => void;
44
+ onData?: (data: string) => void;
45
+ spawnOptions?: SpawnOptions;
46
+ forceColor?: boolean;
47
+ env?: Record<string, any>;
48
+ }
49
+ export {};
@@ -0,0 +1,179 @@
1
+ import { spawn } from 'child_process';
2
+ process.setMaxListeners(100);
3
+ export default class CommandServiceImpl {
4
+ cwd;
5
+ activeChildProcess;
6
+ ignoreCloseErrors = false;
7
+ static fakeResponses = [];
8
+ static commandsRunCapturedByMockResponses = [];
9
+ constructor(cwd) {
10
+ this.cwd = cwd;
11
+ }
12
+ getCwd() {
13
+ return this.cwd;
14
+ }
15
+ setCwd(cwd) {
16
+ this.cwd = cwd;
17
+ }
18
+ async execute(cmd, options) {
19
+ const cwd = this.cwd;
20
+ const args = options?.args || this.parseArgv(cmd);
21
+ const executable = options?.args ? cmd : args.shift();
22
+ const boundKill = this.kill.bind(this);
23
+ if (!executable) {
24
+ throw new Error('Bad params sent to command service');
25
+ }
26
+ const { mockResponse, mockKey } = this.getMockResponse(executable, args);
27
+ if (mockResponse) {
28
+ CommandServiceImpl.commandsRunCapturedByMockResponses.push(mockKey);
29
+ mockResponse.callback?.(executable, args);
30
+ if (mockResponse.code !== 0) {
31
+ throw new Error(`Command failed: ${executable} ${args.join(' ')}`);
32
+ }
33
+ return { stdout: mockResponse.stdout ?? '' };
34
+ }
35
+ process.on('exit', boundKill);
36
+ return new Promise((resolve, reject) => {
37
+ let stdout = '';
38
+ let stderr = '';
39
+ const spawnOptions = options?.shouldStream
40
+ ? {
41
+ stdio: 'inherit',
42
+ cwd,
43
+ env: {
44
+ PATH: process.env.PATH,
45
+ IS_CLI: 'true',
46
+ FORCE_COLOR: options?.forceColor ? '1' : '0',
47
+ ...options?.env,
48
+ },
49
+ }
50
+ : {
51
+ cwd,
52
+ env: {
53
+ PATH: process.env.PATH,
54
+ IS_CLI: 'true',
55
+ FORCE_COLOR: options?.forceColor ? '1' : '0',
56
+ ...options?.env,
57
+ },
58
+ shell: true,
59
+ ...options?.spawnOptions,
60
+ };
61
+ let child;
62
+ if (spawnOptions.shell) {
63
+ const commandStr = options?.args
64
+ ? [executable, ...args].join(' ')
65
+ : cmd;
66
+ child = spawn(commandStr, spawnOptions);
67
+ }
68
+ else {
69
+ child = spawn(executable, args, spawnOptions);
70
+ }
71
+ this.activeChildProcess = child;
72
+ if (options?.outStream) {
73
+ child.stdout?.pipe(options.outStream);
74
+ }
75
+ child.stdout?.addListener('data', (data) => {
76
+ options?.onData?.(data.toString());
77
+ stdout += data;
78
+ });
79
+ child.stderr?.addListener('data', (data) => {
80
+ options?.onError?.(data.toString());
81
+ stderr += data;
82
+ });
83
+ const closeHandler = (code) => {
84
+ process.off('exit', boundKill);
85
+ if (!this.activeChildProcess) {
86
+ return;
87
+ }
88
+ this.activeChildProcess = undefined;
89
+ setTimeout(() => {
90
+ child.stdout?.removeAllListeners();
91
+ child.stderr?.removeAllListeners();
92
+ child.removeAllListeners();
93
+ if (code === 0 ||
94
+ this.ignoreCloseErrors ||
95
+ options?.ignoreErrors) {
96
+ resolve({ stdout });
97
+ this.ignoreCloseErrors = false;
98
+ }
99
+ else {
100
+ reject(new Error(`Command failed (exit ${code}): ${executable} ${args.join(' ')}\n${stderr}`));
101
+ }
102
+ }, 0);
103
+ };
104
+ child.addListener('close', closeHandler);
105
+ child.addListener('exit', closeHandler);
106
+ });
107
+ }
108
+ parseArgv(cmd) {
109
+ const result = [];
110
+ let current = '';
111
+ let inQuote = false;
112
+ let quoteChar = '';
113
+ for (let i = 0; i < cmd.length; i++) {
114
+ const ch = cmd[i];
115
+ if (inQuote) {
116
+ if (ch === quoteChar) {
117
+ inQuote = false;
118
+ }
119
+ else {
120
+ current += ch;
121
+ }
122
+ }
123
+ else if (ch === '"' || ch === "'") {
124
+ inQuote = true;
125
+ quoteChar = ch;
126
+ }
127
+ else if (ch === ' ') {
128
+ if (current.length > 0) {
129
+ result.push(current);
130
+ current = '';
131
+ }
132
+ }
133
+ else {
134
+ current += ch;
135
+ }
136
+ }
137
+ if (current.length > 0) {
138
+ result.push(current);
139
+ }
140
+ return result;
141
+ }
142
+ kill = () => {
143
+ const child = this.activeChildProcess;
144
+ if (child?.pid) {
145
+ this.ignoreCloseErrors = true;
146
+ try {
147
+ process.kill(-child.pid, 'SIGTERM');
148
+ }
149
+ catch {
150
+ try {
151
+ child.kill('SIGTERM');
152
+ }
153
+ catch { }
154
+ }
155
+ }
156
+ };
157
+ pid = () => {
158
+ return this.activeChildProcess?.pid;
159
+ };
160
+ getMockResponse(executable, args) {
161
+ const mockKey = `${executable} ${args.join(' ')}`.trim();
162
+ const commands = CommandServiceImpl.fakeResponses;
163
+ const match = commands.find((r) => r.command instanceof RegExp
164
+ ? mockKey.search(r.command) > -1
165
+ : r.command.replace(/ +/gis, '') ===
166
+ mockKey.replace(/ +/gis, ''));
167
+ return { mockResponse: match?.response, mockKey };
168
+ }
169
+ static fakeCommand(command, response) {
170
+ this.fakeResponses.unshift({
171
+ command,
172
+ response,
173
+ });
174
+ }
175
+ static clearFakedResponses() {
176
+ this.fakeResponses = [];
177
+ }
178
+ }
179
+ //# sourceMappingURL=CommandService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandService.js","sourceRoot":"","sources":["../../src/workspace/CommandService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { TestResults } from './test.types.js';
2
+ export default class JestJsonParser {
3
+ private testResults;
4
+ private buffer;
5
+ write(data: string): void;
6
+ private ingestJestResult;
7
+ private pullTestFilesCompleteFromAggregatedResults;
8
+ private pullPathFromTestResponse;
9
+ private mapAbsoluteJsToRelativeTsPath;
10
+ private pullTestFileStatusFromTestResponse;
11
+ private pullTestFileResultStatus;
12
+ private pullTestsFromTestFileResult;
13
+ private testCaseResultToTest;
14
+ getResults(): TestResults;
15
+ }
@@ -0,0 +1,149 @@
1
+ import { END_DIVIDER, START_DIVIDER, retrocycle, } from '@sprucelabs/jest-json-reporter';
2
+ import escapeRegExp from 'lodash/escapeRegExp.js';
3
+ export default class JestJsonParser {
4
+ testResults = { totalTestFiles: 0 };
5
+ buffer = '';
6
+ write(data) {
7
+ let dataToProcess = this.buffer + data;
8
+ let endDividerStartIdx = -1;
9
+ do {
10
+ endDividerStartIdx = dataToProcess.search(escapeRegExp(END_DIVIDER));
11
+ if (endDividerStartIdx > -1) {
12
+ let startDividerIdx = Math.max(0, dataToProcess.search(escapeRegExp(START_DIVIDER)));
13
+ const endDividerEndIdx = endDividerStartIdx + END_DIVIDER.length;
14
+ if (startDividerIdx > endDividerStartIdx) {
15
+ startDividerIdx = -1;
16
+ }
17
+ const firstSegment = dataToProcess.substr(startDividerIdx, endDividerEndIdx - startDividerIdx);
18
+ const cleanedSegment = firstSegment
19
+ .replace(START_DIVIDER, '')
20
+ .replace(END_DIVIDER, '')
21
+ .trim();
22
+ const result = retrocycle(JSON.parse(cleanedSegment));
23
+ this.ingestJestResult(result);
24
+ dataToProcess = dataToProcess.substr(endDividerEndIdx);
25
+ }
26
+ } while (endDividerStartIdx > -1);
27
+ this.buffer = dataToProcess;
28
+ }
29
+ ingestJestResult(result) {
30
+ const testFiles = this.testResults.testFiles ?? [];
31
+ switch (result.status) {
32
+ case 'onRunStart':
33
+ this.testResults = {
34
+ totalTestFiles: result.results.numTotalTestSuites,
35
+ };
36
+ break;
37
+ case 'onTestCaseResult': {
38
+ const relativePath = this.mapAbsoluteJsToRelativeTsPath(result.test.path);
39
+ const idx = testFiles.findIndex((file) => file.path === relativePath);
40
+ const test = this.testCaseResultToTest(result.testCaseResult);
41
+ if (idx === -1) {
42
+ break;
43
+ }
44
+ if (!testFiles[idx].tests) {
45
+ testFiles[idx].tests = [];
46
+ }
47
+ testFiles[idx].tests?.push(test);
48
+ break;
49
+ }
50
+ case 'onTestFileStart':
51
+ testFiles.push({
52
+ path: this.pullPathFromTestResponse(result),
53
+ status: this.pullTestFileStatusFromTestResponse(result),
54
+ });
55
+ break;
56
+ case 'onTestFileResult': {
57
+ this.testResults.totalTestFilesComplete =
58
+ this.pullTestFilesCompleteFromAggregatedResults(result.aggregatedResult);
59
+ this.testResults.totalTestFiles =
60
+ result.aggregatedResult.numTotalTestSuites;
61
+ this.testResults.totalFailed =
62
+ result.aggregatedResult.numFailedTests;
63
+ this.testResults.totalPassed =
64
+ result.aggregatedResult.numPassedTests;
65
+ this.testResults.totalTests =
66
+ result.aggregatedResult.numTotalTests;
67
+ this.testResults.totalSkipped =
68
+ result.aggregatedResult.numPendingTests;
69
+ this.testResults.totalTodo =
70
+ result.aggregatedResult.numTodoTests;
71
+ for (const testResult of result.aggregatedResult.testResults) {
72
+ const relativePath = this.mapAbsoluteJsToRelativeTsPath(testResult.testFilePath);
73
+ const idx = testFiles.findIndex((file) => file.path === relativePath);
74
+ const file = {
75
+ ...(testFiles[idx] ?? {}),
76
+ path: relativePath,
77
+ status: this.pullTestFileResultStatus(testResult),
78
+ tests: this.pullTestsFromTestFileResult(testResult),
79
+ };
80
+ if (testResult.failureMessage) {
81
+ file.errorMessage = testResult.failureMessage;
82
+ }
83
+ if (idx === -1) {
84
+ testFiles.push(file);
85
+ }
86
+ else {
87
+ testFiles[idx] = file;
88
+ }
89
+ }
90
+ break;
91
+ }
92
+ }
93
+ if (testFiles.length > 0) {
94
+ this.testResults.testFiles = testFiles;
95
+ }
96
+ }
97
+ pullTestFilesCompleteFromAggregatedResults(aggregatedResult) {
98
+ const total = aggregatedResult.numFailedTestSuites +
99
+ aggregatedResult.numPassedTestSuites;
100
+ return total;
101
+ }
102
+ pullPathFromTestResponse(result) {
103
+ let path = '';
104
+ switch (result.status) {
105
+ case 'onTestFileResult':
106
+ case 'onTestFileStart':
107
+ path = result.test.path;
108
+ break;
109
+ }
110
+ const tsFile = this.mapAbsoluteJsToRelativeTsPath(path);
111
+ return tsFile;
112
+ }
113
+ mapAbsoluteJsToRelativeTsPath(path) {
114
+ const partialPath = path.split('__tests__').pop();
115
+ if (!partialPath) {
116
+ throw new Error('INVALID TEST FILE');
117
+ }
118
+ const tsFile = partialPath.substr(1, partialPath.length - 3) + 'ts';
119
+ return tsFile;
120
+ }
121
+ pullTestFileStatusFromTestResponse(result) {
122
+ switch (result.status) {
123
+ case 'onTestFileResult':
124
+ return this.pullTestFileResultStatus(result.testResult);
125
+ default:
126
+ return 'running';
127
+ }
128
+ }
129
+ pullTestFileResultStatus(testResult) {
130
+ return testResult.failureMessage || testResult.numFailingTests > 0
131
+ ? 'failed'
132
+ : 'passed';
133
+ }
134
+ pullTestsFromTestFileResult(testResult) {
135
+ return testResult.testResults.map((test) => this.testCaseResultToTest(test));
136
+ }
137
+ testCaseResultToTest(test) {
138
+ return {
139
+ name: test.title,
140
+ status: test.status,
141
+ errorMessages: test.failureMessages,
142
+ duration: test.duration ?? 0,
143
+ };
144
+ }
145
+ getResults() {
146
+ return this.testResults;
147
+ }
148
+ }
149
+ //# sourceMappingURL=JestJsonParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JestJsonParser.js","sourceRoot":"","sources":["../../src/workspace/JestJsonParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { ButtonWidget, ButtonWidgetOptions } from './button.types.js';
2
+ import TkBaseWidget, { TkWidgetOptions } from './TkBaseWidget.js';
3
+ export default class TKButtonWidget extends TkBaseWidget implements ButtonWidget {
4
+ private button;
5
+ readonly type = "button";
6
+ constructor(options: TkWidgetOptions & ButtonWidgetOptions & {
7
+ termKitElement: any;
8
+ });
9
+ private handleClick;
10
+ getText(): string;
11
+ setText(text: string): void;
12
+ getTermKitElement(): any;
13
+ }
@@ -0,0 +1,37 @@
1
+ import terminal_kit from 'terminal-kit';
2
+ import termKitUtil from './termKit.utility.js';
3
+ import TkBaseWidget from './TkBaseWidget.js';
4
+ const termKit = terminal_kit;
5
+ export default class TKButtonWidget extends TkBaseWidget {
6
+ button;
7
+ type = 'button';
8
+ constructor(options) {
9
+ super({
10
+ ...options,
11
+ });
12
+ const { parent, text, ...rest } = options;
13
+ const frame = termKitUtil.buildFrame(options, parent);
14
+ this.button = new termKit.Button({
15
+ parent: parent ? parent.getTermKitElement() : undefined,
16
+ content: text,
17
+ ...rest,
18
+ ...frame,
19
+ });
20
+ this.button.on('submit', this.handleClick.bind(this));
21
+ this.button.__widget = this;
22
+ this.calculateSizeLockDeltas();
23
+ }
24
+ handleClick() {
25
+ void this.emit('click');
26
+ }
27
+ getText() {
28
+ throw new Error('Method not implemented.');
29
+ }
30
+ setText(text) {
31
+ this.button.setContent(text);
32
+ }
33
+ getTermKitElement() {
34
+ return this.button;
35
+ }
36
+ }
37
+ //# sourceMappingURL=TKButtonWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TKButtonWidget.js","sourceRoot":"","sources":["../../src/workspace/TKButtonWidget.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,cAAc,CAAA;AAEvC,OAAO,WAAW,MAAM,sBAAsB,CAAA;AAC9C,OAAO,YAAiC,MAAM,mBAAmB,CAAA;AACjE,MAAM,OAAO,GAAG,YAAmB,CAAA;AAEnC,MAAM,CAAC,OAAO,OAAO,cACjB,SAAQ,YAAY;IAGZ,MAAM,CAAK;IAEH,IAAI,GAAG,QAAQ,CAAA;IAE/B,YACI,OAAwE;QAExE,KAAK,CAAC;YACF,GAAG,OAAO;SACb,CAAC,CAAA;QAEF,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;QAEzC,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAErD,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;YAC7B,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,SAAS;YACvD,OAAO,EAAE,IAAI;YACb,GAAG,IAAI;YACP,GAAG,KAAK;SACX,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAA;QAE3B,IAAI,CAAC,uBAAuB,EAAE,CAAA;IAClC,CAAC;IAEO,WAAW;QACf,KAAM,IAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC7C,CAAC;IAEM,OAAO;QACV,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC9C,CAAC;IAEM,OAAO,CAAC,IAAY;QACvB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IAChC,CAAC;IAEM,iBAAiB;QACpB,OAAO,IAAI,CAAC,MAAM,CAAA;IACtB,CAAC;CACJ"}
@@ -0,0 +1,15 @@
1
+ import { SpruceTestFile, TestRunnerStatus } from './test.types.js';
2
+ export default class TestLogItemGenerator {
3
+ private startTimes;
4
+ private testRunnerStatus;
5
+ generateLogItemForFile(file: SpruceTestFile, status: TestRunnerStatus): string;
6
+ private generateDuration;
7
+ private bulletBasedOnStatus;
8
+ private calculateDurationInMsForFile;
9
+ private calculateDurationInMs;
10
+ generateErrorLogItemForFile(file: SpruceTestFile): string;
11
+ resetStartTimes(): void;
12
+ private generateStatusBlock;
13
+ private colorBasedOnStatus;
14
+ private centerStringWithSpaces;
15
+ }
@@ -0,0 +1,142 @@
1
+ import chalk from 'chalk';
2
+ import StackCleaner from '../utilities/StackCleaner.js';
3
+ import durationUtil from './duration.utility.js';
4
+ export default class TestLogItemGenerator {
5
+ startTimes = {};
6
+ testRunnerStatus;
7
+ generateLogItemForFile(file, status) {
8
+ this.testRunnerStatus = status;
9
+ let logContent = '';
10
+ const duration = this.calculateDurationInMsForFile(file);
11
+ logContent += `${this.generateStatusBlock(file.status)} ${file.path}${duration ? ` ${this.generateDuration(file.status, duration)}` : ''}\n`;
12
+ if (file.tests) {
13
+ file.tests.forEach((test) => {
14
+ const bullet = this.bulletBasedOnStatus(test.status);
15
+ logContent += ` ${bullet} ^-${test.name}^ ${this.generateDuration(test.status, test.duration)}\n`;
16
+ });
17
+ }
18
+ if (file.status === 'running') {
19
+ const pendingKey = `${file.path}-pending-${file.tests?.length ?? 0}`;
20
+ logContent += ` ^-${'Running next test... ⚡️⚡️⚡️'}^ ${this.generateDuration('running', this.calculateDurationInMs(pendingKey))}\n`;
21
+ }
22
+ return logContent;
23
+ }
24
+ generateDuration(status, duration) {
25
+ if (duration === 0) {
26
+ return '';
27
+ }
28
+ const durationColor = this.colorBasedOnStatus(status);
29
+ return `^${durationColor}(${durationUtil.msToFriendly(duration)})^`;
30
+ }
31
+ bulletBasedOnStatus(status) {
32
+ let bullet = 'y';
33
+ switch (status) {
34
+ case 'running':
35
+ bullet = '^g(running)^';
36
+ break;
37
+ case 'passed':
38
+ bullet = '^g√^';
39
+ break;
40
+ case 'failed':
41
+ bullet = '^rx^';
42
+ break;
43
+ case 'pending':
44
+ case 'skipped':
45
+ bullet = '^y(skipped)^';
46
+ break;
47
+ case 'todo':
48
+ bullet = '^y(todo)^';
49
+ break;
50
+ default:
51
+ bullet = '??';
52
+ break;
53
+ }
54
+ return bullet;
55
+ }
56
+ calculateDurationInMsForFile(file) {
57
+ if (file.status !== 'running' && file.tests) {
58
+ return file.tests.reduce((time, test) => {
59
+ time += test.duration;
60
+ return time;
61
+ }, 0);
62
+ }
63
+ const key = file.path;
64
+ return this.calculateDurationInMs(key);
65
+ }
66
+ calculateDurationInMs(key) {
67
+ if (!this.startTimes[key]) {
68
+ this.startTimes[key] = new Date().getTime();
69
+ }
70
+ const delta = new Date().getTime() - this.startTimes[key];
71
+ return delta;
72
+ }
73
+ generateErrorLogItemForFile(file) {
74
+ let errorContent = '';
75
+ file.tests?.forEach((test) => {
76
+ test.errorMessages?.forEach((message) => {
77
+ const cleaned = StackCleaner.clean(message ?? '');
78
+ errorContent += ` ${chalk.red(file.path)}\n`;
79
+ errorContent += ` - ${chalk.red(test.name)}\n\n`;
80
+ errorContent +=
81
+ cleaned.replace(/\n+ {4}at/i, '\n\n\n at') + '\n\n\n';
82
+ });
83
+ });
84
+ if (!errorContent && file.errorMessage) {
85
+ errorContent += `${chalk.red(file.path)}\n`;
86
+ errorContent += file.errorMessage + '\n\n\n';
87
+ }
88
+ return errorContent;
89
+ }
90
+ resetStartTimes() {
91
+ this.startTimes = {};
92
+ }
93
+ generateStatusBlock(status) {
94
+ const bgColor = this.colorBasedOnStatus(status);
95
+ let statusLabel = status;
96
+ let color = 'k';
97
+ let padding = 10;
98
+ switch (status) {
99
+ case 'passed':
100
+ padding = 11;
101
+ color = 'w';
102
+ break;
103
+ case 'failed':
104
+ padding = 11;
105
+ color = 'w';
106
+ break;
107
+ }
108
+ if (status === 'running' && this.testRunnerStatus === 'stopped') {
109
+ statusLabel = 'stopped';
110
+ color = 'w';
111
+ }
112
+ return `^b^#^${bgColor}^${color}^+${this.centerStringWithSpaces(statusLabel, padding)}^`;
113
+ }
114
+ colorBasedOnStatus(status) {
115
+ let color = 'y';
116
+ switch (status) {
117
+ case 'passed':
118
+ color = 'g';
119
+ break;
120
+ case 'failed':
121
+ color = 'r';
122
+ break;
123
+ }
124
+ if (status === 'running' && this.testRunnerStatus === 'stopped') {
125
+ color = 'b';
126
+ }
127
+ return color;
128
+ }
129
+ centerStringWithSpaces(text, numberOfSpaces) {
130
+ text = text.trim();
131
+ let l = text.length;
132
+ let w2 = Math.floor(numberOfSpaces / 2);
133
+ let l2 = Math.floor(l / 2);
134
+ let s = new Array(w2 - l2 + 1).join(' ');
135
+ text = s + text + s;
136
+ if (text.length < numberOfSpaces) {
137
+ text += new Array(numberOfSpaces - text.length + 1).join(' ');
138
+ }
139
+ return text;
140
+ }
141
+ }
142
+ //# sourceMappingURL=TestLogItemGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestLogItemGenerator.js","sourceRoot":"","sources":["../../src/workspace/TestLogItemGenerator.ts"],"names":[],"mappings":"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"}