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.
- package/.github/workflows/ci.yaml +34 -0
- package/LICENSE.md +21 -0
- package/README.md +474 -388
- package/bin/nole.js +145 -111
- package/dist/const.d.ts +8 -0
- package/dist/const.d.ts.map +1 -0
- package/dist/const.js +9 -0
- package/dist/core.d.ts +22 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +56 -0
- package/dist/dynamic.d.ts +5 -1
- package/dist/dynamic.d.ts.map +1 -1
- package/dist/dynamic.js +35 -1
- package/dist/handle/after-each-hooks.d.ts +3 -0
- package/dist/handle/after-each-hooks.d.ts.map +1 -0
- package/dist/handle/after-each-hooks.js +26 -0
- package/dist/handle/after-hooks.d.ts +3 -0
- package/dist/handle/after-hooks.d.ts.map +1 -0
- package/dist/handle/after-hooks.js +24 -0
- package/dist/handle/before-each-hooks.d.ts +3 -0
- package/dist/handle/before-each-hooks.d.ts.map +1 -0
- package/dist/handle/before-each-hooks.js +26 -0
- package/dist/handle/before-hooks.d.ts +3 -0
- package/dist/handle/before-hooks.d.ts.map +1 -0
- package/dist/handle/before-hooks.js +34 -0
- package/dist/handle/cleanup-hooks.d.ts +3 -0
- package/dist/handle/cleanup-hooks.d.ts.map +1 -0
- package/dist/handle/cleanup-hooks.js +34 -0
- package/dist/handle/specs.d.ts +3 -0
- package/dist/handle/specs.d.ts.map +1 -0
- package/dist/handle/specs.js +50 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/pipeline.test.d.ts +7 -0
- package/dist/pipeline.test.d.ts.map +1 -0
- package/dist/pipeline.test.js +124 -0
- package/dist/run.d.ts +7 -6
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +166 -196
- package/dist/symbol.d.ts +2 -0
- package/dist/symbol.d.ts.map +1 -0
- package/dist/symbol.js +2 -0
- package/dist/test-wrap.d.ts +38 -0
- package/dist/test-wrap.d.ts.map +1 -0
- package/dist/test-wrap.js +30 -0
- package/dist/utils/executor.js +1 -1
- package/dist/utils/executor.test.d.ts +3 -1
- package/dist/utils/executor.test.d.ts.map +1 -1
- package/dist/utils/executor.test.js +3 -30
- package/dist/utils/time_difference.d.ts +9 -0
- package/dist/utils/time_difference.d.ts.map +1 -1
- package/dist/utils/time_difference.js +10 -1
- package/dist/utils/time_difference.test.d.ts +3 -1
- package/dist/utils/time_difference.test.d.ts.map +1 -1
- package/dist/utils/time_difference.test.js +5 -18
- package/dist/utils/time_factor.d.ts.map +1 -1
- package/dist/utils/time_factor.js +2 -3
- package/dist/utils/time_factor.test.d.ts +3 -1
- package/dist/utils/time_factor.test.d.ts.map +1 -1
- package/dist/utils/time_factor.test.js +3 -18
- package/package.json +58 -58
- package/tsconfig.json +18 -18
- package/dist/data.d.ts +0 -3
- package/dist/data.d.ts.map +0 -1
- package/dist/data.js +0 -9
- package/dist/data.js.map +0 -1
- package/dist/decorators.d.ts +0 -9
- package/dist/decorators.d.ts.map +0 -1
- package/dist/decorators.js +0 -118
- package/dist/decorators.js.map +0 -1
- package/dist/dynamic.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/run.js.map +0 -1
- package/dist/test.d.ts +0 -39
- package/dist/test.d.ts.map +0 -1
- package/dist/test.js +0 -25
- package/dist/test.js.map +0 -1
- package/dist/utils/executor.js.map +0 -1
- package/dist/utils/executor.test.js.map +0 -1
- package/dist/utils/time_difference.js.map +0 -1
- package/dist/utils/time_difference.test.js.map +0 -1
- package/dist/utils/time_factor.js.map +0 -1
- package/dist/utils/time_factor.test.js.map +0 -1
- package/src/data.ts +0 -13
- package/src/decorators.ts +0 -208
- package/src/dynamic.ts +0 -11
- package/src/index.ts +0 -13
- package/src/run.ts +0 -331
- package/src/test.ts +0 -47
- package/src/utils/executor.test.ts +0 -27
- package/src/utils/executor.ts +0 -22
- package/src/utils/time_difference.test.ts +0 -12
- package/src/utils/time_difference.ts +0 -26
- package/src/utils/time_factor.test.ts +0 -29
- package/src/utils/time_factor.ts +0 -35
- package/test/basic.test.ts +0 -24
- package/test/before.test.ts +0 -54
- package/test/clean-up.test.ts +0 -52
- package/test/dynamic-skip.test.ts +0 -8
- package/test/dynamic.test.ts +0 -13
- package/test/hook.test.ts +0 -27
- package/test/multi-dependency.test.ts +0 -45
- package/test/multiple-uppercased-chars.test.ts +0 -19
- package/test/skip-all.test.ts +0 -19
- package/test/tsconfig.json +0 -24
- 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 {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
.
|
|
23
|
-
.
|
|
24
|
-
.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
"
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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
|
+
}
|
package/dist/const.d.ts
ADDED
|
@@ -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
|
-
|
|
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
|
package/dist/dynamic.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dynamic.d.ts","sourceRoot":"","sources":["../src/dynamic.ts"],"names":[],"mappings":"AAAA,wBAAgB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,
|
|
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
|
-
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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"}
|