nole 2.2.2 → 3.1.0

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 (107) hide show
  1. package/.github/workflows/ci.yaml +34 -0
  2. package/LICENSE.md +21 -0
  3. package/README.md +474 -388
  4. package/bin/nole.js +145 -111
  5. package/dist/const.d.ts +8 -0
  6. package/dist/const.d.ts.map +1 -0
  7. package/dist/const.js +9 -0
  8. package/dist/core.d.ts +22 -0
  9. package/dist/core.d.ts.map +1 -0
  10. package/dist/core.js +56 -0
  11. package/dist/dynamic.d.ts +5 -1
  12. package/dist/dynamic.d.ts.map +1 -1
  13. package/dist/dynamic.js +35 -1
  14. package/dist/handle/after-each-hooks.d.ts +3 -0
  15. package/dist/handle/after-each-hooks.d.ts.map +1 -0
  16. package/dist/handle/after-each-hooks.js +26 -0
  17. package/dist/handle/after-hooks.d.ts +3 -0
  18. package/dist/handle/after-hooks.d.ts.map +1 -0
  19. package/dist/handle/after-hooks.js +24 -0
  20. package/dist/handle/before-each-hooks.d.ts +3 -0
  21. package/dist/handle/before-each-hooks.d.ts.map +1 -0
  22. package/dist/handle/before-each-hooks.js +26 -0
  23. package/dist/handle/before-hooks.d.ts +3 -0
  24. package/dist/handle/before-hooks.d.ts.map +1 -0
  25. package/dist/handle/before-hooks.js +34 -0
  26. package/dist/handle/cleanup-hooks.d.ts +3 -0
  27. package/dist/handle/cleanup-hooks.d.ts.map +1 -0
  28. package/dist/handle/cleanup-hooks.js +34 -0
  29. package/dist/handle/specs.d.ts +3 -0
  30. package/dist/handle/specs.d.ts.map +1 -0
  31. package/dist/handle/specs.js +50 -0
  32. package/dist/index.d.ts +3 -3
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +4 -4
  35. package/dist/pipeline.test.d.ts +7 -0
  36. package/dist/pipeline.test.d.ts.map +1 -0
  37. package/dist/pipeline.test.js +124 -0
  38. package/dist/run.d.ts +7 -6
  39. package/dist/run.d.ts.map +1 -1
  40. package/dist/run.js +166 -196
  41. package/dist/symbol.d.ts +2 -0
  42. package/dist/symbol.d.ts.map +1 -0
  43. package/dist/symbol.js +2 -0
  44. package/dist/test-wrap.d.ts +38 -0
  45. package/dist/test-wrap.d.ts.map +1 -0
  46. package/dist/test-wrap.js +30 -0
  47. package/dist/utils/executor.js +1 -1
  48. package/dist/utils/executor.test.d.ts +3 -1
  49. package/dist/utils/executor.test.d.ts.map +1 -1
  50. package/dist/utils/executor.test.js +3 -30
  51. package/dist/utils/time_difference.d.ts +9 -0
  52. package/dist/utils/time_difference.d.ts.map +1 -1
  53. package/dist/utils/time_difference.js +10 -1
  54. package/dist/utils/time_difference.test.d.ts +3 -1
  55. package/dist/utils/time_difference.test.d.ts.map +1 -1
  56. package/dist/utils/time_difference.test.js +5 -18
  57. package/dist/utils/time_factor.d.ts.map +1 -1
  58. package/dist/utils/time_factor.js +2 -3
  59. package/dist/utils/time_factor.test.d.ts +3 -1
  60. package/dist/utils/time_factor.test.d.ts.map +1 -1
  61. package/dist/utils/time_factor.test.js +3 -18
  62. package/package.json +58 -58
  63. package/tsconfig.json +18 -18
  64. package/dist/data.d.ts +0 -3
  65. package/dist/data.d.ts.map +0 -1
  66. package/dist/data.js +0 -9
  67. package/dist/data.js.map +0 -1
  68. package/dist/decorators.d.ts +0 -9
  69. package/dist/decorators.d.ts.map +0 -1
  70. package/dist/decorators.js +0 -118
  71. package/dist/decorators.js.map +0 -1
  72. package/dist/dynamic.js.map +0 -1
  73. package/dist/index.js.map +0 -1
  74. package/dist/run.js.map +0 -1
  75. package/dist/test.d.ts +0 -39
  76. package/dist/test.d.ts.map +0 -1
  77. package/dist/test.js +0 -25
  78. package/dist/test.js.map +0 -1
  79. package/dist/utils/executor.js.map +0 -1
  80. package/dist/utils/executor.test.js.map +0 -1
  81. package/dist/utils/time_difference.js.map +0 -1
  82. package/dist/utils/time_difference.test.js.map +0 -1
  83. package/dist/utils/time_factor.js.map +0 -1
  84. package/dist/utils/time_factor.test.js.map +0 -1
  85. package/src/data.ts +0 -13
  86. package/src/decorators.ts +0 -208
  87. package/src/dynamic.ts +0 -11
  88. package/src/index.ts +0 -13
  89. package/src/run.ts +0 -331
  90. package/src/test.ts +0 -47
  91. package/src/utils/executor.test.ts +0 -27
  92. package/src/utils/executor.ts +0 -22
  93. package/src/utils/time_difference.test.ts +0 -12
  94. package/src/utils/time_difference.ts +0 -26
  95. package/src/utils/time_factor.test.ts +0 -29
  96. package/src/utils/time_factor.ts +0 -35
  97. package/test/basic.test.ts +0 -24
  98. package/test/before.test.ts +0 -54
  99. package/test/clean-up.test.ts +0 -52
  100. package/test/dynamic-skip.test.ts +0 -8
  101. package/test/dynamic.test.ts +0 -13
  102. package/test/hook.test.ts +0 -27
  103. package/test/multi-dependency.test.ts +0 -45
  104. package/test/multiple-uppercased-chars.test.ts +0 -19
  105. package/test/skip-all.test.ts +0 -19
  106. package/test/tsconfig.json +0 -24
  107. package/test/turkish-chars.test.ts +0 -19
package/dist/run.js CHANGED
@@ -1,234 +1,198 @@
1
- import { HashMap } from "./data.js";
2
- import { TimeDifference } from "./utils/time_difference.js";
3
- import { TimeFactor } from "./utils/time_factor.js";
4
- import * as clrs from "colors/safe.js";
5
- import { Executor } from "./utils/executor.js";
6
- import { HookType } from "./test.js";
7
- const colors = clrs.default;
8
- const OK_TEXT = colors.bold(colors.green(" (ok) "));
9
- const SKIP_TEXT = colors.bold(colors.yellow(" (skip) "));
10
- const DYNAMIC_SKIP_TEXT = colors.bold(colors.blue(" (dskip) "));
11
- const FAILED_TEXT = colors.bold(colors.red(" (failed) "));
12
- const HOOK_FAILED_TEXT = colors.bold(colors.red(" (hook failed) "));
13
- export function ManualRun(options) {
14
- if (!options.log) {
15
- options.log = console.log.bind(console);
1
+ import { HookType, TestWrap } from "./test-wrap.js";
2
+ import { BaseTest } from "./core.js";
3
+ import { TEST_CLASS_KEY } from "./symbol.js";
4
+ import { handleBeforeHooks } from "./handle/before-hooks.js";
5
+ import { handleSpecs } from "./handle/specs.js";
6
+ import { handleAfterHooks } from "./handle/after-hooks.js";
7
+ import { handleCleanUp } from "./handle/cleanup-hooks.js";
8
+ import { colors, FAILED_TEXT } from "./const.js";
9
+ let allTests = new Map();
10
+ let notTestedYet = new Map();
11
+ export async function ManualRun(originalTests) {
12
+ for (let test of originalTests) {
13
+ if (allTests.has(test)) {
14
+ continue;
15
+ }
16
+ const wrap = new TestWrap(test);
17
+ allTests.set(test, wrap);
18
+ notTestedYet.set(test, wrap);
16
19
  }
17
- const log = options.log;
18
- return new Promise(async (resolve, reject) => {
19
- try {
20
- let hashMap = new Map(HashMap());
21
- if (!hashMap.size) {
22
- log(`${FAILED_TEXT} no specs found`);
23
- throw new Error("No specs found");
24
- }
25
- while (hashMap.size) {
26
- let test = PickNextTestFromHashMap(hashMap);
27
- if (test) {
28
- hashMap.delete(test.target);
29
- CreateInstanceIfNotExists(test);
30
- HandleDependencies(test);
31
- await HandleBeforeHooks(test, options);
32
- await HandleSpecs(test, options);
33
- await HandleAfterHooks(test, options);
34
- test.isFinished = true;
35
- if (test.dependents.length == 0) {
36
- await HandleCleanUp(test, options);
37
- }
38
- }
39
- else {
40
- DependencyLock(hashMap);
41
- }
20
+ extractInformationFromClasses(notTestedYet);
21
+ if (!notTestedYet.size) {
22
+ throw new Error("No specs found");
23
+ }
24
+ while (notTestedYet.size) {
25
+ let entry = pickNext(notTestedYet);
26
+ if (entry) {
27
+ let test = entry[1];
28
+ // console.log(colors.bold(colors.cyan(`Running test: ${test.name}`)));
29
+ notTestedYet.delete(test.target);
30
+ createInstanceIfNotExists(test);
31
+ handleDependencies(test);
32
+ await handleBeforeHooks(test);
33
+ await handleSpecs(test);
34
+ await handleAfterHooks(test);
35
+ test.isFinished = true;
36
+ if (test.dependents.length == 0) {
37
+ await handleCleanUp(test);
42
38
  }
43
- resolve();
44
39
  }
45
- catch (e) {
46
- reject(e);
40
+ else {
41
+ dependencyLock(notTestedYet);
47
42
  }
48
- });
49
- }
50
- function PickNextTestFromHashMap(hashMap) {
51
- for (let test of hashMap.values()) {
52
- if (test.isFinished)
53
- continue;
54
- if (!test.dependencies.every((x) => x.dependency.isFinished))
55
- continue;
56
- return test;
57
43
  }
58
44
  }
59
- function CreateInstanceIfNotExists(test) {
60
- if (!test.testInstance) {
61
- test.testInstance = new test.target();
45
+ function extractInformationFromClasses(tests) {
46
+ for (let [target, test] of tests.entries()) {
47
+ updateInformationForClass(target, test, tests);
62
48
  }
63
49
  }
64
- function HandleDependencies(test) {
65
- for (let dependency of test.dependencies) {
66
- test.testInstance[dependency.propertyKey] =
67
- dependency.dependency.testInstance;
50
+ export function updateInformationForClass(target, test, tests) {
51
+ const config = target[TEST_CLASS_KEY];
52
+ if (config.skip) {
53
+ test.skipClass = { reason: config.skip };
68
54
  }
69
- }
70
- async function HandleBeforeHooks(test, options) {
71
- for (let [propertyKey, hook] of test.hooks.entries()) {
72
- if (hook.type != HookType.Before)
73
- continue;
74
- let hookName = colors.bold(colors.yellow(test.name +
75
- (propertyKey != "before" ? `.${propertyKey}:before` : ":before")));
76
- try {
77
- if (!options.orderDebug) {
78
- await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
55
+ test.dependencies = config.dependencies
56
+ ? Array.from(config.dependencies.entries()).map(([key, dep]) => {
57
+ const actual = dep();
58
+ let testWrap = tests.get(actual);
59
+ if (!testWrap) {
60
+ testWrap = new TestWrap(actual);
61
+ tests.set(actual, testWrap);
62
+ allTests.set(actual, testWrap);
79
63
  }
80
- else {
81
- let timeText = TimeFactor(0, hook.timeout);
82
- options.log(`${OK_TEXT} ${timeText} ${hookName}()`);
64
+ testWrap.dependents.push(test);
65
+ return {
66
+ propertyKey: key,
67
+ dependency: testWrap,
68
+ };
69
+ })
70
+ : [];
71
+ if (config.before) {
72
+ const beforeTests = config.before();
73
+ for (let i = 0; i < beforeTests.length; i++) {
74
+ const actual = beforeTests[i];
75
+ let testWrap = tests.get(actual);
76
+ if (!testWrap) {
77
+ testWrap = new TestWrap(actual);
78
+ tests.set(actual, testWrap);
79
+ allTests.set(actual, testWrap);
83
80
  }
84
- }
85
- catch (e) {
86
- console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
87
- console.error(e?.stack ?? e);
88
- throw e;
81
+ testWrap.dependencies.push({
82
+ propertyKey: "_before_" + i,
83
+ dependency: test,
84
+ });
85
+ test.dependents.push(testWrap);
89
86
  }
90
87
  }
91
- }
92
- async function HandleBeforeEachHooks(test, options) {
93
- for (let [propertyKey, hook] of test.hooks.entries()) {
94
- if (hook.type != HookType.BeforeEach)
95
- continue;
96
- let hookName = colors.bold(colors.yellow(test.name +
97
- (propertyKey != "beforeEach"
98
- ? `.${propertyKey}:beforeEach`
99
- : ":beforeEach")));
100
- try {
101
- if (!options.orderDebug) {
102
- await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
103
- }
104
- else {
105
- let timeText = TimeFactor(0, hook.timeout);
106
- options.log(`${OK_TEXT} ${timeText} ${hookName}()`);
88
+ if (config.after) {
89
+ const afterTests = config.after();
90
+ for (let i = 0; i < afterTests.length; i++) {
91
+ const actual = afterTests[i];
92
+ let testWrap = tests.get(actual);
93
+ if (!testWrap) {
94
+ testWrap = new TestWrap(actual);
95
+ tests.set(actual, testWrap);
96
+ allTests.set(actual, testWrap);
107
97
  }
108
- }
109
- catch (e) {
110
- console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
111
- console.error(e?.stack ?? e);
112
- throw e;
98
+ test.dependencies.push({
99
+ propertyKey: "_after_" + i,
100
+ dependency: testWrap,
101
+ });
102
+ testWrap.dependents.push(test);
113
103
  }
114
104
  }
115
105
  }
116
- async function HandleAfterEachHooks(test, options) {
117
- for (let [propertyKey, hook] of test.hooks.entries()) {
118
- if (hook.type != HookType.AfterEach)
106
+ function pickNext(tests) {
107
+ for (let entry of tests.entries()) {
108
+ let test = entry[1];
109
+ if (test.isFinished)
119
110
  continue;
120
- let hookName = colors.bold(colors.yellow(test.name +
121
- (propertyKey != "afterEach"
122
- ? `.${propertyKey}:afterEach`
123
- : ":afterEach")));
124
- try {
125
- if (!options.orderDebug) {
126
- await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
127
- }
128
- else {
129
- let timeText = TimeFactor(0, hook.timeout);
130
- options.log(`${OK_TEXT} ${timeText} ${hookName}()`);
131
- }
132
- }
133
- catch (e) {
134
- console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
135
- console.error(e?.stack ?? e);
136
- throw e;
137
- }
111
+ if (!test.dependencies.every((x) => x.dependency.isFinished))
112
+ continue;
113
+ return entry;
138
114
  }
139
115
  }
140
- async function HandleSpecs(test, options) {
141
- const log = options.log;
142
- for (let [propertyKey, spec] of test.specs.entries()) {
143
- let testName = colors.bold(colors.yellow(test.name + "." + propertyKey));
144
- const shouldPropertySkip = test.skip.has(propertyKey);
145
- if (shouldPropertySkip || test.skipClass) {
146
- let reason = shouldPropertySkip
147
- ? test.skip.get(propertyKey).reason
148
- : test.skipClass.reason;
149
- log(`${SKIP_TEXT} ${" ".repeat(9)} ${testName}() ${reason ? "{" + reason + "}" : ""}`);
116
+ export function createInstanceIfNotExists(test) {
117
+ if (!test.testInstance) {
118
+ const instance = new test.target();
119
+ test.testInstance = instance;
120
+ }
121
+ if (!test.specDetection) {
122
+ specDetection(test);
123
+ test.specDetection = true;
124
+ }
125
+ }
126
+ function specDetection(test) {
127
+ const instance = test.testInstance;
128
+ for (let key of getAllMethods(instance)) {
129
+ if (typeof key !== "string") {
150
130
  continue;
151
131
  }
152
- await HandleBeforeEachHooks(test, options);
153
- let start = TimeDifference.begin();
154
- try {
155
- if (!options.orderDebug) {
156
- await Executor(test.testInstance[propertyKey].bind(test.testInstance), spec.timeout);
157
- }
158
- let timeText = TimeFactor(start.end(), spec.timeout);
159
- log(`${OK_TEXT} ${timeText} ${testName}()`);
132
+ if (key.startsWith(process.env.SPEC_SKIP_PREFIX ?? "_")) {
133
+ continue;
160
134
  }
161
- catch (e) {
162
- if (e?._nole_anchor) {
163
- let reason = e.reason;
164
- log(`${DYNAMIC_SKIP_TEXT} ${" ".repeat(8)} ${testName}() ${reason ? "{" + reason + "}" : ""}`);
165
- continue;
166
- }
167
- let timeText = TimeFactor(start.end(), spec.timeout);
168
- console.error(`${FAILED_TEXT} ${timeText} ${testName}()`);
169
- console.error(e?.stack ?? e);
170
- throw e;
135
+ let lowerKey = key.toLowerCase();
136
+ if (lowerKey.startsWith("skip")) {
137
+ test.skip.set(key, { reason: "marked as skipped" });
171
138
  }
172
- await HandleAfterEachHooks(test, options);
173
- }
174
- }
175
- async function HandleAfterHooks(test, options) {
176
- for (let [propertyKey, hook] of test.hooks.entries()) {
177
- if (hook.type != HookType.After)
178
- continue;
179
- let hookName = colors.bold(colors.yellow(test.name +
180
- (propertyKey != "after" ? `.${propertyKey}:after` : ":after")));
181
- try {
182
- if (!options.orderDebug) {
183
- await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
139
+ if (lowerKey.startsWith("hook") ||
140
+ lowerKey === "cleanup" ||
141
+ lowerKey === "before" ||
142
+ lowerKey === "after" ||
143
+ lowerKey === "beforeeach" ||
144
+ lowerKey === "aftereach") {
145
+ let type = HookType.Before;
146
+ if (lowerKey.endsWith("before")) {
147
+ type = HookType.Before;
184
148
  }
185
- else {
186
- let timeText = TimeFactor(0, hook.timeout);
187
- options.log(`${OK_TEXT} ${timeText} ${hookName}()`);
149
+ else if (lowerKey.endsWith("after")) {
150
+ type = HookType.After;
188
151
  }
152
+ else if (lowerKey.endsWith("beforeeach")) {
153
+ type = HookType.BeforeEach;
154
+ }
155
+ else if (lowerKey.endsWith("aftereach")) {
156
+ type = HookType.AfterEach;
157
+ }
158
+ else if (lowerKey.endsWith("cleanup")) {
159
+ type = HookType.CleanUp;
160
+ }
161
+ test.hooks.set(key, { type });
162
+ continue;
189
163
  }
190
- catch (e) {
191
- console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
192
- console.error(e?.stack ?? e);
193
- throw e;
194
- }
164
+ test.specs.set(key, {});
195
165
  }
196
166
  }
197
- async function HandleCleanUp(test, options) {
198
- if (test.cleanUpCalled)
199
- return;
200
- if (!test.dependents.every((dependent) => dependent.isFinished && dependent.cleanUpCalled))
201
- return;
202
- test.cleanUpCalled = true;
203
- const log = options.log;
204
- for (let [propertyKey, hook] of test.hooks.entries()) {
205
- if (hook.type != HookType.CleanUp)
206
- continue;
207
- let hookName = colors.bold(colors.yellow(test.name +
208
- (propertyKey != "cleanUp" ? `.${propertyKey}:cleanUp` : ":cleanUp")));
209
- let start = TimeDifference.begin();
210
- try {
211
- if (!options.orderDebug) {
212
- await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
167
+ function getAllMethods(instance) {
168
+ let props = new Set();
169
+ let currentObj = instance;
170
+ let stack = [];
171
+ while (currentObj && currentObj !== Object.prototype) {
172
+ stack.push(currentObj);
173
+ currentObj = Object.getPrototypeOf(currentObj);
174
+ }
175
+ while (stack.length > 0) {
176
+ let obj = stack.pop(); // En üstteki (A.prototype) ilk çıkar
177
+ Object.getOwnPropertyNames(obj).forEach((prop) => {
178
+ if (typeof obj[prop] === "function" && prop !== "constructor") {
179
+ props.add(prop);
213
180
  }
214
- let timeText = TimeFactor(start.end(), hook.timeout);
215
- log(`${OK_TEXT} ${timeText} ${hookName}()`);
216
- }
217
- catch (e) {
218
- console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
219
- console.error(e?.stack ?? e);
220
- throw e;
221
- }
181
+ });
222
182
  }
223
- for (let tree of test.dependencies) {
224
- await HandleCleanUp(tree.dependency, options);
183
+ return Array.from(props);
184
+ }
185
+ function handleDependencies(test) {
186
+ for (let dependency of test.dependencies) {
187
+ test.testInstance[dependency.propertyKey] =
188
+ dependency.dependency.testInstance;
225
189
  }
226
190
  }
227
- function DependencyLock(hashMap) {
191
+ function dependencyLock(tests) {
228
192
  console.error(FAILED_TEXT +
229
193
  colors.red("Looks like there is confict issue for dependency resolving!"));
230
194
  console.error("Possible conflicts;");
231
- for (let test of hashMap.values()) {
195
+ for (let [, test] of tests) {
232
196
  console.error(`- class ${test.name} { ${test.dependencies
233
197
  .filter((x) => !x.dependency.isFinished)
234
198
  .map((x) => `@Dependency(${x.dependency.name}) ${x.propertyKey}`)
@@ -236,4 +200,10 @@ function DependencyLock(hashMap) {
236
200
  }
237
201
  throw new Error("Dependency lock occurred!");
238
202
  }
239
- //# sourceMappingURL=run.js.map
203
+ export function getTestMap() {
204
+ return allTests;
205
+ }
206
+ export function getFutureTestMap() {
207
+ return notTestedYet;
208
+ }
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQXNCLE1BQU0sV0FBVyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRCxJQUFJLFFBQVEsR0FBc0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUM1RCxJQUFJLFlBQVksR0FBc0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUVoRSxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxhQUFzQztJQUNwRSxLQUFLLElBQUksSUFBSSxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQy9CLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELDZCQUE2QixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRTVDLElB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
@@ -0,0 +1,2 @@
1
+ export declare const TEST_CLASS_KEY: unique symbol;
2
+ //# sourceMappingURL=symbol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol.d.ts","sourceRoot":"","sources":["../src/symbol.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,eAAoC,CAAC"}
package/dist/symbol.js ADDED
@@ -0,0 +1,2 @@
1
+ export const TEST_CLASS_KEY = Symbol.for("nole.TEST_CLASS_KEY");
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N5bWJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDIn0=
@@ -0,0 +1,38 @@
1
+ import { BaseTest, type TestClassInfo } from "./core.js";
2
+ export interface IDependency {
3
+ propertyKey: string;
4
+ dependency: TestWrap;
5
+ }
6
+ export interface ISpec {
7
+ }
8
+ export interface IHook {
9
+ type: HookType;
10
+ }
11
+ export interface ISkip {
12
+ reason: string;
13
+ origin?: string;
14
+ }
15
+ export declare class TestWrap {
16
+ target: new () => BaseTest;
17
+ dependencies: IDependency[];
18
+ dependents: TestWrap[];
19
+ skip: Map<string, ISkip>;
20
+ skipClass: ISkip | null;
21
+ specs: Map<string, ISpec>;
22
+ hooks: Map<string, IHook>;
23
+ isFinished: boolean;
24
+ cleanUpCalled: boolean;
25
+ testInstance: any;
26
+ specDetection: boolean;
27
+ config: TestClassInfo;
28
+ constructor(target: new () => BaseTest);
29
+ get name(): string;
30
+ }
31
+ export declare enum HookType {
32
+ Before = 0,// Trigger when test case is ready to handle
33
+ After = 1,// Trigger when test case did all the specs
34
+ BeforeEach = 2,// Trigger before each spec
35
+ AfterEach = 3,// Trigger after each spec
36
+ CleanUp = 4
37
+ }
38
+ //# sourceMappingURL=test-wrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-wrap.d.ts","sourceRoot":"","sources":["../src/test-wrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAGzD,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,QAAQ,CAAC;CACtB;AAED,MAAM,WAAW,KAAK;CAAG;AAEzB,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,qBAAa,QAAQ;IAaA,MAAM,EAAE,UAAU,QAAQ;IAZ7C,YAAY,EAAE,WAAW,EAAE,CAAM;IACjC,UAAU,EAAE,QAAQ,EAAE,CAAM;IAC5B,IAAI,qBAA4B;IAChC,SAAS,EAAE,KAAK,GAAG,IAAI,CAAQ;IAC/B,KAAK,qBAA4B;IACjC,KAAK,qBAA4B;IACjC,UAAU,EAAE,OAAO,CAAS;IAC5B,aAAa,EAAE,OAAO,CAAS;IAC/B,YAAY,EAAE,GAAG,CAAC;IAClB,aAAa,EAAE,OAAO,CAAS;IAC/B,MAAM,EAAE,aAAa,CAAC;IAEtB,YAAmB,MAAM,EAAE,UAAU,QAAQ,EAE5C;IAED,IAAI,IAAI,WAEP;CACF;AAED,oBAAY,QAAQ;IAClB,MAAM,IAAA,CAAE,4CAA4C;IACpD,KAAK,IAAA,CAAE,2CAA2C;IAClD,UAAU,IAAA,CAAE,2BAA2B;IACvC,SAAS,IAAA,CAAE,0BAA0B;IACrC,OAAO,IAAA;CACR"}
@@ -0,0 +1,30 @@
1
+ import { BaseTest } from "./core.js";
2
+ import { TEST_CLASS_KEY } from "./symbol.js";
3
+ // Old code, but works fine, so I won't change it for now
4
+ export class TestWrap {
5
+ constructor(target) {
6
+ this.target = target;
7
+ this.dependencies = [];
8
+ this.dependents = [];
9
+ this.skip = new Map();
10
+ this.skipClass = null;
11
+ this.specs = new Map();
12
+ this.hooks = new Map();
13
+ this.isFinished = false; // cleanup ignored
14
+ this.cleanUpCalled = false;
15
+ this.specDetection = false;
16
+ this.config = target[TEST_CLASS_KEY];
17
+ }
18
+ get name() {
19
+ return this.target.name;
20
+ }
21
+ }
22
+ export var HookType;
23
+ (function (HookType) {
24
+ HookType[HookType["Before"] = 0] = "Before";
25
+ HookType[HookType["After"] = 1] = "After";
26
+ HookType[HookType["BeforeEach"] = 2] = "BeforeEach";
27
+ HookType[HookType["AfterEach"] = 3] = "AfterEach";
28
+ HookType[HookType["CleanUp"] = 4] = "CleanUp";
29
+ })(HookType || (HookType = {}));
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC13cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3Qtd3JhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFzQixNQUFNLFdBQVcsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBa0I3Qyx5REFBeUQ7QUFDekQsTUFBTSxPQUFPLFFBQVE7SUFhbkIsWUFBbUIsTUFBMEI7UUFBMUIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFaN0MsaUJBQVksR0FBa0IsRUFBRSxDQUFDO1FBQ2pDLGVBQVUsR0FBZSxFQUFFLENBQUM7UUFDNUIsU0FBSSxHQUFHLElBQUksR0FBRyxFQUFpQixDQUFDO1FBQ2hDLGNBQVMsR0FBaUIsSUFBSSxDQUFDO1FBQy9CLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztRQUNqQyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWlCLENBQUM7UUFDakMsZUFBVSxHQUFZLEtBQUssQ0FBQyxDQUFDLGtCQUFrQjtRQUMvQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUUvQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUk3QixJQUFJLENBQUMsTUFBTSxHQUFJLE1BQTBCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFOLElBQVksUUFNWDtBQU5ELFdBQVksUUFBUTtJQUNsQiwyQ0FBTSxDQUFBO0lBQ04seUNBQUssQ0FBQTtJQUNMLG1EQUFVLENBQUE7SUFDVixpREFBUyxDQUFBO0lBQ1QsNkNBQU8sQ0FBQTtBQUNULENBQUMsRUFOVyxRQUFRLEtBQVIsUUFBUSxRQU1uQiJ9
@@ -17,4 +17,4 @@ export function Executor(fn, timeout) {
17
17
  resolve();
18
18
  });
19
19
  }
20
- //# sourceMappingURL=executor.js.map
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvZXhlY3V0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLFFBQVEsQ0FBQyxFQUFZLEVBQUUsT0FBZTtJQUNwRCxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDM0MsSUFBSSxRQUFRLEdBQTBCLElBQUksQ0FBQztRQUUzQyxJQUFJLENBQUM7WUFDSCxJQUFJLGFBQWEsR0FBRyxFQUFFLEVBQUUsQ0FBQztZQUN6QixJQUFJLGFBQWEsSUFBSSxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3hDLFFBQVEsR0FBRyxVQUFVLENBQUM7b0JBQ3BCLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQywyQkFBMkIsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUMzRCxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBRVosTUFBTSxhQUFhLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ1osQ0FBQztRQUVELFlBQVksQ0FBQyxRQUFTLENBQUMsQ0FBQztRQUV4QixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyJ9
@@ -1,6 +1,8 @@
1
- export declare class ExecutorTest {
1
+ declare const ExecutorTest_base: new () => {} & import("../core.js").BaseTest;
2
+ export declare class ExecutorTest extends ExecutorTest_base {
2
3
  evaluate(): Promise<void>;
3
4
  throws(): Promise<void>;
4
5
  timeout(): Promise<void>;
5
6
  }
7
+ export {};
6
8
  //# sourceMappingURL=executor.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"executor.test.d.ts","sourceRoot":"","sources":["../../src/utils/executor.test.ts"],"names":[],"mappings":"AAIA,qBAAa,YAAY;IAEjB,QAAQ;IAMR,MAAM;IASN,OAAO;CAKd"}
1
+ {"version":3,"file":"executor.test.d.ts","sourceRoot":"","sources":["../../src/utils/executor.test.ts"],"names":[],"mappings":";AAIA,qBAAa,YAAa,SAAQ,iBAAM;IAChC,QAAQ,kBAGb;IAEK,MAAM,kBAMX;IAEK,OAAO,kBAIZ;CACF"}
@@ -1,16 +1,7 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
1
  import * as assert from "assert";
11
- import { Spec } from "../index.js";
12
2
  import { Executor } from "./executor.js";
13
- export class ExecutorTest {
3
+ import { Test } from "../index.js";
4
+ export class ExecutorTest extends Test() {
14
5
  async evaluate() {
15
6
  await Executor(() => 1, 1);
16
7
  await Executor(async () => 1, 1);
@@ -28,22 +19,4 @@ export class ExecutorTest {
28
19
  });
29
20
  }
30
21
  }
31
- __decorate([
32
- Spec(),
33
- __metadata("design:type", Function),
34
- __metadata("design:paramtypes", []),
35
- __metadata("design:returntype", Promise)
36
- ], ExecutorTest.prototype, "evaluate", null);
37
- __decorate([
38
- Spec(),
39
- __metadata("design:type", Function),
40
- __metadata("design:paramtypes", []),
41
- __metadata("design:returntype", Promise)
42
- ], ExecutorTest.prototype, "throws", null);
43
- __decorate([
44
- Spec(),
45
- __metadata("design:type", Function),
46
- __metadata("design:paramtypes", []),
47
- __metadata("design:returntype", Promise)
48
- ], ExecutorTest.prototype, "timeout", null);
49
- //# sourceMappingURL=executor.test.js.map
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0b3IudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9leGVjdXRvci50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVuQyxNQUFNLE9BQU8sWUFBYSxTQUFRLElBQUksRUFBRTtJQUN0QyxLQUFLLENBQUMsUUFBUTtRQUNaLE1BQU0sUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzQixNQUFNLFFBQVEsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU07UUFDVixNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ3hCLE9BQU8sUUFBUSxDQUFDLEdBQUcsRUFBRTtnQkFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDUixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBTztRQUNYLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDeEIsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YifQ==
@@ -1,7 +1,16 @@
1
+ /**
2
+ * Calculates the time difference in nanoseconds
3
+ */
1
4
  export declare class TimeDifference {
2
5
  private startAt;
3
6
  private constructor();
7
+ /**
8
+ * Creates the instance at the begining
9
+ */
4
10
  static begin(): TimeDifference;
11
+ /**
12
+ * Finishes the time, returns data in milliseconds
13
+ */
5
14
  end(): number;
6
15
  }
7
16
  //# sourceMappingURL=time_difference.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"time_difference.d.ts","sourceRoot":"","sources":["../../src/utils/time_difference.ts"],"names":[],"mappings":"AAGA,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAmB;IAElC,OAAO;WAOO,KAAK;IAOnB,GAAG,IAAI,MAAM;CAKd"}
1
+ {"version":3,"file":"time_difference.d.ts","sourceRoot":"","sources":["../../src/utils/time_difference.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAmB;IAElC,OAAO,eAEN;IAED;;OAEG;IACH,OAAc,KAAK,mBAElB;IAED;;OAEG;IACH,GAAG,IAAI,MAAM,CAIZ;CACF"}
@@ -1,13 +1,22 @@
1
+ /**
2
+ * Calculates the time difference in nanoseconds
3
+ */
1
4
  export class TimeDifference {
2
5
  constructor() {
3
6
  this.startAt = process.hrtime();
4
7
  }
8
+ /**
9
+ * Creates the instance at the begining
10
+ */
5
11
  static begin() {
6
12
  return new TimeDifference();
7
13
  }
14
+ /**
15
+ * Finishes the time, returns data in milliseconds
16
+ */
8
17
  end() {
9
18
  let diff = process.hrtime(this.startAt);
10
19
  return diff[0] * 1000 + diff[1] / 1e6;
11
20
  }
12
21
  }
13
- //# sourceMappingURL=time_difference.js.map
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZV9kaWZmZXJlbmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3RpbWVfZGlmZmVyZW5jZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBR3pCO1FBQ0UsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEtBQUs7UUFDakIsT0FBTyxJQUFJLGNBQWMsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNILEdBQUc7UUFDRCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUV4QyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUN4QyxDQUFDO0NBQ0YifQ==
@@ -1,4 +1,6 @@
1
- export declare class TimeDifferenceTest {
1
+ declare const TimeDifferenceTest_base: new () => {} & import("../core.js").BaseTest;
2
+ export declare class TimeDifferenceTest extends TimeDifferenceTest_base {
2
3
  evaluate(): Promise<void>;
3
4
  }
5
+ export {};
4
6
  //# sourceMappingURL=time_difference.test.d.ts.map