nole 3.0.0 → 3.2.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 (84) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +514 -294
  3. package/bin/nole.js +145 -110
  4. package/dist/cjs/const.js +45 -0
  5. package/dist/cjs/core.js +61 -0
  6. package/dist/cjs/dynamic.js +56 -0
  7. package/dist/cjs/handle/after-each-hooks.js +29 -0
  8. package/dist/cjs/handle/after-hooks.js +27 -0
  9. package/dist/cjs/handle/before-each-hooks.js +29 -0
  10. package/dist/cjs/handle/before-hooks.js +37 -0
  11. package/dist/cjs/handle/cleanup-hooks.js +37 -0
  12. package/dist/cjs/handle/specs.js +52 -0
  13. package/dist/cjs/index.js +14 -0
  14. package/dist/cjs/package.json +1 -0
  15. package/dist/cjs/run.js +216 -0
  16. package/dist/cjs/symbol.js +6 -0
  17. package/dist/cjs/test-wrap.js +33 -0
  18. package/dist/cjs/utils/executor.js +23 -0
  19. package/dist/cjs/utils/time_difference.js +26 -0
  20. package/dist/cjs/utils/time_factor.js +31 -0
  21. package/dist/core.d.ts +3 -1
  22. package/dist/core.d.ts.map +1 -1
  23. package/dist/core.js +2 -2
  24. package/dist/dynamic.d.ts +2 -0
  25. package/dist/dynamic.d.ts.map +1 -1
  26. package/dist/dynamic.js +16 -1
  27. package/dist/handle/before-hooks.d.ts.map +1 -1
  28. package/dist/handle/before-hooks.js +12 -2
  29. package/dist/handle/specs.d.ts.map +1 -1
  30. package/dist/handle/specs.js +12 -3
  31. package/dist/index.d.ts +1 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2 -2
  34. package/dist/run.d.ts.map +1 -1
  35. package/dist/run.js +16 -7
  36. package/dist/symbol.d.ts +1 -0
  37. package/dist/symbol.d.ts.map +1 -1
  38. package/dist/symbol.js +3 -2
  39. package/dist/test-wrap.d.ts +1 -0
  40. package/dist/test-wrap.d.ts.map +1 -1
  41. package/dist/test-wrap.js +1 -1
  42. package/dist/utils/time_difference.d.ts.map +1 -1
  43. package/package.json +68 -57
  44. package/dist/utils/executor.test.d.ts +0 -8
  45. package/dist/utils/executor.test.d.ts.map +0 -1
  46. package/dist/utils/executor.test.js +0 -22
  47. package/dist/utils/time_difference.test.d.ts +0 -6
  48. package/dist/utils/time_difference.test.d.ts.map +0 -1
  49. package/dist/utils/time_difference.test.js +0 -11
  50. package/dist/utils/time_factor.test.d.ts +0 -6
  51. package/dist/utils/time_factor.test.d.ts.map +0 -1
  52. package/dist/utils/time_factor.test.js +0 -27
  53. package/src/const.ts +0 -11
  54. package/src/core.ts +0 -89
  55. package/src/dynamic.ts +0 -53
  56. package/src/handle/after-each-hooks.ts +0 -41
  57. package/src/handle/after-hooks.ts +0 -38
  58. package/src/handle/before-each-hooks.ts +0 -40
  59. package/src/handle/before-hooks.ts +0 -39
  60. package/src/handle/cleanup-hooks.ts +0 -55
  61. package/src/handle/specs.ts +0 -68
  62. package/src/index.ts +0 -3
  63. package/src/run.ts +0 -259
  64. package/src/symbol.ts +0 -1
  65. package/src/test-wrap.ts +0 -48
  66. package/src/utils/executor.test.ts +0 -24
  67. package/src/utils/executor.ts +0 -22
  68. package/src/utils/time_difference.test.ts +0 -11
  69. package/src/utils/time_difference.ts +0 -26
  70. package/src/utils/time_factor.test.ts +0 -28
  71. package/src/utils/time_factor.ts +0 -33
  72. package/test/basic.test.ts +0 -23
  73. package/test/before.test.ts +0 -41
  74. package/test/clean-up.test.ts +0 -48
  75. package/test/dynamic-skip.test.ts +0 -6
  76. package/test/dynamic.test.ts +0 -28
  77. package/test/extend.test.ts +0 -43
  78. package/test/hook.test.ts +0 -26
  79. package/test/multi-dependency.test.ts +0 -43
  80. package/test/multiple-uppercased-chars.test.ts +0 -20
  81. package/test/skip-all.test.ts +0 -10
  82. package/test/tsconfig.json +0 -24
  83. package/test/turkish-chars.test.ts +0 -20
  84. package/tsconfig.json +0 -16
package/bin/nole.js CHANGED
@@ -1,110 +1,145 @@
1
- #!/usr/bin/env node
2
-
3
- import program from "commander";
4
- import { glob } from "glob";
5
- import path from "path";
6
- import fs from "fs";
7
- import colors from "colors/safe.js";
8
- import { register } from "tsx/esm/api";
9
- const unregister = register();
10
-
11
- import { TimeDifference } from "../dist/utils/time_difference.js";
12
- import { Delay, TimeResolve } from "../dist/utils/time_factor.js";
13
- import { TEST_CLASS_KEY } from "../dist/symbol.js";
14
- import { ManualRun } from "../dist/run.js";
15
-
16
- const pkg = JSON.parse(
17
- fs.readFileSync(new URL("../package.json", import.meta.url)).toString(),
18
- );
19
-
20
- program.usage("<glob> ...").version(pkg.version).parse(process.argv);
21
-
22
- if (!program.args.length) {
23
- program.help();
24
- } else {
25
- let time = TimeDifference.begin();
26
-
27
- Promise.all(program.args.map((arg) => glob(arg)))
28
- .then(async (list) => {
29
- const fileList = [];
30
-
31
- for (const item of list) {
32
- while (item.length) {
33
- fileList.push(path.resolve(process.cwd(), item.pop()));
34
- }
35
- }
36
-
37
- if (!fileList.length) {
38
- failed("0 files found");
39
- process.exit(1);
40
- }
41
-
42
- const file = time.end();
43
-
44
- const tests = new Set();
45
-
46
- for (const file of fileList) {
47
- const module = await import(`file://${file}`);
48
-
49
- for (const key in module) {
50
- const value = module[key];
51
-
52
- if (!value) {
53
- continue;
54
- }
55
-
56
- if (!value[TEST_CLASS_KEY]) {
57
- continue;
58
- }
59
-
60
- tests.add(value);
61
- }
62
- }
63
-
64
- const prop = time.end();
65
-
66
- let dependencyResolveWaitPeriod = +process.env.NOLE_WAIT_PERIOD;
67
-
68
- if (
69
- isNaN(dependencyResolveWaitPeriod) ||
70
- dependencyResolveWaitPeriod < 0
71
- ) {
72
- dependencyResolveWaitPeriod = 500;
73
- }
74
-
75
- console.log("Nole tests v" + pkg.version);
76
-
77
- try {
78
- await Delay(dependencyResolveWaitPeriod);
79
-
80
- try {
81
- await ManualRun(tests);
82
- } catch (e) {
83
- if (e.message === "No specs found") {
84
- log(`${FAILED_TEXT} no specs found`);
85
- }
86
- throw e;
87
- }
88
-
89
- console.log(" discover: %s", TimeResolve(file));
90
- console.log(" resolve: %s", TimeResolve(prop - file));
91
- console.log(
92
- " tests: %s",
93
- TimeResolve(time.end() - prop - dependencyResolveWaitPeriod),
94
- );
95
- process.exit(0);
96
- } catch (e) {
97
- console.error(e);
98
- process.exit(1);
99
- }
100
- })
101
- .catch((e) => {
102
- failed("Error occurred on resolving files");
103
- console.error(e.stack || e);
104
- process.exit(1);
105
- });
106
- }
107
-
108
- function failed(message) {
109
- console.error(colors.bold(colors.red(" (failed) " + message)));
110
- }
1
+ #!/usr/bin/env node
2
+
3
+ import { program } from "commander";
4
+ import { glob } from "glob";
5
+ import path from "path";
6
+ import fs from "fs";
7
+ import colors from "colors/safe.js";
8
+ import { register } from "tsx/esm/api";
9
+ import { require as tsxRequire } from "tsx/cjs/api";
10
+ const unregister = register();
11
+
12
+ import { TimeDifference } from "../dist/utils/time_difference.js";
13
+ import { Delay, TimeResolve } from "../dist/utils/time_factor.js";
14
+ import { TEST_CLASS_KEY } from "../dist/symbol.js";
15
+ import { ManualRun } from "../dist/run.js";
16
+
17
+ const pkg = JSON.parse(
18
+ fs.readFileSync(new URL("../package.json", import.meta.url)).toString(),
19
+ );
20
+
21
+ program
22
+ .usage("<glob> ...")
23
+ .allowExcessArguments(true)
24
+ .version(pkg.version)
25
+ .parse(process.argv);
26
+
27
+ if (!program.args.length) {
28
+ program.help();
29
+ } else {
30
+ let time = TimeDifference.begin();
31
+
32
+ Promise.all(program.args.map((arg) => glob(arg)))
33
+ .then(async (list) => {
34
+ const fileList = [];
35
+
36
+ for (const item of list) {
37
+ while (item.length) {
38
+ fileList.push(path.resolve(process.cwd(), item.pop()));
39
+ }
40
+ }
41
+
42
+ if (!fileList.length) {
43
+ failed("0 files found");
44
+ process.exit(1);
45
+ }
46
+
47
+ const file = time.end();
48
+
49
+ const tests = new Set();
50
+
51
+ for (const file of fileList) {
52
+ // ESM files are loaded with import(); CommonJS files (their nearest
53
+ // package.json is not "type": "module") are loaded with require(), so
54
+ // nole can run in CommonJS environments too.
55
+ const module = isEsmFile(file)
56
+ ? await import(`file://${file}`)
57
+ : tsxRequire(file, import.meta.url);
58
+
59
+ for (const key in module) {
60
+ const value = module[key];
61
+
62
+ if (!value) {
63
+ continue;
64
+ }
65
+
66
+ if (!value[TEST_CLASS_KEY]) {
67
+ continue;
68
+ }
69
+
70
+ tests.add(value);
71
+ }
72
+ }
73
+
74
+ const prop = time.end();
75
+
76
+ let dependencyResolveWaitPeriod = +process.env.NOLE_WAIT_PERIOD;
77
+
78
+ if (
79
+ isNaN(dependencyResolveWaitPeriod) ||
80
+ dependencyResolveWaitPeriod < 0
81
+ ) {
82
+ dependencyResolveWaitPeriod = 500;
83
+ }
84
+
85
+ console.log("Nole tests v" + pkg.version);
86
+
87
+ try {
88
+ await Delay(dependencyResolveWaitPeriod);
89
+
90
+ try {
91
+ await ManualRun(tests);
92
+ } catch (e) {
93
+ if (e.message === "No specs found") {
94
+ log(`${FAILED_TEXT} no specs found`);
95
+ }
96
+ throw e;
97
+ }
98
+
99
+ console.log(" discover: %s", TimeResolve(file));
100
+ console.log(" resolve: %s", TimeResolve(prop - file));
101
+ console.log(
102
+ " tests: %s",
103
+ TimeResolve(time.end() - prop - dependencyResolveWaitPeriod),
104
+ );
105
+ process.exit(0);
106
+ } catch (e) {
107
+ console.error(e);
108
+ process.exit(1);
109
+ }
110
+ })
111
+ .catch((e) => {
112
+ failed("Error occurred on resolving files");
113
+ console.error(e.stack || e);
114
+ process.exit(1);
115
+ });
116
+ }
117
+
118
+ function failed(message) {
119
+ console.error(colors.bold(colors.red(" (failed) " + message)));
120
+ }
121
+
122
+ // Mirrors Node's own resolution: explicit extensions win, otherwise the nearest
123
+ // package.json "type" decides. Missing/other type means CommonJS.
124
+ function isEsmFile(file) {
125
+ if (file.endsWith(".mts") || file.endsWith(".mjs")) return true;
126
+ if (file.endsWith(".cts") || file.endsWith(".cjs")) return false;
127
+
128
+ let dir = path.dirname(file);
129
+
130
+ while (true) {
131
+ const pkgPath = path.join(dir, "package.json");
132
+
133
+ if (fs.existsSync(pkgPath)) {
134
+ try {
135
+ return JSON.parse(fs.readFileSync(pkgPath).toString()).type === "module";
136
+ } catch {
137
+ return false;
138
+ }
139
+ }
140
+
141
+ const parent = path.dirname(dir);
142
+ if (parent === dir) return false;
143
+ dir = parent;
144
+ }
145
+ }
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.DEFAULT_TIMEOUT = exports.HOOK_FAILED_TEXT = exports.FAILED_TEXT = exports.DYNAMIC_SKIP_TEXT = exports.SKIP_TEXT = exports.OK_TEXT = exports.colors = void 0;
37
+ const clrs = __importStar(require("colors/safe.js"));
38
+ exports.colors = clrs.default;
39
+ exports.OK_TEXT = exports.colors.bold(exports.colors.green(" (ok) "));
40
+ exports.SKIP_TEXT = exports.colors.bold(exports.colors.yellow(" (skip) "));
41
+ exports.DYNAMIC_SKIP_TEXT = exports.colors.bold(exports.colors.blue(" (dskip) "));
42
+ exports.FAILED_TEXT = exports.colors.bold(exports.colors.red(" (failed) "));
43
+ exports.HOOK_FAILED_TEXT = exports.colors.bold(exports.colors.red(" (hook failed) "));
44
+ exports.DEFAULT_TIMEOUT = 5000;
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsTUFBWSxJQUFJLDJDQUF1QjtBQUUxQixRQUFBLE1BQU0sR0FBSSxJQUFZLENBQUMsT0FBTyxDQUFDO0FBRS9CLFFBQUEsT0FBTyxHQUFHLFFBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFBLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNsRCxRQUFBLFNBQVMsR0FBRyxRQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBQSxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDckQsUUFBQSxpQkFBaUIsR0FBRyxRQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7QUFDNUQsUUFBQSxXQUFXLEdBQUcsUUFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQUEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ3BELFFBQUEsZ0JBQWdCLEdBQUcsUUFBQSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQUEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7QUFFOUQsUUFBQSxlQUFlLEdBQUcsSUFBSSxDQUFDIn0=
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.BaseTest = void 0;
5
+ exports.Test = Test;
6
+ const symbol_js_1 = require("./symbol.js");
7
+ class BaseTest {
8
+ }
9
+ exports.BaseTest = BaseTest;
10
+ _a = symbol_js_1.TEST_CLASS_KEY;
11
+ BaseTest[_a] = {
12
+ dependencies: new Map(),
13
+ timeout: 5000,
14
+ };
15
+ function Test({ dependencies, skip, before, after, timeout, } = {}) {
16
+ var _b, _c, _d;
17
+ function wrap(superClassInfo) {
18
+ const deps = dependencies ? dependencies : {};
19
+ const classInfo = { ...superClassInfo };
20
+ if (!classInfo.dependencies) {
21
+ classInfo.dependencies = new Map();
22
+ }
23
+ else {
24
+ classInfo.dependencies = new Map(classInfo.dependencies);
25
+ }
26
+ if (before !== undefined) {
27
+ classInfo.before = before;
28
+ }
29
+ if (after !== undefined) {
30
+ classInfo.after = after;
31
+ }
32
+ for (const key of Object.keys(deps)) {
33
+ const config = deps[key];
34
+ if (symbol_js_1.TEST_CLASS_KEY in config) {
35
+ classInfo.dependencies.set(key, (() => config));
36
+ }
37
+ else if (typeof config === "function") {
38
+ classInfo.dependencies.set(key, config);
39
+ }
40
+ else {
41
+ throw new Error(`Invalid dependency configuration for key ${key}`);
42
+ }
43
+ }
44
+ if (skip !== undefined) {
45
+ classInfo.skip = skip;
46
+ }
47
+ if (timeout !== undefined) {
48
+ classInfo.timeout = timeout;
49
+ }
50
+ return classInfo;
51
+ }
52
+ return _b = class extends (_c = BaseTest) {
53
+ constructor() {
54
+ super();
55
+ }
56
+ },
57
+ _d = symbol_js_1.TEST_CLASS_KEY,
58
+ _b[_d] = wrap(Reflect.get(_c, symbol_js_1.TEST_CLASS_KEY, _b)),
59
+ _b;
60
+ }
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMkNBQWlFO0FBV2pFO0NBT0M7O0tBSlMsMEJBQWM7QUFBZixZQUFnQixHQUFrQjtJQUN2QyxZQUFZLEVBQUUsSUFBSSxHQUFHLEVBQUU7SUFDdkIsT0FBTyxFQUFFLElBQUk7Q0FDZCxDQUFDO0FBTUosY0FFRSxFQUNBLFlBQVksRUFDWixJQUFJLEVBQ0osTUFBTSxFQUNOLEtBQUssRUFDTCxPQUFPLEdBQ1IsR0FNRyxFQUFFOztJQUtKLFNBQVMsSUFBSSxDQUFDLGNBQTZCO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBRSxFQUFXLENBQUM7UUFFeEQsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBRXhDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUIsU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLFNBQVMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQzVCLENBQUM7UUFFRCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QixTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDO1FBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXpCLElBQUksMEJBQWMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDN0IsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFRLENBQUMsQ0FBQztZQUN6RCxDQUFDO2lCQUFNLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ3hDLFNBQVMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUMxQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNyRSxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3ZCLFNBQVMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLENBQUM7UUFFRCxJQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMxQixTQUFTLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUM5QixDQUFDO1FBRUQsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVELE9BQU8sS0FBQSxLQUFNLFNBQVEsTUFBQSxRQUFRLENBQUE7WUFHM0I7Z0JBQ0UsS0FBSyxFQUFFLENBQUM7WUFDVixDQUFDO1NBQ0Y7YUFMUywwQkFBYztRQUFmLE1BQWdCLEdBQWtCLElBQUksQ0FBQyxnQkFBTSwwQkFBYyxLQUFmLENBQWtCO1VBSzdCLENBQUM7QUFDN0MsQ0FBQyJ9
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.skipTest = skipTest;
4
+ exports.skipClass = skipClass;
5
+ exports.isSkipped = isSkipped;
6
+ exports.getTest = getTest;
7
+ exports.addTest = addTest;
8
+ const run_js_1 = require("./run.js");
9
+ const symbol_js_1 = require("./symbol.js");
10
+ const test_wrap_js_1 = require("./test-wrap.js");
11
+ function skipTest(reason) {
12
+ throw new NoleManualSkip(reason);
13
+ }
14
+ function skipClass(reason) {
15
+ throw new NoleManualClassSkip(reason);
16
+ }
17
+ function isSkipped(instance) {
18
+ const info = instance[symbol_js_1.TEST_INSTANCE_INFO];
19
+ return !!info?.skip;
20
+ }
21
+ class NoleManualSkip extends Error {
22
+ constructor(reason) {
23
+ super(`Dynamicly skipped! ${reason}`);
24
+ this.reason = reason;
25
+ this._nole_anchor = 1;
26
+ }
27
+ }
28
+ class NoleManualClassSkip extends Error {
29
+ constructor(reason) {
30
+ super(`Dynamicly skipped! ${reason}`);
31
+ this.reason = reason;
32
+ this._nole_anchor = 2;
33
+ }
34
+ }
35
+ function getTest(test) {
36
+ const testWrap = (0, run_js_1.getTestMap)().get(test());
37
+ if (!testWrap) {
38
+ return null;
39
+ }
40
+ (0, run_js_1.createInstanceIfNotExists)(testWrap);
41
+ return testWrap.testInstance;
42
+ }
43
+ function addTest(test) {
44
+ const testMap = (0, run_js_1.getTestMap)();
45
+ const remainingTests = (0, run_js_1.getFutureTestMap)();
46
+ const testClass = test();
47
+ if (testMap.has(testClass)) {
48
+ return false;
49
+ }
50
+ const testWrap = new test_wrap_js_1.TestWrap(testClass);
51
+ remainingTests.set(testClass, testWrap);
52
+ testMap.set(testClass, testWrap);
53
+ (0, run_js_1.updateInformationForClass)(testClass, testWrap, testMap);
54
+ return true;
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9keW5hbWljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQSxxQ0FLa0I7QUFDbEIsMkNBQWlFO0FBQ2pFLGlEQUEwQztBQUUxQyxrQkFBeUIsTUFBZTtJQUN0QyxNQUFNLElBQUksY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxtQkFBMEIsTUFBZTtJQUN2QyxNQUFNLElBQUksbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELG1CQUEwQixRQUFrQjtJQUMxQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsOEJBQWtCLENBQUMsQ0FBQztJQUUxQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ3RCLENBQUM7QUFFRCxNQUFNLGNBQWUsU0FBUSxLQUFLO0lBR2hDLFlBQW1CLE1BQWU7UUFDaEMsS0FBSyxDQUFDLHNCQUFzQixNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRHJCLFdBQU0sR0FBTixNQUFNLENBQVM7UUFGbEMsaUJBQVksR0FBRyxDQUFDLENBQUM7SUFJakIsQ0FBQztDQUNGO0FBRUQsTUFBTSxtQkFBb0IsU0FBUSxLQUFLO0lBR3JDLFlBQW1CLE1BQWU7UUFDaEMsS0FBSyxDQUFDLHNCQUFzQixNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBRHJCLFdBQU0sR0FBTixNQUFNLENBQVM7UUFGbEMsaUJBQVksR0FBRyxDQUFDLENBQUM7SUFJakIsQ0FBQztDQUNGO0FBRUQsaUJBQ0UsSUFBdUI7SUFFdkIsTUFBTSxRQUFRLEdBQUcsSUFBQSxtQkFBVSxHQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBUyxDQUF5QixDQUFDO0lBRXpFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUEsa0NBQXlCLEVBQUMsUUFBUSxDQUFDLENBQUM7SUFFcEMsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBQy9CLENBQUM7QUFFRCxpQkFBNEMsSUFBdUI7SUFDakUsTUFBTSxPQUFPLEdBQUcsSUFBQSxtQkFBVSxHQUFFLENBQUM7SUFDN0IsTUFBTSxjQUFjLEdBQUcsSUFBQSx5QkFBZ0IsR0FBRSxDQUFDO0lBRTFDLE1BQU0sU0FBUyxHQUFHLElBQUksRUFBRSxDQUFDO0lBRXpCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksdUJBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN6QyxjQUFjLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVqQyxJQUFBLGtDQUF5QixFQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFeEQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIn0=
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleAfterEachHooks = handleAfterEachHooks;
4
+ const test_wrap_js_1 = require("../test-wrap.js");
5
+ const executor_js_1 = require("../utils/executor.js");
6
+ const time_factor_js_1 = require("../utils/time_factor.js");
7
+ const const_js_1 = require("../const.js");
8
+ async function handleAfterEachHooks(test) {
9
+ const timeout = test.config.timeout ?? const_js_1.DEFAULT_TIMEOUT;
10
+ for (let [propertyKey, hook] of test.hooks.entries()) {
11
+ if (hook.type != test_wrap_js_1.HookType.AfterEach)
12
+ continue;
13
+ let hookName = const_js_1.colors.bold(const_js_1.colors.yellow(test.name +
14
+ (propertyKey != "afterEach"
15
+ ? `.${propertyKey}:afterEach`
16
+ : ":afterEach")));
17
+ try {
18
+ await (0, executor_js_1.Executor)(test.testInstance[propertyKey].bind(test.testInstance), timeout);
19
+ let timeText = (0, time_factor_js_1.TimeFactor)(0, timeout);
20
+ console.log(`${const_js_1.OK_TEXT} ${timeText} ${hookName}()`);
21
+ }
22
+ catch (e) {
23
+ console.error(`${const_js_1.HOOK_FAILED_TEXT} ${hookName}()`);
24
+ console.error(e?.stack ?? e);
25
+ throw e;
26
+ }
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZ0ZXItZWFjaC1ob29rcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oYW5kbGUvYWZ0ZXItZWFjaC1ob29rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrREFBcUQ7QUFDckQsc0RBQWdEO0FBQ2hELDREQUFxRDtBQUNyRCwwQ0FLcUI7QUFFZCxLQUFLLCtCQUErQixJQUFjO0lBQ3ZELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLDBCQUFlLENBQUM7SUFFdkQsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksdUJBQVEsQ0FBQyxTQUFTO1lBQUUsU0FBUztRQUU5QyxJQUFJLFFBQVEsR0FBRyxpQkFBTSxDQUFDLElBQUksQ0FDeEIsaUJBQU0sQ0FBQyxNQUFNLENBQ1gsSUFBSSxDQUFDLElBQUk7WUFDUCxDQUFDLFdBQVcsSUFBSSxXQUFXO2dCQUN6QixDQUFDLENBQUMsSUFBSSxXQUFXLFlBQVk7Z0JBQzdCLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FDcEIsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFBLHNCQUFRLEVBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUN0RCxPQUFPLENBQ1IsQ0FBQztZQUVGLElBQUksUUFBUSxHQUFHLElBQUEsMkJBQVUsRUFBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGtCQUFPLElBQUksUUFBUSxJQUFJLFFBQVEsSUFBSSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsMkJBQWdCLElBQUksUUFBUSxJQUFJLENBQUMsQ0FBQztZQUNuRCxPQUFPLENBQUMsS0FBSyxDQUFFLENBQVMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMifQ==
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleAfterHooks = handleAfterHooks;
4
+ const test_wrap_js_1 = require("../test-wrap.js");
5
+ const executor_js_1 = require("../utils/executor.js");
6
+ const time_factor_js_1 = require("../utils/time_factor.js");
7
+ const const_js_1 = require("../const.js");
8
+ async function handleAfterHooks(test) {
9
+ const timeout = test.config.timeout ?? const_js_1.DEFAULT_TIMEOUT;
10
+ for (let [propertyKey, hook] of test.hooks.entries()) {
11
+ if (hook.type != test_wrap_js_1.HookType.After)
12
+ continue;
13
+ let hookName = const_js_1.colors.bold(const_js_1.colors.yellow(test.name +
14
+ (propertyKey != "after" ? `.${propertyKey}:after` : ":after")));
15
+ try {
16
+ await (0, executor_js_1.Executor)(test.testInstance[propertyKey].bind(test.testInstance), timeout);
17
+ let timeText = (0, time_factor_js_1.TimeFactor)(0, timeout);
18
+ console.log(`${const_js_1.OK_TEXT} ${timeText} ${hookName}()`);
19
+ }
20
+ catch (e) {
21
+ console.error(`${const_js_1.HOOK_FAILED_TEXT} ${hookName}()`);
22
+ console.error(e?.stack ?? e);
23
+ throw e;
24
+ }
25
+ }
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZ0ZXItaG9va3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGFuZGxlL2FmdGVyLWhvb2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGtEQUFxRDtBQUNyRCxzREFBZ0Q7QUFDaEQsNERBQXFEO0FBQ3JELDBDQUtxQjtBQUVkLEtBQUssMkJBQTJCLElBQWM7SUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksMEJBQWUsQ0FBQztJQUV2RCxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3JELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSx1QkFBUSxDQUFDLEtBQUs7WUFBRSxTQUFTO1FBRTFDLElBQUksUUFBUSxHQUFHLGlCQUFNLENBQUMsSUFBSSxDQUN4QixpQkFBTSxDQUFDLE1BQU0sQ0FDWCxJQUFJLENBQUMsSUFBSTtZQUNQLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQ2hFLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQztZQUNILE1BQU0sSUFBQSxzQkFBUSxFQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFDdEQsT0FBTyxDQUNSLENBQUM7WUFDRixJQUFJLFFBQVEsR0FBRyxJQUFBLDJCQUFVLEVBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRXRDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxrQkFBTyxJQUFJLFFBQVEsSUFBSSxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLDJCQUFnQixJQUFJLFFBQVEsSUFBSSxDQUFDLENBQUM7WUFDbkQsT0FBTyxDQUFDLEtBQUssQ0FBRSxDQUFTLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIn0=
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleBeforeEachHooks = handleBeforeEachHooks;
4
+ const test_wrap_js_1 = require("../test-wrap.js");
5
+ const executor_js_1 = require("../utils/executor.js");
6
+ const time_factor_js_1 = require("../utils/time_factor.js");
7
+ const const_js_1 = require("../const.js");
8
+ async function handleBeforeEachHooks(test) {
9
+ const timeout = test.config.timeout ?? const_js_1.DEFAULT_TIMEOUT;
10
+ for (let [propertyKey, hook] of test.hooks.entries()) {
11
+ if (hook.type != test_wrap_js_1.HookType.BeforeEach)
12
+ continue;
13
+ let hookName = const_js_1.colors.bold(const_js_1.colors.yellow(test.name +
14
+ (propertyKey != "beforeEach"
15
+ ? `.${propertyKey}:beforeEach`
16
+ : ":beforeEach")));
17
+ try {
18
+ await (0, executor_js_1.Executor)(test.testInstance[propertyKey].bind(test.testInstance), timeout);
19
+ let timeText = (0, time_factor_js_1.TimeFactor)(0, timeout);
20
+ console.log(`${const_js_1.OK_TEXT} ${timeText} ${hookName}()`);
21
+ }
22
+ catch (e) {
23
+ console.error(`${const_js_1.HOOK_FAILED_TEXT} ${hookName}()`);
24
+ console.error(e?.stack ?? e);
25
+ throw e;
26
+ }
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmb3JlLWVhY2gtaG9va3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGFuZGxlL2JlZm9yZS1lYWNoLWhvb2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGtEQUFxRDtBQUNyRCxzREFBZ0Q7QUFDaEQsNERBQXFEO0FBQ3JELDBDQUtxQjtBQUVkLEtBQUssZ0NBQWdDLElBQWM7SUFDeEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksMEJBQWUsQ0FBQztJQUV2RCxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3JELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSx1QkFBUSxDQUFDLFVBQVU7WUFBRSxTQUFTO1FBQy9DLElBQUksUUFBUSxHQUFHLGlCQUFNLENBQUMsSUFBSSxDQUN4QixpQkFBTSxDQUFDLE1BQU0sQ0FDWCxJQUFJLENBQUMsSUFBSTtZQUNQLENBQUMsV0FBVyxJQUFJLFlBQVk7Z0JBQzFCLENBQUMsQ0FBQyxJQUFJLFdBQVcsYUFBYTtnQkFDOUIsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUNyQixDQUNGLENBQUM7UUFFRixJQUFJLENBQUM7WUFDSCxNQUFNLElBQUEsc0JBQVEsRUFDWixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQ3RELE9BQU8sQ0FDUixDQUFDO1lBRUYsSUFBSSxRQUFRLEdBQUcsSUFBQSwyQkFBVSxFQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUV0QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsa0JBQU8sSUFBSSxRQUFRLElBQUksUUFBUSxJQUFJLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRywyQkFBZ0IsSUFBSSxRQUFRLElBQUksQ0FBQyxDQUFDO1lBQ25ELE9BQU8sQ0FBQyxLQUFLLENBQUUsQ0FBUyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyJ9
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleBeforeHooks = handleBeforeHooks;
4
+ const test_wrap_js_1 = require("../test-wrap.js");
5
+ const executor_js_1 = require("../utils/executor.js");
6
+ const time_factor_js_1 = require("../utils/time_factor.js");
7
+ const const_js_1 = require("../const.js");
8
+ async function handleBeforeHooks(test) {
9
+ const timeout = test.config.timeout ?? const_js_1.DEFAULT_TIMEOUT;
10
+ for (let [propertyKey, hook] of test.hooks.entries()) {
11
+ if (hook.type != test_wrap_js_1.HookType.Before)
12
+ continue;
13
+ let hookName = const_js_1.colors.bold(const_js_1.colors.yellow(test.name +
14
+ (propertyKey != "before" ? `.${propertyKey}:before` : ":before")));
15
+ try {
16
+ await (0, executor_js_1.Executor)(test.testInstance[propertyKey].bind(test.testInstance), timeout);
17
+ let timeText = (0, time_factor_js_1.TimeFactor)(0, timeout);
18
+ console.log(`${const_js_1.OK_TEXT} ${timeText} ${hookName}()`);
19
+ }
20
+ catch (e) {
21
+ const anchor = e?._nole_anchor;
22
+ if (anchor === 1) {
23
+ throw new Error("You cannot just skip the before hook! Probably you ment to skip the whole test class!");
24
+ }
25
+ else if (anchor === 2) {
26
+ let reason = e.reason;
27
+ test.skipClass = { reason, origin: ":" + propertyKey };
28
+ console.log(`${const_js_1.DYNAMIC_SKIP_TEXT} ${" ".repeat(8)} ${hookName}() ${reason ? "{" + reason + "}" : ""}`);
29
+ continue;
30
+ }
31
+ console.error(`${const_js_1.HOOK_FAILED_TEXT} ${hookName}()`);
32
+ console.error(e?.stack ?? e);
33
+ throw e;
34
+ }
35
+ }
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmb3JlLWhvb2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hhbmRsZS9iZWZvcmUtaG9va3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsa0RBQXFEO0FBQ3JELHNEQUFnRDtBQUNoRCw0REFBcUQ7QUFDckQsMENBTXFCO0FBRWQsS0FBSyw0QkFBNEIsSUFBYztJQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSwwQkFBZSxDQUFDO0lBRXZELEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLHVCQUFRLENBQUMsTUFBTTtZQUFFLFNBQVM7UUFFM0MsSUFBSSxRQUFRLEdBQUcsaUJBQU0sQ0FBQyxJQUFJLENBQ3hCLGlCQUFNLENBQUMsTUFBTSxDQUNYLElBQUksQ0FBQyxJQUFJO1lBQ1AsQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLFdBQVcsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FDbkUsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFBLHNCQUFRLEVBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUN0RCxPQUFPLENBQ1IsQ0FBQztZQUVGLElBQUksUUFBUSxHQUFHLElBQUEsMkJBQVUsRUFBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGtCQUFPLElBQUksUUFBUSxJQUFJLFFBQVEsSUFBSSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxNQUFNLE1BQU0sR0FBSSxDQUFTLEVBQUUsWUFBWSxDQUFDO1lBQ3hDLElBQUksTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUNiLHVGQUF1RixDQUN4RixDQUFDO1lBQ0osQ0FBQztpQkFBTSxJQUFJLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxNQUFNLEdBQUksQ0FBUyxDQUFDLE1BQU0sQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxHQUFHLFdBQVcsRUFBRSxDQUFDO2dCQUN2RCxPQUFPLENBQUMsR0FBRyxDQUNULEdBQUcsNEJBQWlCLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLE1BQy9DLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQ2hDLEVBQUUsQ0FDSCxDQUFDO2dCQUNGLFNBQVM7WUFDWCxDQUFDO1lBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLDJCQUFnQixJQUFJLFFBQVEsSUFBSSxDQUFDLENBQUM7WUFDbkQsT0FBTyxDQUFDLEtBQUssQ0FBRSxDQUFTLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIn0=
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleCleanUp = handleCleanUp;
4
+ const test_wrap_js_1 = require("../test-wrap.js");
5
+ const executor_js_1 = require("../utils/executor.js");
6
+ const time_difference_js_1 = require("../utils/time_difference.js");
7
+ const time_factor_js_1 = require("../utils/time_factor.js");
8
+ const const_js_1 = require("../const.js");
9
+ async function handleCleanUp(test) {
10
+ const timeout = test.config.timeout ?? const_js_1.DEFAULT_TIMEOUT;
11
+ if (test.cleanUpCalled)
12
+ return;
13
+ if (!test.dependents.every((dependent) => dependent.isFinished && dependent.cleanUpCalled))
14
+ return;
15
+ test.cleanUpCalled = true;
16
+ for (let [propertyKey, hook] of test.hooks.entries()) {
17
+ if (hook.type != test_wrap_js_1.HookType.CleanUp)
18
+ continue;
19
+ let hookName = const_js_1.colors.bold(const_js_1.colors.yellow(test.name +
20
+ (propertyKey != "cleanUp" ? `.${propertyKey}:cleanUp` : ":cleanUp")));
21
+ let start = time_difference_js_1.TimeDifference.begin();
22
+ try {
23
+ await (0, executor_js_1.Executor)(test.testInstance[propertyKey].bind(test.testInstance), timeout);
24
+ let timeText = (0, time_factor_js_1.TimeFactor)(start.end(), timeout);
25
+ console.log(`${const_js_1.OK_TEXT} ${timeText} ${hookName}()`);
26
+ }
27
+ catch (e) {
28
+ console.error(`${const_js_1.HOOK_FAILED_TEXT} ${hookName}()`);
29
+ console.error(e?.stack ?? e);
30
+ throw e;
31
+ }
32
+ }
33
+ for (let tree of test.dependencies) {
34
+ await handleCleanUp(tree.dependency);
35
+ }
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW51cC1ob29rcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oYW5kbGUvY2xlYW51cC1ob29rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrREFBcUQ7QUFDckQsc0RBQWdEO0FBQ2hELG9FQUE2RDtBQUM3RCw0REFBcUQ7QUFDckQsMENBS3FCO0FBRWQsS0FBSyx3QkFBd0IsSUFBYztJQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSwwQkFBZSxDQUFDO0lBRXZELElBQUksSUFBSSxDQUFDLGFBQWE7UUFBRSxPQUFPO0lBQy9CLElBQ0UsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FDcEIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDLGFBQWEsQ0FDL0Q7UUFFRCxPQUFPO0lBRVQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFFMUIsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksdUJBQVEsQ0FBQyxPQUFPO1lBQUUsU0FBUztRQUU1QyxJQUFJLFFBQVEsR0FBRyxpQkFBTSxDQUFDLElBQUksQ0FDeEIsaUJBQU0sQ0FBQyxNQUFNLENBQ1gsSUFBSSxDQUFDLElBQUk7WUFDUCxDQUFDLFdBQVcsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUN0RSxDQUNGLENBQUM7UUFDRixJQUFJLEtBQUssR0FBRyxtQ0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRW5DLElBQUksQ0FBQztZQUNILE1BQU0sSUFBQSxzQkFBUSxFQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFDdEQsT0FBTyxDQUNSLENBQUM7WUFFRixJQUFJLFFBQVEsR0FBRyxJQUFBLDJCQUFVLEVBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRWhELE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxrQkFBTyxJQUFJLFFBQVEsSUFBSSxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLDJCQUFnQixJQUFJLFFBQVEsSUFBSSxDQUFDLENBQUM7WUFDbkQsT0FBTyxDQUFDLEtBQUssQ0FBRSxDQUFTLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQyxNQUFNLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQztBQUNILENBQUMifQ==