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/bin/nole.js CHANGED
@@ -1,111 +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 { ManualRun } from "../dist/run.js";
9
- import { TimeDifference } from "../dist/utils/time_difference.js";
10
- import { Delay, TimeResolve } from "../dist/utils/time_factor.js";
11
- import { register } from "node:module";
12
- import { pathToFileURL } from "node:url";
13
- register("ts-node/esm", pathToFileURL("./"));
14
-
15
- const pkg = JSON.parse(
16
- fs.readFileSync(new URL("../package.json", import.meta.url)).toString()
17
- );
18
-
19
- program
20
- .usage("<glob> ...")
21
- .option("-L, --no-log", "disable console.log")
22
- .option("-O, --order-debug", "shows execution order")
23
- .version(pkg.version)
24
- .parse(process.argv);
25
-
26
- if (!program.args.length) {
27
- program.help();
28
- } else {
29
- let time = TimeDifference.begin();
30
-
31
- let log = console.log.bind(console);
32
-
33
- if (!program.log) {
34
- console.log = function () {};
35
- }
36
-
37
- Promise.all(
38
- program.args.map(
39
- (arg) =>
40
- new Promise((resolve, reject) => {
41
- glob(arg, (err, matches) => {
42
- if (err) {
43
- return reject(err);
44
- }
45
-
46
- resolve(matches);
47
- });
48
- })
49
- )
50
- )
51
- .then(async (list) => {
52
- const fileList = [];
53
-
54
- for (const item of list) {
55
- while (item.length)
56
- fileList.push(path.resolve(process.cwd(), item.pop()));
57
- }
58
-
59
- if (!fileList.length) {
60
- failed("0 files found");
61
- process.exit(1);
62
- }
63
-
64
- const file = time.end();
65
-
66
- for (const file of fileList) {
67
- await import(`file://${file}`);
68
- }
69
-
70
- const prop = time.end();
71
-
72
- let dependencyResolveWaitPeriod = +process.env.NOLE_WAIT_PERIOD;
73
-
74
- if (
75
- isNaN(dependencyResolveWaitPeriod) ||
76
- dependencyResolveWaitPeriod < 0
77
- ) {
78
- dependencyResolveWaitPeriod = 500;
79
- }
80
-
81
- log("Nole tests v" + pkg.version);
82
- try {
83
- await Delay(dependencyResolveWaitPeriod);
84
-
85
- await ManualRun({
86
- log,
87
- orderDebug: program.orderDebug,
88
- });
89
-
90
- log(" discover: %s", TimeResolve(file));
91
- log(" resolve: %s", TimeResolve(prop - file));
92
- log(
93
- " tests: %s",
94
- TimeResolve(time.end() - prop - dependencyResolveWaitPeriod)
95
- );
96
- process.exit(0);
97
- } catch (e) {
98
- console.error(e);
99
- process.exit(1);
100
- }
101
- })
102
- .catch((e) => {
103
- failed("Error occurred on resolving files");
104
- console.error(e.stack || e);
105
- process.exit(1);
106
- });
107
- }
108
-
109
- function failed(message) {
110
- console.error(colors.bold(colors.red(" (failed) " + message)));
111
- }
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,8 @@
1
+ export declare const colors: any;
2
+ export declare const OK_TEXT: any;
3
+ export declare const SKIP_TEXT: any;
4
+ export declare const DYNAMIC_SKIP_TEXT: any;
5
+ export declare const FAILED_TEXT: any;
6
+ export declare const HOOK_FAILED_TEXT: any;
7
+ export declare const DEFAULT_TIMEOUT = 5000;
8
+ //# sourceMappingURL=const.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../src/const.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,KAAwB,CAAC;AAE5C,eAAO,MAAM,OAAO,KAA0C,CAAC;AAC/D,eAAO,MAAM,SAAS,KAA2C,CAAC;AAClE,eAAO,MAAM,iBAAiB,KAA0C,CAAC;AACzE,eAAO,MAAM,WAAW,KAAwC,CAAC;AACjE,eAAO,MAAM,gBAAgB,KAA6C,CAAC;AAE3E,eAAO,MAAM,eAAe,OAAO,CAAC"}
package/dist/const.js ADDED
@@ -0,0 +1,9 @@
1
+ import * as clrs from "colors/safe.js";
2
+ export const colors = clrs.default;
3
+ export const OK_TEXT = colors.bold(colors.green(" (ok) "));
4
+ export const SKIP_TEXT = colors.bold(colors.yellow(" (skip) "));
5
+ export const DYNAMIC_SKIP_TEXT = colors.bold(colors.blue(" (dskip) "));
6
+ export const FAILED_TEXT = colors.bold(colors.red(" (failed) "));
7
+ export const HOOK_FAILED_TEXT = colors.bold(colors.red(" (hook failed) "));
8
+ export const DEFAULT_TIMEOUT = 5000;
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxnQkFBZ0IsQ0FBQztBQUV2QyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUksSUFBWSxDQUFDLE9BQU8sQ0FBQztBQUU1QyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDL0QsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNqRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO0FBRTNFLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMifQ==
package/dist/core.d.ts ADDED
@@ -0,0 +1,22 @@
1
+ import { TEST_CLASS_KEY } from "./symbol.js";
2
+ export interface TestClassInfo {
3
+ dependencies?: Map<string, () => new () => BaseTest>;
4
+ skip?: string;
5
+ before?: () => Array<new () => BaseTest>;
6
+ after?: () => Array<new () => BaseTest>;
7
+ timeout?: number;
8
+ }
9
+ export declare class BaseTest {
10
+ static [TEST_CLASS_KEY]: TestClassInfo;
11
+ }
12
+ type DependencyDefinitionRule<T extends BaseTest> = () => new () => T;
13
+ type InferDependencyDefinition<T> = T extends () => infer U ? U : never;
14
+ export declare function Test<Deps extends Record<string, DependencyDefinitionRule<any>> = {}>({ dependencies, skip, before, after, timeout, }?: {
15
+ dependencies?: Deps;
16
+ skip?: string;
17
+ before?: () => Array<new () => BaseTest>;
18
+ after?: () => Array<new () => BaseTest>;
19
+ timeout?: number;
20
+ }): new () => { [K in keyof Deps]: InstanceType<InferDependencyDefinition<Deps[K]>>; } & BaseTest;
21
+ export {};
22
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,UAAU,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,UAAU,QAAQ,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,UAAU,QAAQ,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,QAAQ;IACnB,MAAM,CAAC,CAAC,cAAc,CAAC,EAAE,aAAa,CAGpC;CACH;AAED,KAAK,wBAAwB,CAAC,CAAC,SAAS,QAAQ,IAAI,MAAM,UAAU,CAAC,CAAC;AACtE,KAAK,yBAAyB,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAExE,wBAAgB,IAAI,CAClB,IAAI,SAAS,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAC/D,EACA,YAAY,EACZ,IAAI,EACJ,MAAM,EACN,KAAK,EACL,OAAO,GACR,GAAE;IACD,YAAY,CAAC,EAAE,IAAI,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,KAAK,CAAC,UAAU,QAAQ,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,UAAU,QAAQ,CAAC,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CACb,GAqDY,UAAU,GAnDvB,CAAC,uEAmD8B,QAAQ,CAC3C"}
package/dist/core.js ADDED
@@ -0,0 +1,56 @@
1
+ var _a;
2
+ import { TEST_CLASS_KEY } from "./symbol.js";
3
+ export class BaseTest {
4
+ }
5
+ _a = TEST_CLASS_KEY;
6
+ BaseTest[_a] = {
7
+ dependencies: new Map(),
8
+ timeout: 5000,
9
+ };
10
+ export function Test({ dependencies, skip, before, after, timeout, } = {}) {
11
+ var _b, _c, _d;
12
+ function wrap(superClassInfo) {
13
+ const deps = dependencies ? dependencies : {};
14
+ const classInfo = { ...superClassInfo };
15
+ if (!classInfo.dependencies) {
16
+ classInfo.dependencies = new Map();
17
+ }
18
+ else {
19
+ classInfo.dependencies = new Map(classInfo.dependencies);
20
+ }
21
+ if (before !== undefined) {
22
+ classInfo.before = before;
23
+ }
24
+ if (after !== undefined) {
25
+ classInfo.after = after;
26
+ }
27
+ for (const key of Object.keys(deps)) {
28
+ const config = deps[key];
29
+ if (TEST_CLASS_KEY in config) {
30
+ classInfo.dependencies.set(key, (() => config));
31
+ }
32
+ else if (typeof config === "function") {
33
+ classInfo.dependencies.set(key, config);
34
+ }
35
+ else {
36
+ throw new Error(`Invalid dependency configuration for key ${key}`);
37
+ }
38
+ }
39
+ if (skip !== undefined) {
40
+ classInfo.skip = skip;
41
+ }
42
+ if (timeout !== undefined) {
43
+ classInfo.timeout = timeout;
44
+ }
45
+ return classInfo;
46
+ }
47
+ return _b = class extends (_c = BaseTest) {
48
+ constructor() {
49
+ super();
50
+ }
51
+ },
52
+ _d = TEST_CLASS_KEY,
53
+ _b[_d] = wrap(Reflect.get(_c, TEST_CLASS_KEY, _b)),
54
+ _b;
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBVTdDLE1BQU0sT0FBTyxRQUFRO0NBS3BCO0tBSlMsY0FBYztBQUFmLFlBQWdCLEdBQWtCO0lBQ3ZDLFlBQVksRUFBRSxJQUFJLEdBQUcsRUFBRTtJQUN2QixPQUFPLEVBQUUsSUFBSTtDQUNkLENBQUM7QUFNSixNQUFNLFVBQVUsSUFBSSxDQUVsQixFQUNBLFlBQVksRUFDWixJQUFJLEVBQ0osTUFBTSxFQUNOLEtBQUssRUFDTCxPQUFPLEdBQ1IsR0FNRyxFQUFFOztJQUtKLFNBQVMsSUFBSSxDQUFDLGNBQTZCO1FBQ3pDLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBRSxFQUFXLENBQUM7UUFFeEQsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLGNBQWMsRUFBRSxDQUFDO1FBRXhDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDNUIsU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3JDLENBQUM7YUFBTSxDQUFDO1lBQ04sU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0QsQ0FBQztRQUVELElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3pCLFNBQVMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQzVCLENBQUM7UUFFRCxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QixTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUMxQixDQUFDO1FBRUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXpCLElBQUksY0FBYyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUM3QixTQUFTLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQVEsQ0FBQyxDQUFDO1lBQ3pELENBQUM7aUJBQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDeEMsU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzFDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdkIsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDeEIsQ0FBQztRQUVELElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFCLFNBQVMsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQzlCLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsT0FBTyxLQUFBLEtBQU0sU0FBUSxNQUFBLFFBQVEsQ0FBQTtZQUczQjtnQkFDRSxLQUFLLEVBQUUsQ0FBQztZQUNWLENBQUM7U0FDRjthQUxTLGNBQWM7UUFBZixNQUFnQixHQUFrQixJQUFJLENBQUMsZ0JBQU0sY0FBYyxLQUFmLENBQWtCO1VBSzdCLENBQUM7QUFDN0MsQ0FBQyJ9
package/dist/dynamic.d.ts CHANGED
@@ -1,2 +1,6 @@
1
- export declare function skipTest(reason?: string): void;
1
+ import { BaseTest } from "./core.js";
2
+ export declare function skipTest(reason?: string): never;
3
+ export declare function skipClass(reason?: string): never;
4
+ export declare function getTest<T extends BaseTest>(test: () => new () => T): Partial<T> | null;
5
+ export declare function addTest<T extends BaseTest>(test: () => new () => T): boolean;
2
6
  //# sourceMappingURL=dynamic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic.d.ts","sourceRoot":"","sources":["../src/dynamic.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,QAEvC"}
1
+ {"version":3,"file":"dynamic.d.ts","sourceRoot":"","sources":["../src/dynamic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AASrC,wBAAgB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAE/C;AAED,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAEhD;AAkBD,wBAAgB,OAAO,CAAC,CAAC,SAAS,QAAQ,EACxC,IAAI,EAAE,MAAM,UAAU,CAAC,GACtB,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAUnB;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,QAAQ,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC,WAiBlE"}
package/dist/dynamic.js CHANGED
@@ -1,6 +1,12 @@
1
+ import { BaseTest } from "./core.js";
2
+ import { createInstanceIfNotExists, getFutureTestMap, getTestMap, updateInformationForClass, } from "./run.js";
3
+ import { TestWrap } from "./test-wrap.js";
1
4
  export function skipTest(reason) {
2
5
  throw new NoleManualSkip(reason);
3
6
  }
7
+ export function skipClass(reason) {
8
+ throw new NoleManualClassSkip(reason);
9
+ }
4
10
  class NoleManualSkip extends Error {
5
11
  constructor(reason) {
6
12
  super(`Dynamicly skipped! ${reason}`);
@@ -8,4 +14,32 @@ class NoleManualSkip extends Error {
8
14
  this._nole_anchor = 1;
9
15
  }
10
16
  }
11
- //# sourceMappingURL=dynamic.js.map
17
+ class NoleManualClassSkip extends Error {
18
+ constructor(reason) {
19
+ super(`Dynamicly skipped! ${reason}`);
20
+ this.reason = reason;
21
+ this._nole_anchor = 2;
22
+ }
23
+ }
24
+ export function getTest(test) {
25
+ const testWrap = getTestMap().get(test());
26
+ if (!testWrap) {
27
+ return null;
28
+ }
29
+ createInstanceIfNotExists(testWrap);
30
+ return testWrap.testInstance;
31
+ }
32
+ export function addTest(test) {
33
+ const testMap = getTestMap();
34
+ const remainingTests = getFutureTestMap();
35
+ const testClass = test();
36
+ if (testMap.has(testClass)) {
37
+ return false;
38
+ }
39
+ const testWrap = new TestWrap(testClass);
40
+ remainingTests.set(testClass, testWrap);
41
+ testMap.set(testClass, testWrap);
42
+ updateInformationForClass(testClass, testWrap, testMap);
43
+ return true;
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9keW5hbWljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDckMsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixnQkFBZ0IsRUFDaEIsVUFBVSxFQUNWLHlCQUF5QixHQUMxQixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUMsTUFBTSxVQUFVLFFBQVEsQ0FBQyxNQUFlO0lBQ3RDLE1BQU0sSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbkMsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsTUFBZTtJQUN2QyxNQUFNLElBQUksbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVELE1BQU0sY0FBZSxTQUFRLEtBQUs7SUFHaEMsWUFBbUIsTUFBZTtRQUNoQyxLQUFLLENBQUMsc0JBQXNCLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFEckIsV0FBTSxHQUFOLE1BQU0sQ0FBUztRQUZsQyxpQkFBWSxHQUFHLENBQUMsQ0FBQztJQUlqQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLG1CQUFvQixTQUFRLEtBQUs7SUFHckMsWUFBbUIsTUFBZTtRQUNoQyxLQUFLLENBQUMsc0JBQXNCLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFEckIsV0FBTSxHQUFOLE1BQU0sQ0FBUztRQUZsQyxpQkFBWSxHQUFHLENBQUMsQ0FBQztJQUlqQixDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUNyQixJQUF1QjtJQUV2QixNQUFNLFFBQVEsR0FBRyxVQUFVLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFTLENBQXlCLENBQUM7SUFFekUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQseUJBQXlCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFcEMsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDO0FBQy9CLENBQUM7QUFFRCxNQUFNLFVBQVUsT0FBTyxDQUFxQixJQUF1QjtJQUNqRSxNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztJQUM3QixNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO0lBRTFDLE1BQU0sU0FBUyxHQUFHLElBQUksRUFBRSxDQUFDO0lBRXpCLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRWpDLHlCQUF5QixDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFeEQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIn0=
@@ -0,0 +1,3 @@
1
+ import { TestWrap } from "../test-wrap.js";
2
+ export declare function handleAfterEachHooks(test: TestWrap): Promise<void>;
3
+ //# sourceMappingURL=after-each-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"after-each-hooks.d.ts","sourceRoot":"","sources":["../../src/handle/after-each-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAUrD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,iBA8BxD"}
@@ -0,0 +1,26 @@
1
+ import { HookType, TestWrap } from "../test-wrap.js";
2
+ import { Executor } from "../utils/executor.js";
3
+ import { TimeFactor } from "../utils/time_factor.js";
4
+ import { colors, DEFAULT_TIMEOUT, HOOK_FAILED_TEXT, OK_TEXT, } from "../const.js";
5
+ export async function handleAfterEachHooks(test) {
6
+ const timeout = test.config.timeout ?? DEFAULT_TIMEOUT;
7
+ for (let [propertyKey, hook] of test.hooks.entries()) {
8
+ if (hook.type != HookType.AfterEach)
9
+ continue;
10
+ let hookName = colors.bold(colors.yellow(test.name +
11
+ (propertyKey != "afterEach"
12
+ ? `.${propertyKey}:afterEach`
13
+ : ":afterEach")));
14
+ try {
15
+ await Executor(test.testInstance[propertyKey].bind(test.testInstance), timeout);
16
+ let timeText = TimeFactor(0, timeout);
17
+ console.log(`${OK_TEXT} ${timeText} ${hookName}()`);
18
+ }
19
+ catch (e) {
20
+ console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
21
+ console.error(e?.stack ?? e);
22
+ throw e;
23
+ }
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZ0ZXItZWFjaC1ob29rcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oYW5kbGUvYWZ0ZXItZWFjaC1ob29rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUNMLE1BQU0sRUFDTixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLE9BQU8sR0FDUixNQUFNLGFBQWEsQ0FBQztBQUVyQixNQUFNLENBQUMsS0FBSyxVQUFVLG9CQUFvQixDQUFDLElBQWM7SUFDdkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksZUFBZSxDQUFDO0lBRXZELEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxTQUFTO1lBQUUsU0FBUztRQUU5QyxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUN4QixNQUFNLENBQUMsTUFBTSxDQUNYLElBQUksQ0FBQyxJQUFJO1lBQ1AsQ0FBQyxXQUFXLElBQUksV0FBVztnQkFDekIsQ0FBQyxDQUFDLElBQUksV0FBVyxZQUFZO2dCQUM3QixDQUFDLENBQUMsWUFBWSxDQUFDLENBQ3BCLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxDQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFDdEQsT0FBTyxDQUNSLENBQUM7WUFFRixJQUFJLFFBQVEsR0FBRyxVQUFVLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRXRDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxPQUFPLElBQUksUUFBUSxJQUFJLFFBQVEsSUFBSSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsZ0JBQWdCLElBQUksUUFBUSxJQUFJLENBQUMsQ0FBQztZQUNuRCxPQUFPLENBQUMsS0FBSyxDQUFFLENBQVMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDdEMsTUFBTSxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMifQ==
@@ -0,0 +1,3 @@
1
+ import { TestWrap } from "../test-wrap.js";
2
+ export declare function handleAfterHooks(test: TestWrap): Promise<void>;
3
+ //# sourceMappingURL=after-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"after-hooks.d.ts","sourceRoot":"","sources":["../../src/handle/after-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAUrD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,iBA2BpD"}
@@ -0,0 +1,24 @@
1
+ import { HookType, TestWrap } from "../test-wrap.js";
2
+ import { Executor } from "../utils/executor.js";
3
+ import { TimeFactor } from "../utils/time_factor.js";
4
+ import { colors, DEFAULT_TIMEOUT, HOOK_FAILED_TEXT, OK_TEXT, } from "../const.js";
5
+ export async function handleAfterHooks(test) {
6
+ const timeout = test.config.timeout ?? DEFAULT_TIMEOUT;
7
+ for (let [propertyKey, hook] of test.hooks.entries()) {
8
+ if (hook.type != HookType.After)
9
+ continue;
10
+ let hookName = colors.bold(colors.yellow(test.name +
11
+ (propertyKey != "after" ? `.${propertyKey}:after` : ":after")));
12
+ try {
13
+ await Executor(test.testInstance[propertyKey].bind(test.testInstance), timeout);
14
+ let timeText = TimeFactor(0, timeout);
15
+ console.log(`${OK_TEXT} ${timeText} ${hookName}()`);
16
+ }
17
+ catch (e) {
18
+ console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
19
+ console.error(e?.stack ?? e);
20
+ throw e;
21
+ }
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWZ0ZXItaG9va3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGFuZGxlL2FmdGVyLWhvb2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsTUFBTSxFQUNOLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsT0FBTyxHQUNSLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsSUFBYztJQUNuRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUM7SUFFdkQsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLEtBQUs7WUFBRSxTQUFTO1FBRTFDLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQ1gsSUFBSSxDQUFDLElBQUk7WUFDUCxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUNoRSxDQUNGLENBQUM7UUFFRixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsQ0FDWixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQ3RELE9BQU8sQ0FDUixDQUFDO1lBQ0YsSUFBSSxRQUFRLEdBQUcsVUFBVSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUV0QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxJQUFJLFFBQVEsSUFBSSxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLGdCQUFnQixJQUFJLFFBQVEsSUFBSSxDQUFDLENBQUM7WUFDbkQsT0FBTyxDQUFDLEtBQUssQ0FBRSxDQUFTLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIn0=
@@ -0,0 +1,3 @@
1
+ import { TestWrap } from "../test-wrap.js";
2
+ export declare function handleBeforeEachHooks(test: TestWrap): Promise<void>;
3
+ //# sourceMappingURL=before-each-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"before-each-hooks.d.ts","sourceRoot":"","sources":["../../src/handle/before-each-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAUrD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,iBA6BzD"}
@@ -0,0 +1,26 @@
1
+ import { HookType, TestWrap } from "../test-wrap.js";
2
+ import { Executor } from "../utils/executor.js";
3
+ import { TimeFactor } from "../utils/time_factor.js";
4
+ import { colors, DEFAULT_TIMEOUT, HOOK_FAILED_TEXT, OK_TEXT, } from "../const.js";
5
+ export async function handleBeforeEachHooks(test) {
6
+ const timeout = test.config.timeout ?? DEFAULT_TIMEOUT;
7
+ for (let [propertyKey, hook] of test.hooks.entries()) {
8
+ if (hook.type != HookType.BeforeEach)
9
+ continue;
10
+ let hookName = colors.bold(colors.yellow(test.name +
11
+ (propertyKey != "beforeEach"
12
+ ? `.${propertyKey}:beforeEach`
13
+ : ":beforeEach")));
14
+ try {
15
+ await Executor(test.testInstance[propertyKey].bind(test.testInstance), timeout);
16
+ let timeText = TimeFactor(0, timeout);
17
+ console.log(`${OK_TEXT} ${timeText} ${hookName}()`);
18
+ }
19
+ catch (e) {
20
+ console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
21
+ console.error(e?.stack ?? e);
22
+ throw e;
23
+ }
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmb3JlLWVhY2gtaG9va3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGFuZGxlL2JlZm9yZS1lYWNoLWhvb2tzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsTUFBTSxFQUNOLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsT0FBTyxHQUNSLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE1BQU0sQ0FBQyxLQUFLLFVBQVUscUJBQXFCLENBQUMsSUFBYztJQUN4RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUM7SUFFdkQsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLFVBQVU7WUFBRSxTQUFTO1FBQy9DLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQ1gsSUFBSSxDQUFDLElBQUk7WUFDUCxDQUFDLFdBQVcsSUFBSSxZQUFZO2dCQUMxQixDQUFDLENBQUMsSUFBSSxXQUFXLGFBQWE7Z0JBQzlCLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FDckIsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLENBQ1osSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUN0RCxPQUFPLENBQ1IsQ0FBQztZQUVGLElBQUksUUFBUSxHQUFHLFVBQVUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFFdEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sSUFBSSxRQUFRLElBQUksUUFBUSxJQUFJLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxnQkFBZ0IsSUFBSSxRQUFRLElBQUksQ0FBQyxDQUFDO1lBQ25ELE9BQU8sQ0FBQyxLQUFLLENBQUUsQ0FBUyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyJ9
@@ -0,0 +1,3 @@
1
+ import { TestWrap } from "../test-wrap.js";
2
+ export declare function handleBeforeHooks(test: TestWrap): Promise<void>;
3
+ //# sourceMappingURL=before-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"before-hooks.d.ts","sourceRoot":"","sources":["../../src/handle/before-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAWrD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,iBA4CrD"}
@@ -0,0 +1,34 @@
1
+ import { HookType, TestWrap } from "../test-wrap.js";
2
+ import { Executor } from "../utils/executor.js";
3
+ import { TimeFactor } from "../utils/time_factor.js";
4
+ import { colors, DEFAULT_TIMEOUT, DYNAMIC_SKIP_TEXT, HOOK_FAILED_TEXT, OK_TEXT, } from "../const.js";
5
+ export async function handleBeforeHooks(test) {
6
+ const timeout = test.config.timeout ?? DEFAULT_TIMEOUT;
7
+ for (let [propertyKey, hook] of test.hooks.entries()) {
8
+ if (hook.type != HookType.Before)
9
+ continue;
10
+ let hookName = colors.bold(colors.yellow(test.name +
11
+ (propertyKey != "before" ? `.${propertyKey}:before` : ":before")));
12
+ try {
13
+ await Executor(test.testInstance[propertyKey].bind(test.testInstance), timeout);
14
+ let timeText = TimeFactor(0, timeout);
15
+ console.log(`${OK_TEXT} ${timeText} ${hookName}()`);
16
+ }
17
+ catch (e) {
18
+ const anchor = e?._nole_anchor;
19
+ if (anchor === 1) {
20
+ throw new Error("You cannot just skip the before hook! Probably you ment to skip the whole test class!");
21
+ }
22
+ else if (anchor === 2) {
23
+ let reason = e.reason;
24
+ test.skipClass = { reason, origin: ":" + propertyKey };
25
+ console.log(`${DYNAMIC_SKIP_TEXT} ${" ".repeat(8)} ${hookName}() ${reason ? "{" + reason + "}" : ""}`);
26
+ continue;
27
+ }
28
+ console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
29
+ console.error(e?.stack ?? e);
30
+ throw e;
31
+ }
32
+ }
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVmb3JlLWhvb2tzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hhbmRsZS9iZWZvcmUtaG9va3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFDTCxNQUFNLEVBQ04sZUFBZSxFQUNmLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsT0FBTyxHQUNSLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsaUJBQWlCLENBQUMsSUFBYztJQUNwRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUM7SUFFdkQsS0FBSyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLE1BQU07WUFBRSxTQUFTO1FBRTNDLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ3hCLE1BQU0sQ0FBQyxNQUFNLENBQ1gsSUFBSSxDQUFDLElBQUk7WUFDUCxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUNuRSxDQUNGLENBQUM7UUFFRixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsQ0FDWixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQ3RELE9BQU8sQ0FDUixDQUFDO1lBRUYsSUFBSSxRQUFRLEdBQUcsVUFBVSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUV0QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxJQUFJLFFBQVEsSUFBSSxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxNQUFNLEdBQUksQ0FBUyxFQUFFLFlBQVksQ0FBQztZQUN4QyxJQUFJLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxJQUFJLEtBQUssQ0FDYix1RkFBdUYsQ0FDeEYsQ0FBQztZQUNKLENBQUM7aUJBQU0sSUFBSSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLElBQUksTUFBTSxHQUFJLENBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsR0FBRyxXQUFXLEVBQUUsQ0FBQztnQkFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FDVCxHQUFHLGlCQUFpQixJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxNQUMvQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUNoQyxFQUFFLENBQ0gsQ0FBQztnQkFDRixTQUFTO1lBQ1gsQ0FBQztZQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxnQkFBZ0IsSUFBSSxRQUFRLElBQUksQ0FBQyxDQUFDO1lBQ25ELE9BQU8sQ0FBQyxLQUFLLENBQUUsQ0FBUyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyJ9
@@ -0,0 +1,3 @@
1
+ import { TestWrap } from "../test-wrap.js";
2
+ export declare function handleCleanUp(test: TestWrap): Promise<void>;
3
+ //# sourceMappingURL=cleanup-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup-hooks.d.ts","sourceRoot":"","sources":["../../src/handle/cleanup-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAWrD,wBAAsB,aAAa,CAAC,IAAI,EAAE,QAAQ,iBA2CjD"}