nole 3.0.0 → 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 -294
- package/bin/nole.js +145 -110
- package/dist/core.js +1 -1
- package/dist/dynamic.d.ts +1 -0
- package/dist/dynamic.d.ts.map +1 -1
- package/dist/dynamic.js +11 -1
- package/dist/handle/before-hooks.d.ts.map +1 -1
- package/dist/handle/before-hooks.js +12 -2
- package/dist/handle/specs.d.ts.map +1 -1
- package/dist/handle/specs.js +12 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- 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.map +1 -1
- package/dist/run.js +14 -6
- package/dist/symbol.d.ts.map +1 -1
- package/dist/symbol.js +2 -2
- package/dist/test-wrap.d.ts +1 -0
- package/dist/test-wrap.d.ts.map +1 -1
- package/dist/test-wrap.js +1 -1
- package/dist/utils/executor.test.d.ts.map +1 -1
- package/dist/utils/time_difference.d.ts.map +1 -1
- package/dist/utils/time_difference.test.d.ts.map +1 -1
- package/dist/utils/time_factor.test.d.ts.map +1 -1
- package/package.json +57 -57
- package/tsconfig.json +18 -16
- package/src/const.ts +0 -11
- package/src/core.ts +0 -89
- package/src/dynamic.ts +0 -53
- package/src/handle/after-each-hooks.ts +0 -41
- package/src/handle/after-hooks.ts +0 -38
- package/src/handle/before-each-hooks.ts +0 -40
- package/src/handle/before-hooks.ts +0 -39
- package/src/handle/cleanup-hooks.ts +0 -55
- package/src/handle/specs.ts +0 -68
- package/src/index.ts +0 -3
- package/src/run.ts +0 -259
- package/src/symbol.ts +0 -1
- package/src/test-wrap.ts +0 -48
- package/src/utils/executor.test.ts +0 -24
- package/src/utils/executor.ts +0 -22
- package/src/utils/time_difference.test.ts +0 -11
- package/src/utils/time_difference.ts +0 -26
- package/src/utils/time_factor.test.ts +0 -28
- package/src/utils/time_factor.ts +0 -33
- package/test/basic.test.ts +0 -23
- package/test/before.test.ts +0 -41
- package/test/clean-up.test.ts +0 -48
- package/test/dynamic-skip.test.ts +0 -6
- package/test/dynamic.test.ts +0 -28
- package/test/extend.test.ts +0 -43
- package/test/hook.test.ts +0 -26
- package/test/multi-dependency.test.ts +0 -43
- package/test/multiple-uppercased-chars.test.ts +0 -20
- package/test/skip-all.test.ts +0 -10
- package/test/tsconfig.json +0 -24
- package/test/turkish-chars.test.ts +0 -20
package/dist/run.js
CHANGED
|
@@ -53,7 +53,7 @@ export function updateInformationForClass(target, test, tests) {
|
|
|
53
53
|
test.skipClass = { reason: config.skip };
|
|
54
54
|
}
|
|
55
55
|
test.dependencies = config.dependencies
|
|
56
|
-
? Array.from(config.dependencies.entries().map(([key, dep]) => {
|
|
56
|
+
? Array.from(config.dependencies.entries()).map(([key, dep]) => {
|
|
57
57
|
const actual = dep();
|
|
58
58
|
let testWrap = tests.get(actual);
|
|
59
59
|
if (!testWrap) {
|
|
@@ -66,7 +66,7 @@ export function updateInformationForClass(target, test, tests) {
|
|
|
66
66
|
propertyKey: key,
|
|
67
67
|
dependency: testWrap,
|
|
68
68
|
};
|
|
69
|
-
})
|
|
69
|
+
})
|
|
70
70
|
: [];
|
|
71
71
|
if (config.before) {
|
|
72
72
|
const beforeTests = config.before();
|
|
@@ -129,6 +129,9 @@ function specDetection(test) {
|
|
|
129
129
|
if (typeof key !== "string") {
|
|
130
130
|
continue;
|
|
131
131
|
}
|
|
132
|
+
if (key.startsWith(process.env.SPEC_SKIP_PREFIX ?? "_")) {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
132
135
|
let lowerKey = key.toLowerCase();
|
|
133
136
|
if (lowerKey.startsWith("skip")) {
|
|
134
137
|
test.skip.set(key, { reason: "marked as skipped" });
|
|
@@ -164,13 +167,18 @@ function specDetection(test) {
|
|
|
164
167
|
function getAllMethods(instance) {
|
|
165
168
|
let props = new Set();
|
|
166
169
|
let currentObj = instance;
|
|
170
|
+
let stack = [];
|
|
167
171
|
while (currentObj && currentObj !== Object.prototype) {
|
|
168
|
-
|
|
169
|
-
|
|
172
|
+
stack.push(currentObj);
|
|
173
|
+
currentObj = Object.getPrototypeOf(currentObj);
|
|
174
|
+
}
|
|
175
|
+
while (stack.length > 0) {
|
|
176
|
+
let obj = stack.pop(); // En üstteki (A.prototype) ilk çıkar
|
|
177
|
+
Object.getOwnPropertyNames(obj).forEach((prop) => {
|
|
178
|
+
if (typeof obj[prop] === "function" && prop !== "constructor") {
|
|
170
179
|
props.add(prop);
|
|
171
180
|
}
|
|
172
181
|
});
|
|
173
|
-
currentObj = Object.getPrototypeOf(currentObj);
|
|
174
182
|
}
|
|
175
183
|
return Array.from(props);
|
|
176
184
|
}
|
|
@@ -198,4 +206,4 @@ export function getTestMap() {
|
|
|
198
206
|
export function getFutureTestMap() {
|
|
199
207
|
return notTestedYet;
|
|
200
208
|
}
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3J1bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxRQUFRLEVBQXNCLE1BQU0sV0FBVyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVqRCxJQUFJLFFBQVEsR0FBc0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUM1RCxJQUFJLFlBQVksR0FBc0MsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUVoRSxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxhQUFzQztJQUNwRSxLQUFLLElBQUksSUFBSSxJQUFJLGFBQWEsRUFBRSxDQUFDO1FBQy9CLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLFNBQVM7UUFDWCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFaEMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDekIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELDZCQUE2QixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRTVDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxPQUFPLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QixJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFbkMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNwQix1RUFBdUU7WUFFdkUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakMseUJBQXlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFekIsTUFBTSxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixNQUFNLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixNQUFNLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1lBRTdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBRXZCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLDZCQUE2QixDQUNwQyxLQUF3QztJQUV4QyxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDM0MseUJBQXlCLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSx5QkFBeUIsQ0FDdkMsTUFBMEIsRUFDMUIsSUFBYyxFQUNkLEtBQXdDO0lBRXhDLE1BQU0sTUFBTSxHQUFJLE1BQTBCLENBQUMsY0FBYyxDQUFrQixDQUFDO0lBRTVFLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZO1FBQ3JDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFO1lBQzNELE1BQU0sTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFakMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLFFBQVEsR0FBRyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDaEMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzVCLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLENBQUM7WUFFRCxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUUvQixPQUFPO2dCQUNMLFdBQVcsRUFBRSxHQUFHO2dCQUNoQixVQUFVLEVBQUUsUUFBUTthQUNyQixDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUVQLElBQUksTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVwQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzVDLE1BQU0sTUFBTSxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU5QixJQUFJLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWpDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDZCxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ2hDLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM1QixRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNqQyxDQUFDO1lBRUQsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3pCLFdBQVcsRUFBRSxVQUFVLEdBQUcsQ0FBQztnQkFDM0IsVUFBVSxFQUFFLElBQUk7YUFDakIsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFbEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMzQyxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFN0IsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUVqQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2QsUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNoQyxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDNUIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFDakMsQ0FBQztZQUVELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDO2dCQUNyQixXQUFXLEVBQUUsU0FBUyxHQUFHLENBQUM7Z0JBQzFCLFVBQVUsRUFBRSxRQUFRO2FBQ3JCLENBQUMsQ0FBQztZQUVILFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsUUFBUSxDQUFDLEtBQXdDO0lBQ3hELEtBQUssSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDbEMsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLFVBQVU7WUFBRSxTQUFTO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUM7WUFBRSxTQUFTO1FBRXZFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsSUFBYztJQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBRW5DLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hCLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLElBQWM7SUFDbkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUNuQyxLQUFLLElBQUksR0FBRyxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQ3hDLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDNUIsU0FBUztRQUNYLENBQUM7UUFFRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hELFNBQVM7UUFDWCxDQUFDO1FBRUQsSUFBSSxRQUFRLEdBQUcsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpDLElBQUksUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUVELElBQ0UsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDM0IsUUFBUSxLQUFLLFNBQVM7WUFDdEIsUUFBUSxLQUFLLFFBQVE7WUFDckIsUUFBUSxLQUFLLE9BQU87WUFDcEIsUUFBUSxLQUFLLFlBQVk7WUFDekIsUUFBUSxLQUFLLFdBQVcsRUFDeEIsQ0FBQztZQUNELElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFFM0IsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ3pCLENBQUM7aUJBQU0sSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3RDLElBQUksR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ3hCLENBQUM7aUJBQU0sSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQzNDLElBQUksR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO1lBQzdCLENBQUM7aUJBQU0sSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLElBQUksR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQzVCLENBQUM7aUJBQU0sSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLElBQUksR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQzFCLENBQUM7WUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzlCLFNBQVM7UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzFCLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsUUFBYTtJQUNsQyxJQUFJLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQzlCLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQztJQUMxQixJQUFJLEtBQUssR0FBVSxFQUFFLENBQUM7SUFFdEIsT0FBTyxVQUFVLElBQUksVUFBVSxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyRCxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZCLFVBQVUsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDeEIsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMscUNBQXFDO1FBQzVELE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMvQyxJQUFJLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsSUFBSSxJQUFJLEtBQUssYUFBYSxFQUFFLENBQUM7Z0JBQzlELEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxJQUFjO0lBQ3hDLEtBQUssSUFBSSxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztZQUN2QyxVQUFVLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztJQUN2QyxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQXdDO0lBQzlELE9BQU8sQ0FBQyxLQUFLLENBQ1gsV0FBVztRQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsNkRBQTZELENBQUMsQ0FDNUUsQ0FBQztJQUVGLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNyQyxLQUFLLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxLQUFLLENBQ1gsV0FBVyxJQUFJLENBQUMsSUFBSSxNQUFNLElBQUksQ0FBQyxZQUFZO2FBQ3hDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQzthQUN2QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ2hFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVU7SUFDeEIsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0I7SUFDOUIsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyJ9
|
package/dist/symbol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"symbol.d.ts","sourceRoot":"","sources":["../src/symbol.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"symbol.d.ts","sourceRoot":"","sources":["../src/symbol.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,eAAoC,CAAC"}
|
package/dist/symbol.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const TEST_CLASS_KEY = Symbol("TEST_CLASS_KEY");
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export const TEST_CLASS_KEY = Symbol.for("nole.TEST_CLASS_KEY");
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ltYm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N5bWJvbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDIn0=
|
package/dist/test-wrap.d.ts
CHANGED
package/dist/test-wrap.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-wrap.d.ts","sourceRoot":"","sources":["../src/test-wrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAGzD,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,QAAQ,CAAC;CACtB;AAED,MAAM,WAAW,KAAK;CAAG;AAEzB,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"test-wrap.d.ts","sourceRoot":"","sources":["../src/test-wrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAGzD,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,QAAQ,CAAC;CACtB;AAED,MAAM,WAAW,KAAK;CAAG;AAEzB,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,qBAAa,QAAQ;IAaA,MAAM,EAAE,UAAU,QAAQ;IAZ7C,YAAY,EAAE,WAAW,EAAE,CAAM;IACjC,UAAU,EAAE,QAAQ,EAAE,CAAM;IAC5B,IAAI,qBAA4B;IAChC,SAAS,EAAE,KAAK,GAAG,IAAI,CAAQ;IAC/B,KAAK,qBAA4B;IACjC,KAAK,qBAA4B;IACjC,UAAU,EAAE,OAAO,CAAS;IAC5B,aAAa,EAAE,OAAO,CAAS;IAC/B,YAAY,EAAE,GAAG,CAAC;IAClB,aAAa,EAAE,OAAO,CAAS;IAC/B,MAAM,EAAE,aAAa,CAAC;IAEtB,YAAmB,MAAM,EAAE,UAAU,QAAQ,EAE5C;IAED,IAAI,IAAI,WAEP;CACF;AAED,oBAAY,QAAQ;IAClB,MAAM,IAAA,CAAE,4CAA4C;IACpD,KAAK,IAAA,CAAE,2CAA2C;IAClD,UAAU,IAAA,CAAE,2BAA2B;IACvC,SAAS,IAAA,CAAE,0BAA0B;IACrC,OAAO,IAAA;CACR"}
|
package/dist/test-wrap.js
CHANGED
|
@@ -27,4 +27,4 @@ export var HookType;
|
|
|
27
27
|
HookType[HookType["AfterEach"] = 3] = "AfterEach";
|
|
28
28
|
HookType[HookType["CleanUp"] = 4] = "CleanUp";
|
|
29
29
|
})(HookType || (HookType = {}));
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC13cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Rlc3Qtd3JhcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFzQixNQUFNLFdBQVcsQ0FBQztBQUN6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBa0I3Qyx5REFBeUQ7QUFDekQsTUFBTSxPQUFPLFFBQVE7SUFhbkIsWUFBbUIsTUFBMEI7UUFBMUIsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7UUFaN0MsaUJBQVksR0FBa0IsRUFBRSxDQUFDO1FBQ2pDLGVBQVUsR0FBZSxFQUFFLENBQUM7UUFDNUIsU0FBSSxHQUFHLElBQUksR0FBRyxFQUFpQixDQUFDO1FBQ2hDLGNBQVMsR0FBaUIsSUFBSSxDQUFDO1FBQy9CLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztRQUNqQyxVQUFLLEdBQUcsSUFBSSxHQUFHLEVBQWlCLENBQUM7UUFDakMsZUFBVSxHQUFZLEtBQUssQ0FBQyxDQUFDLGtCQUFrQjtRQUMvQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUUvQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUk3QixJQUFJLENBQUMsTUFBTSxHQUFJLE1BQTBCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDMUIsQ0FBQztDQUNGO0FBRUQsTUFBTSxDQUFOLElBQVksUUFNWDtBQU5ELFdBQVksUUFBUTtJQUNsQiwyQ0FBTSxDQUFBO0lBQ04seUNBQUssQ0FBQTtJQUNMLG1EQUFVLENBQUE7SUFDVixpREFBUyxDQUFBO0lBQ1QsNkNBQU8sQ0FBQTtBQUNULENBQUMsRUFOVyxRQUFRLEtBQVIsUUFBUSxRQU1uQiJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.test.d.ts","sourceRoot":"","sources":["../../src/utils/executor.test.ts"],"names":[],"mappings":";AAIA,qBAAa,YAAa,SAAQ,iBAAM;IAChC,QAAQ;
|
|
1
|
+
{"version":3,"file":"executor.test.d.ts","sourceRoot":"","sources":["../../src/utils/executor.test.ts"],"names":[],"mappings":";AAIA,qBAAa,YAAa,SAAQ,iBAAM;IAChC,QAAQ,kBAGb;IAEK,MAAM,kBAMX;IAEK,OAAO,kBAIZ;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time_difference.d.ts","sourceRoot":"","sources":["../../src/utils/time_difference.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAmB;IAElC,OAAO;
|
|
1
|
+
{"version":3,"file":"time_difference.d.ts","sourceRoot":"","sources":["../../src/utils/time_difference.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAmB;IAElC,OAAO,eAEN;IAED;;OAEG;IACH,OAAc,KAAK,mBAElB;IAED;;OAEG;IACH,GAAG,IAAI,MAAM,CAIZ;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time_difference.test.d.ts","sourceRoot":"","sources":["../../src/utils/time_difference.test.ts"],"names":[],"mappings":";AAKA,qBAAa,kBAAmB,SAAQ,uBAAM;IACtC,QAAQ;
|
|
1
|
+
{"version":3,"file":"time_difference.test.d.ts","sourceRoot":"","sources":["../../src/utils/time_difference.test.ts"],"names":[],"mappings":";AAKA,qBAAa,kBAAmB,SAAQ,uBAAM;IACtC,QAAQ,kBAGb;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time_factor.test.d.ts","sourceRoot":"","sources":["../../src/utils/time_factor.test.ts"],"names":[],"mappings":";AAGA,qBAAa,cAAe,SAAQ,mBAAM;IAClC,QAAQ;
|
|
1
|
+
{"version":3,"file":"time_factor.test.d.ts","sourceRoot":"","sources":["../../src/utils/time_factor.test.ts"],"names":[],"mappings":";AAGA,qBAAa,cAAe,SAAQ,mBAAM;IAClC,QAAQ,kBAsBb;CACF"}
|
package/package.json
CHANGED
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "nole",
|
|
3
|
-
"version": "3.
|
|
4
|
-
"type": "module",
|
|
5
|
-
"description": "Testing Library for Typescript projects",
|
|
6
|
-
"main": "dist/index.js",
|
|
7
|
-
"types": "dist/index.d.ts",
|
|
8
|
-
"repository": {
|
|
9
|
-
"type": "git",
|
|
10
|
-
"url": "https://github.com/co3moz/nole"
|
|
11
|
-
},
|
|
12
|
-
"bin": {
|
|
13
|
-
"nole": "./bin/nole.js"
|
|
14
|
-
},
|
|
15
|
-
"scripts": {
|
|
16
|
-
"build": "tsc",
|
|
17
|
-
"test": "node ./bin/nole.js ./test/**/*.test.ts ./src/**/*.test.ts",
|
|
18
|
-
"coverage": "c8
|
|
19
|
-
},
|
|
20
|
-
"keywords": [
|
|
21
|
-
"typescript",
|
|
22
|
-
"test",
|
|
23
|
-
"library"
|
|
24
|
-
],
|
|
25
|
-
"author": "co3moz",
|
|
26
|
-
"license": "
|
|
27
|
-
"dependencies": {
|
|
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
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "nole",
|
|
3
|
+
"version": "3.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Testing Library for Typescript projects",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/co3moz/nole"
|
|
11
|
+
},
|
|
12
|
+
"bin": {
|
|
13
|
+
"nole": "./bin/nole.js"
|
|
14
|
+
},
|
|
15
|
+
"scripts": {
|
|
16
|
+
"build": "tsc",
|
|
17
|
+
"test": "node ./bin/nole.js './test/**/*.test.ts' './src/**/*.test.ts'",
|
|
18
|
+
"coverage": "c8 node ./bin/nole.js './test/**/*.test.ts' './src/**/*.test.ts'"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"typescript",
|
|
22
|
+
"test",
|
|
23
|
+
"library"
|
|
24
|
+
],
|
|
25
|
+
"author": "co3moz",
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"colors": "^1.4.0",
|
|
29
|
+
"commander": "^15.0.0",
|
|
30
|
+
"glob": "^13.0.6"
|
|
31
|
+
},
|
|
32
|
+
"peerDependencies": {
|
|
33
|
+
"tsx": "^4.21.0"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@types/node": "^26.1.1",
|
|
37
|
+
"c8": "^12.0.0",
|
|
38
|
+
"tsx": "^4.23.1",
|
|
39
|
+
"typescript": "^7.0.2"
|
|
40
|
+
},
|
|
41
|
+
"c8": {
|
|
42
|
+
"all": true,
|
|
43
|
+
"check-coverage": true,
|
|
44
|
+
"report-dir": "./coverage",
|
|
45
|
+
"reporter": [
|
|
46
|
+
"text",
|
|
47
|
+
"lcovonly",
|
|
48
|
+
"text-summary"
|
|
49
|
+
],
|
|
50
|
+
"include": [
|
|
51
|
+
"src/**/*.ts"
|
|
52
|
+
],
|
|
53
|
+
"exclude": [
|
|
54
|
+
"**/*.test.ts",
|
|
55
|
+
"dist/**"
|
|
56
|
+
]
|
|
57
|
+
}
|
|
58
58
|
}
|
package/tsconfig.json
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "es2020",
|
|
4
|
-
"module": "node16",
|
|
5
|
-
"moduleResolution": "node16",
|
|
6
|
-
"lib": ["es2020", "esnext"],
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "es2020",
|
|
4
|
+
"module": "node16",
|
|
5
|
+
"moduleResolution": "node16",
|
|
6
|
+
"lib": ["es2020", "esnext"],
|
|
7
|
+
"types": ["node"],
|
|
8
|
+
"declaration": true,
|
|
9
|
+
"declarationMap": true,
|
|
10
|
+
"outDir": "dist",
|
|
11
|
+
"rootDir": "./src",
|
|
12
|
+
"strictNullChecks": true,
|
|
13
|
+
"inlineSourceMap": true,
|
|
14
|
+
"verbatimModuleSyntax": true
|
|
15
|
+
},
|
|
16
|
+
"include": ["src/**/*.ts"],
|
|
17
|
+
"exclude": ["node_modules", "dist"]
|
|
18
|
+
}
|
package/src/const.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import * as clrs from "colors/safe.js";
|
|
2
|
-
|
|
3
|
-
export const colors = (clrs as any).default;
|
|
4
|
-
|
|
5
|
-
export const OK_TEXT = colors.bold(colors.green(" (ok) "));
|
|
6
|
-
export const SKIP_TEXT = colors.bold(colors.yellow(" (skip) "));
|
|
7
|
-
export const DYNAMIC_SKIP_TEXT = colors.bold(colors.blue(" (dskip) "));
|
|
8
|
-
export const FAILED_TEXT = colors.bold(colors.red(" (failed) "));
|
|
9
|
-
export const HOOK_FAILED_TEXT = colors.bold(colors.red(" (hook failed) "));
|
|
10
|
-
|
|
11
|
-
export const DEFAULT_TIMEOUT = 5000;
|
package/src/core.ts
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
import { TEST_CLASS_KEY } from "./symbol.js";
|
|
2
|
-
|
|
3
|
-
export interface TestClassInfo {
|
|
4
|
-
dependencies?: Map<string, () => new () => BaseTest>;
|
|
5
|
-
skip?: string;
|
|
6
|
-
before?: () => Array<new () => BaseTest>;
|
|
7
|
-
after?: () => Array<new () => BaseTest>;
|
|
8
|
-
timeout?: number;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export class BaseTest {
|
|
12
|
-
static [TEST_CLASS_KEY]: TestClassInfo = {
|
|
13
|
-
dependencies: new Map(),
|
|
14
|
-
timeout: 5000,
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
type DependencyDefinitionRule<T extends BaseTest> = () => new () => T;
|
|
19
|
-
type InferDependencyDefinition<T> = T extends () => infer U ? U : never;
|
|
20
|
-
|
|
21
|
-
export function Test<
|
|
22
|
-
Deps extends Record<string, DependencyDefinitionRule<any>> = {},
|
|
23
|
-
>({
|
|
24
|
-
dependencies,
|
|
25
|
-
skip,
|
|
26
|
-
before,
|
|
27
|
-
after,
|
|
28
|
-
timeout,
|
|
29
|
-
}: {
|
|
30
|
-
dependencies?: Deps;
|
|
31
|
-
skip?: string;
|
|
32
|
-
before?: () => Array<new () => BaseTest>;
|
|
33
|
-
after?: () => Array<new () => BaseTest>;
|
|
34
|
-
timeout?: number;
|
|
35
|
-
} = {}) {
|
|
36
|
-
type Props = {
|
|
37
|
-
[K in keyof Deps]: InstanceType<InferDependencyDefinition<Deps[K]>>;
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
function wrap(superClassInfo: TestClassInfo): TestClassInfo {
|
|
41
|
-
const deps = dependencies ? dependencies : ({} as Deps);
|
|
42
|
-
|
|
43
|
-
const classInfo = { ...superClassInfo };
|
|
44
|
-
|
|
45
|
-
if (!classInfo.dependencies) {
|
|
46
|
-
classInfo.dependencies = new Map();
|
|
47
|
-
} else {
|
|
48
|
-
classInfo.dependencies = new Map(classInfo.dependencies);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
if (before !== undefined) {
|
|
52
|
-
classInfo.before = before;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
if (after !== undefined) {
|
|
56
|
-
classInfo.after = after;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
for (const key of Object.keys(deps)) {
|
|
60
|
-
const config = deps[key];
|
|
61
|
-
|
|
62
|
-
if (TEST_CLASS_KEY in config) {
|
|
63
|
-
classInfo.dependencies.set(key, (() => config) as any);
|
|
64
|
-
} else if (typeof config === "function") {
|
|
65
|
-
classInfo.dependencies.set(key, config);
|
|
66
|
-
} else {
|
|
67
|
-
throw new Error(`Invalid dependency configuration for key ${key}`);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (skip !== undefined) {
|
|
72
|
-
classInfo.skip = skip;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (timeout !== undefined) {
|
|
76
|
-
classInfo.timeout = timeout;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return classInfo;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return class extends BaseTest {
|
|
83
|
-
static [TEST_CLASS_KEY]: TestClassInfo = wrap(super[TEST_CLASS_KEY]);
|
|
84
|
-
|
|
85
|
-
constructor() {
|
|
86
|
-
super();
|
|
87
|
-
}
|
|
88
|
-
} as unknown as new () => Props & BaseTest;
|
|
89
|
-
}
|
package/src/dynamic.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { BaseTest } from "./core.js";
|
|
2
|
-
import {
|
|
3
|
-
createInstanceIfNotExists,
|
|
4
|
-
getFutureTestMap,
|
|
5
|
-
getTestMap,
|
|
6
|
-
updateInformationForClass,
|
|
7
|
-
} from "./run.js";
|
|
8
|
-
import { TestWrap } from "./test-wrap.js";
|
|
9
|
-
|
|
10
|
-
export function skipTest(reason?: string): never {
|
|
11
|
-
throw new NoleManualSkip(reason);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
class NoleManualSkip extends Error {
|
|
15
|
-
_nole_anchor = 1;
|
|
16
|
-
|
|
17
|
-
constructor(public reason?: string) {
|
|
18
|
-
super(`Dynamicly skipped! ${reason}`);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export function getTest<T extends BaseTest>(
|
|
23
|
-
test: () => new () => T,
|
|
24
|
-
): Partial<T> | null {
|
|
25
|
-
const testWrap = getTestMap().get(test() as any) as TestWrap | undefined;
|
|
26
|
-
|
|
27
|
-
if (!testWrap) {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
createInstanceIfNotExists(testWrap);
|
|
32
|
-
|
|
33
|
-
return testWrap.testInstance;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export function addTest<T extends BaseTest>(test: () => new () => T) {
|
|
37
|
-
const testMap = getTestMap();
|
|
38
|
-
const remainingTests = getFutureTestMap();
|
|
39
|
-
|
|
40
|
-
const testClass = test();
|
|
41
|
-
|
|
42
|
-
if (testMap.has(testClass)) {
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const testWrap = new TestWrap(testClass);
|
|
47
|
-
remainingTests.set(testClass, testWrap);
|
|
48
|
-
testMap.set(testClass, testWrap);
|
|
49
|
-
|
|
50
|
-
updateInformationForClass(testClass, testWrap, testMap);
|
|
51
|
-
|
|
52
|
-
return true;
|
|
53
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
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 {
|
|
5
|
-
colors,
|
|
6
|
-
DEFAULT_TIMEOUT,
|
|
7
|
-
HOOK_FAILED_TEXT,
|
|
8
|
-
OK_TEXT,
|
|
9
|
-
} from "../const.js";
|
|
10
|
-
|
|
11
|
-
export async function handleAfterEachHooks(test: TestWrap) {
|
|
12
|
-
const timeout = test.config.timeout ?? DEFAULT_TIMEOUT;
|
|
13
|
-
|
|
14
|
-
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
15
|
-
if (hook.type != HookType.AfterEach) continue;
|
|
16
|
-
|
|
17
|
-
let hookName = colors.bold(
|
|
18
|
-
colors.yellow(
|
|
19
|
-
test.name +
|
|
20
|
-
(propertyKey != "afterEach"
|
|
21
|
-
? `.${propertyKey}:afterEach`
|
|
22
|
-
: ":afterEach"),
|
|
23
|
-
),
|
|
24
|
-
);
|
|
25
|
-
|
|
26
|
-
try {
|
|
27
|
-
await Executor(
|
|
28
|
-
test.testInstance[propertyKey].bind(test.testInstance),
|
|
29
|
-
timeout,
|
|
30
|
-
);
|
|
31
|
-
|
|
32
|
-
let timeText = TimeFactor(0, timeout);
|
|
33
|
-
|
|
34
|
-
console.log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
35
|
-
} catch (e) {
|
|
36
|
-
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
37
|
-
console.error((e as any)?.stack ?? e);
|
|
38
|
-
throw e;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
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 {
|
|
5
|
-
colors,
|
|
6
|
-
DEFAULT_TIMEOUT,
|
|
7
|
-
HOOK_FAILED_TEXT,
|
|
8
|
-
OK_TEXT,
|
|
9
|
-
} from "../const.js";
|
|
10
|
-
|
|
11
|
-
export async function handleAfterHooks(test: TestWrap) {
|
|
12
|
-
const timeout = test.config.timeout ?? DEFAULT_TIMEOUT;
|
|
13
|
-
|
|
14
|
-
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
15
|
-
if (hook.type != HookType.After) continue;
|
|
16
|
-
|
|
17
|
-
let hookName = colors.bold(
|
|
18
|
-
colors.yellow(
|
|
19
|
-
test.name +
|
|
20
|
-
(propertyKey != "after" ? `.${propertyKey}:after` : ":after"),
|
|
21
|
-
),
|
|
22
|
-
);
|
|
23
|
-
|
|
24
|
-
try {
|
|
25
|
-
await Executor(
|
|
26
|
-
test.testInstance[propertyKey].bind(test.testInstance),
|
|
27
|
-
timeout,
|
|
28
|
-
);
|
|
29
|
-
let timeText = TimeFactor(0, timeout);
|
|
30
|
-
|
|
31
|
-
console.log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
32
|
-
} catch (e) {
|
|
33
|
-
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
34
|
-
console.error((e as any)?.stack ?? e);
|
|
35
|
-
throw e;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
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 {
|
|
5
|
-
colors,
|
|
6
|
-
DEFAULT_TIMEOUT,
|
|
7
|
-
HOOK_FAILED_TEXT,
|
|
8
|
-
OK_TEXT,
|
|
9
|
-
} from "../const.js";
|
|
10
|
-
|
|
11
|
-
export async function handleBeforeEachHooks(test: TestWrap) {
|
|
12
|
-
const timeout = test.config.timeout ?? DEFAULT_TIMEOUT;
|
|
13
|
-
|
|
14
|
-
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
15
|
-
if (hook.type != HookType.BeforeEach) continue;
|
|
16
|
-
let hookName = colors.bold(
|
|
17
|
-
colors.yellow(
|
|
18
|
-
test.name +
|
|
19
|
-
(propertyKey != "beforeEach"
|
|
20
|
-
? `.${propertyKey}:beforeEach`
|
|
21
|
-
: ":beforeEach"),
|
|
22
|
-
),
|
|
23
|
-
);
|
|
24
|
-
|
|
25
|
-
try {
|
|
26
|
-
await Executor(
|
|
27
|
-
test.testInstance[propertyKey].bind(test.testInstance),
|
|
28
|
-
timeout,
|
|
29
|
-
);
|
|
30
|
-
|
|
31
|
-
let timeText = TimeFactor(0, timeout);
|
|
32
|
-
|
|
33
|
-
console.log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
34
|
-
} catch (e) {
|
|
35
|
-
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
36
|
-
console.error((e as any)?.stack ?? e);
|
|
37
|
-
throw e;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
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 {
|
|
5
|
-
colors,
|
|
6
|
-
DEFAULT_TIMEOUT,
|
|
7
|
-
HOOK_FAILED_TEXT,
|
|
8
|
-
OK_TEXT,
|
|
9
|
-
} from "../const.js";
|
|
10
|
-
|
|
11
|
-
export async function handleBeforeHooks(test: TestWrap) {
|
|
12
|
-
const timeout = test.config.timeout ?? DEFAULT_TIMEOUT;
|
|
13
|
-
|
|
14
|
-
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
15
|
-
if (hook.type != HookType.Before) continue;
|
|
16
|
-
|
|
17
|
-
let hookName = colors.bold(
|
|
18
|
-
colors.yellow(
|
|
19
|
-
test.name +
|
|
20
|
-
(propertyKey != "before" ? `.${propertyKey}:before` : ":before"),
|
|
21
|
-
),
|
|
22
|
-
);
|
|
23
|
-
|
|
24
|
-
try {
|
|
25
|
-
await Executor(
|
|
26
|
-
test.testInstance[propertyKey].bind(test.testInstance),
|
|
27
|
-
timeout,
|
|
28
|
-
);
|
|
29
|
-
|
|
30
|
-
let timeText = TimeFactor(0, timeout);
|
|
31
|
-
|
|
32
|
-
console.log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
33
|
-
} catch (e) {
|
|
34
|
-
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
35
|
-
console.error((e as any)?.stack ?? e);
|
|
36
|
-
throw e;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|