nole 2.0.1 → 2.1.1
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/README.md +59 -1
- package/bin/nole.js +6 -2
- package/dist/data.js +1 -1
- package/dist/data.js.map +1 -1
- package/dist/decorators.d.ts +1 -0
- package/dist/decorators.d.ts.map +1 -1
- package/dist/decorators.js +12 -0
- package/dist/decorators.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/run.d.ts +6 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +62 -29
- package/dist/run.js.map +1 -1
- package/dist/test.d.ts +0 -1
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +1 -2
- package/dist/test.js.map +1 -1
- package/dist/utils/executor.test.d.ts +6 -0
- package/dist/utils/executor.test.d.ts.map +1 -0
- package/dist/utils/executor.test.js +49 -0
- package/dist/utils/executor.test.js.map +1 -0
- package/dist/utils/time_difference.test.d.ts +4 -0
- package/dist/utils/time_difference.test.d.ts.map +1 -0
- package/dist/utils/time_difference.test.js +24 -0
- package/dist/utils/time_difference.test.js.map +1 -0
- package/dist/utils/time_factor.test.d.ts +4 -0
- package/dist/utils/time_factor.test.d.ts.map +1 -0
- package/dist/utils/time_factor.test.js +42 -0
- package/dist/utils/time_factor.test.js.map +1 -0
- package/package.json +23 -2
- package/src/data.ts +1 -1
- package/src/decorators.ts +18 -0
- package/src/index.ts +1 -1
- package/src/run.ts +80 -35
- package/src/test.ts +2 -6
- package/src/utils/executor.test.ts +27 -0
- package/src/utils/executor.ts +1 -1
- package/src/utils/time_difference.test.ts +12 -0
- package/src/utils/time_factor.test.ts +29 -0
- package/test/hook.test.ts +2 -2
- package/test/multi-dependency.test.ts +23 -0
- package/test/skip-all.test.ts +7 -1
- package/test/turkish_chars.test.ts +19 -0
package/README.md
CHANGED
|
@@ -150,6 +150,32 @@ class Other {
|
|
|
150
150
|
> * All dependencies will be waited until done
|
|
151
151
|
> * If dependencies cannot resolve, it will occurr an error after the available tests done.
|
|
152
152
|
|
|
153
|
+
|
|
154
|
+
## Multi Dependencies
|
|
155
|
+
|
|
156
|
+
Easier way to declare dependencies by decorating class with an array.
|
|
157
|
+
|
|
158
|
+
```ts
|
|
159
|
+
// test/redis.test.ts
|
|
160
|
+
import { Spec, Dependencies } from 'nole';
|
|
161
|
+
import { Database } from './database.test';
|
|
162
|
+
import { Other } from './other.test';
|
|
163
|
+
|
|
164
|
+
@Dependencies([
|
|
165
|
+
Database,
|
|
166
|
+
Other
|
|
167
|
+
])
|
|
168
|
+
class Redis {
|
|
169
|
+
database: Database; // camel-case syntax
|
|
170
|
+
// even though other does not exist in this test, but nole will make sure it is completed when this test runs
|
|
171
|
+
|
|
172
|
+
@Spec()
|
|
173
|
+
async DoThings() {
|
|
174
|
+
await database.connection.doStuff();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
153
179
|
## Hook
|
|
154
180
|
|
|
155
181
|
Hooks will help you to develop helper methods.
|
|
@@ -260,6 +286,38 @@ Connection closed!
|
|
|
260
286
|
|
|
261
287
|
We do not provide assert library. You can use chai or should.js.
|
|
262
288
|
|
|
289
|
+
## Debugging
|
|
290
|
+
|
|
291
|
+
Having cleanup features with missing dependencies could lead to issues and time loses. To make sure execution of tests correct, use `-O` parameter to print out every spec and hook without calling the function. It will also print before/after hook orders.
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
$ nole -O ./test/**/*.test.ts
|
|
295
|
+
(skip) SkipAllTest.wontRun() {skip all class}
|
|
296
|
+
(skip) SkipAllTest.wontRunToo() {wont run too}
|
|
297
|
+
(skip) SkipAllWithoutReason.wontRun()
|
|
298
|
+
(ok) 0 ms BasicTest.checkEqual()
|
|
299
|
+
(ok) 0 ms DependencyTest.check()
|
|
300
|
+
(ok) 0 ms CleanUpLayer1Test.start()
|
|
301
|
+
(ok) 0 ms CleanUpLayer2Test.start()
|
|
302
|
+
(ok) 0 ms CleanUpLayer3Test.start()
|
|
303
|
+
(ok) 0 ms DynamicSkipTest.thisShouldBeSkipped()
|
|
304
|
+
(ok) 0 ms HookTest.pushFourIntoArray:beforeEach()
|
|
305
|
+
(ok) 0 ms HookTest.hasToBe4()
|
|
306
|
+
(skip) HookTest.hasToBe4Again() {no need}
|
|
307
|
+
(ok) 0 ms HookTest.pushFourIntoArray:beforeEach()
|
|
308
|
+
(ok) 0.03 ms HookTest.hasToBe4AgainButNotSkipped()
|
|
309
|
+
(ok) 0 ms MultiDependency.test()
|
|
310
|
+
(ok) 0 ms CleanUpLayer3Test:cleanUp()
|
|
311
|
+
(ok) 0 ms CleanUpLayer2Test:cleanUp()
|
|
312
|
+
(ok) 0 ms CleanUpLayer1Test:cleanUp()
|
|
313
|
+
(ok) 0 ms DynamicTest.thisTestsShouldNotFail()
|
|
314
|
+
(ok) 0 ms TimeFactorTest.evaluate()
|
|
315
|
+
(ok) 0 ms TimeDifferenceTest.evaluate()
|
|
316
|
+
(ok) 0 ms ExecutorTest.evaluate()
|
|
317
|
+
(ok) 0 ms ExecutorTest.throws()
|
|
318
|
+
(ok) 0 ms ExecutorTest.timeout()
|
|
319
|
+
```
|
|
320
|
+
|
|
263
321
|
## Compiled files
|
|
264
322
|
|
|
265
323
|
> Deprecated (v2.x+), It will always use ts-node/esm module
|
|
@@ -273,4 +331,4 @@ $ nole -T ./build/test/**/*.test.js
|
|
|
273
331
|
(ok) 1.09 ms QueueTest.Pipe()
|
|
274
332
|
```
|
|
275
333
|
|
|
276
|
-
> This will prevent to load ts-node register. It will be quite faster.
|
|
334
|
+
> This will prevent to load ts-node register. It will be quite faster.
|
package/bin/nole.js
CHANGED
|
@@ -14,6 +14,7 @@ const pkg = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.ur
|
|
|
14
14
|
program
|
|
15
15
|
.usage('<glob> ...')
|
|
16
16
|
.option('-L, --no-log', 'disable console.log')
|
|
17
|
+
.option('-O, --order-debug', 'shows execution order')
|
|
17
18
|
.version(pkg.version)
|
|
18
19
|
.parse(process.argv);
|
|
19
20
|
|
|
@@ -59,13 +60,16 @@ if (!program.args.length) {
|
|
|
59
60
|
|
|
60
61
|
log('Nole tests v' + pkg.version);
|
|
61
62
|
try {
|
|
62
|
-
await ManualRun(
|
|
63
|
+
await ManualRun({
|
|
64
|
+
log,
|
|
65
|
+
orderDebug: program.orderDebug
|
|
66
|
+
});
|
|
63
67
|
|
|
64
68
|
log(' discover: %s', TimeResolve(file))
|
|
65
69
|
log(' resolve: %s', TimeResolve(prop - file))
|
|
66
70
|
log(' tests: %s', TimeResolve(time.end() - prop))
|
|
67
71
|
process.exit(0);
|
|
68
|
-
} catch(e) {
|
|
72
|
+
} catch (e) {
|
|
69
73
|
console.error(e);
|
|
70
74
|
process.exit(1);
|
|
71
75
|
}
|
package/dist/data.js
CHANGED
package/dist/data.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAEA,MAAM,GAAG,GAAG,YAAY,CAAC;AAEzB,MAAM,UAAU,OAAO;IACrB,IAAI,CAAC,GAAQ,MAAM,
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAEA,MAAM,GAAG,GAAG,YAAY,CAAC;AAEzB,MAAM,UAAU,OAAO;IACrB,IAAI,CAAC,GAAQ,MAAM,CAAC;IAEpB,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE;QACV,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;KACf;IAED,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAa,CAAC;AACvC,CAAC"}
|
package/dist/decorators.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { HookType, ClassDefition } from "./test.js";
|
|
2
2
|
export declare function Spec(timeout?: number): MethodDecorator;
|
|
3
3
|
export declare function Dependency<T>(dependency: ClassDefition<T>): PropertyDecorator;
|
|
4
|
+
export declare function Dependencies(dependencies: ClassDefition<any>[]): ClassDecorator;
|
|
4
5
|
export declare function Hook(type: HookType, timeout?: number): MethodDecorator;
|
|
5
6
|
export declare function Skip(reason?: string): MethodDecorator;
|
|
6
7
|
export declare function SkipClass(reason?: string): ClassDecorator;
|
package/dist/decorators.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,QAAQ,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,QAAQ,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAO1D,wBAAgB,IAAI,CAAC,OAAO,GAAE,MAAa,GAAG,eAAe,CAI5D;AAOD,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAI7E;AAMD,wBAAgB,YAAY,CAAC,YAAY,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,cAAc,CAU/E;AASD,wBAAgB,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAE,MAAa,GAAG,eAAe,CAI5E;AAOD,wBAAgB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,eAAe,CAIrD;AAMD,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAIzD"}
|
package/dist/decorators.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { HashMap } from "./data.js";
|
|
2
2
|
import { Test } from "./test.js";
|
|
3
|
+
import camelcase from "camelcase";
|
|
3
4
|
export function Spec(timeout = 5000) {
|
|
4
5
|
return function (target, propertyKey) {
|
|
5
6
|
DeclareSpecForTestClass(target, propertyKey, timeout);
|
|
@@ -10,6 +11,17 @@ export function Dependency(dependency) {
|
|
|
10
11
|
DeclareDependencyForTestClass(target, propertyKey, dependency);
|
|
11
12
|
};
|
|
12
13
|
}
|
|
14
|
+
export function Dependencies(dependencies) {
|
|
15
|
+
return function (target) {
|
|
16
|
+
for (const dependency of dependencies) {
|
|
17
|
+
const propertyKey = camelcase(dependency.name, {
|
|
18
|
+
preserveConsecutiveUppercase: true,
|
|
19
|
+
locale: 'en-US'
|
|
20
|
+
});
|
|
21
|
+
DeclareDependencyForTestClass({ constructor: target }, propertyKey, dependency);
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
13
25
|
export function Hook(type, timeout = 5000) {
|
|
14
26
|
return function (target, propertyKey) {
|
|
15
27
|
DeclareHookForTestClass(target, propertyKey, type, timeout);
|
package/dist/decorators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAA2B,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Dependency, Spec, Hook, Skip, SkipClass } from './decorators.js';
|
|
1
|
+
export { Dependency, Spec, Hook, Skip, SkipClass, Dependencies } from './decorators.js';
|
|
2
2
|
export { HookType } from './test.js';
|
|
3
3
|
export { skipTest } from './dynamic.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { Dependency, Spec, Hook, Skip, SkipClass } from './decorators.js';
|
|
1
|
+
export { Dependency, Spec, Hook, Skip, SkipClass, Dependencies } from './decorators.js';
|
|
2
2
|
export { HookType } from './test.js';
|
|
3
3
|
export { skipTest } from './dynamic.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/run.d.ts
CHANGED
package/dist/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAeA,wBAAgB,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAeA,UAAU,OAAO;IACf,GAAG,EAAE,QAAQ,CAAC;IACd,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,iBA2CzC"}
|
package/dist/run.js
CHANGED
|
@@ -10,10 +10,11 @@ const SKIP_TEXT = colors.bold(colors.yellow(' (skip) '));
|
|
|
10
10
|
const DYNAMIC_SKIP_TEXT = colors.bold(colors.blue(' (dskip) '));
|
|
11
11
|
const FAILED_TEXT = colors.bold(colors.red(' (failed) '));
|
|
12
12
|
const HOOK_FAILED_TEXT = colors.bold(colors.red(' (hook failed) '));
|
|
13
|
-
export function ManualRun(
|
|
14
|
-
if (!log) {
|
|
15
|
-
log = console.log.bind(console);
|
|
13
|
+
export function ManualRun(options) {
|
|
14
|
+
if (!options.log) {
|
|
15
|
+
options.log = console.log.bind(console);
|
|
16
16
|
}
|
|
17
|
+
const log = options.log;
|
|
17
18
|
return new Promise(async (resolve, reject) => {
|
|
18
19
|
try {
|
|
19
20
|
let hashMap = new Map(HashMap());
|
|
@@ -27,14 +28,13 @@ export function ManualRun(log) {
|
|
|
27
28
|
hashMap.delete(test.target);
|
|
28
29
|
CreateInstanceIfNotExists(test);
|
|
29
30
|
HandleDependencies(test);
|
|
30
|
-
await HandleBeforeHooks(test);
|
|
31
|
-
await HandleSpecs(test,
|
|
32
|
-
await HandleAfterHooks(test);
|
|
31
|
+
await HandleBeforeHooks(test, options);
|
|
32
|
+
await HandleSpecs(test, options);
|
|
33
|
+
await HandleAfterHooks(test, options);
|
|
33
34
|
test.isFinished = true;
|
|
34
35
|
if (test.dependents.length == 0) {
|
|
35
|
-
await HandleCleanUp(test);
|
|
36
|
+
await HandleCleanUp(test, options);
|
|
36
37
|
}
|
|
37
|
-
test.isFullyFinished = true;
|
|
38
38
|
}
|
|
39
39
|
else {
|
|
40
40
|
DependencyLock(hashMap);
|
|
@@ -66,52 +66,71 @@ function HandleDependencies(test) {
|
|
|
66
66
|
test.testInstance[dependency.propertyKey] = dependency.dependency.testInstance;
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
-
async function HandleBeforeHooks(test) {
|
|
69
|
+
async function HandleBeforeHooks(test, options) {
|
|
70
70
|
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
71
71
|
if (hook.type != HookType.Before)
|
|
72
72
|
continue;
|
|
73
|
+
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'before' ? `.${propertyKey}:before` : ':before')));
|
|
73
74
|
try {
|
|
74
|
-
|
|
75
|
+
if (!options.orderDebug) {
|
|
76
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
let timeText = TimeFactor(0, hook.timeout);
|
|
80
|
+
options.log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
81
|
+
}
|
|
75
82
|
}
|
|
76
83
|
catch (e) {
|
|
77
|
-
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'before' ? `.${propertyKey}:before` : ':before')));
|
|
78
84
|
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
79
85
|
console.error(e?.stack ?? e);
|
|
80
86
|
throw e;
|
|
81
87
|
}
|
|
82
88
|
}
|
|
83
89
|
}
|
|
84
|
-
async function HandleBeforeEachHooks(test) {
|
|
90
|
+
async function HandleBeforeEachHooks(test, options) {
|
|
85
91
|
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
86
92
|
if (hook.type != HookType.BeforeEach)
|
|
87
93
|
continue;
|
|
94
|
+
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'beforeEach' ? `.${propertyKey}:beforeEach` : ':beforeEach')));
|
|
88
95
|
try {
|
|
89
|
-
|
|
96
|
+
if (!options.orderDebug) {
|
|
97
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
let timeText = TimeFactor(0, hook.timeout);
|
|
101
|
+
options.log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
102
|
+
}
|
|
90
103
|
}
|
|
91
104
|
catch (e) {
|
|
92
|
-
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'beforeEach' ? `.${propertyKey}:beforeEach` : ':beforeEach')));
|
|
93
105
|
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
94
106
|
console.error(e?.stack ?? e);
|
|
95
107
|
throw e;
|
|
96
108
|
}
|
|
97
109
|
}
|
|
98
110
|
}
|
|
99
|
-
async function HandleAfterEachHooks(test) {
|
|
111
|
+
async function HandleAfterEachHooks(test, options) {
|
|
100
112
|
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
101
113
|
if (hook.type != HookType.AfterEach)
|
|
102
114
|
continue;
|
|
115
|
+
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'afterEach' ? `.${propertyKey}:afterEach` : ':afterEach')));
|
|
103
116
|
try {
|
|
104
|
-
|
|
117
|
+
if (!options.orderDebug) {
|
|
118
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
let timeText = TimeFactor(0, hook.timeout);
|
|
122
|
+
options.log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
123
|
+
}
|
|
105
124
|
}
|
|
106
125
|
catch (e) {
|
|
107
|
-
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'afterEach' ? `.${propertyKey}:afterEach` : ':afterEach')));
|
|
108
126
|
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
109
127
|
console.error(e?.stack ?? e);
|
|
110
128
|
throw e;
|
|
111
129
|
}
|
|
112
130
|
}
|
|
113
131
|
}
|
|
114
|
-
async function HandleSpecs(test,
|
|
132
|
+
async function HandleSpecs(test, options) {
|
|
133
|
+
const log = options.log;
|
|
115
134
|
for (let [propertyKey, spec] of test.specs.entries()) {
|
|
116
135
|
let testName = colors.bold(colors.yellow(test.name + '.' + propertyKey));
|
|
117
136
|
const shouldPropertySkip = test.skip.has(propertyKey);
|
|
@@ -120,10 +139,12 @@ async function HandleSpecs(test, log) {
|
|
|
120
139
|
log(`${SKIP_TEXT} ${' '.repeat(9)} ${testName}() ${reason ? '{' + reason + '}' : ''}`);
|
|
121
140
|
continue;
|
|
122
141
|
}
|
|
123
|
-
await HandleBeforeEachHooks(test);
|
|
142
|
+
await HandleBeforeEachHooks(test, options);
|
|
124
143
|
let start = TimeDifference.begin();
|
|
125
144
|
try {
|
|
126
|
-
|
|
145
|
+
if (!options.orderDebug) {
|
|
146
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), spec.timeout);
|
|
147
|
+
}
|
|
127
148
|
let timeText = TimeFactor(start.end(), spec.timeout);
|
|
128
149
|
log(`${OK_TEXT} ${timeText} ${testName}()`);
|
|
129
150
|
}
|
|
@@ -138,45 +159,57 @@ async function HandleSpecs(test, log) {
|
|
|
138
159
|
console.error(e?.stack ?? e);
|
|
139
160
|
throw e;
|
|
140
161
|
}
|
|
141
|
-
await HandleAfterEachHooks(test);
|
|
162
|
+
await HandleAfterEachHooks(test, options);
|
|
142
163
|
}
|
|
143
164
|
}
|
|
144
|
-
async function HandleAfterHooks(test) {
|
|
165
|
+
async function HandleAfterHooks(test, options) {
|
|
145
166
|
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
146
167
|
if (hook.type != HookType.After)
|
|
147
168
|
continue;
|
|
169
|
+
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'after' ? `.${propertyKey}:after` : ':after')));
|
|
148
170
|
try {
|
|
149
|
-
|
|
171
|
+
if (!options.orderDebug) {
|
|
172
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
let timeText = TimeFactor(0, hook.timeout);
|
|
176
|
+
options.log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
177
|
+
}
|
|
150
178
|
}
|
|
151
179
|
catch (e) {
|
|
152
|
-
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'after' ? `.${propertyKey}:after` : ':after')));
|
|
153
180
|
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
154
181
|
console.error(e?.stack ?? e);
|
|
155
182
|
throw e;
|
|
156
183
|
}
|
|
157
184
|
}
|
|
158
185
|
}
|
|
159
|
-
async function HandleCleanUp(test) {
|
|
186
|
+
async function HandleCleanUp(test, options) {
|
|
160
187
|
if (test.cleanUpCalled)
|
|
161
188
|
return;
|
|
162
|
-
if (!test.dependents.every(dependent => dependent.isFinished))
|
|
189
|
+
if (!test.dependents.every(dependent => dependent.isFinished && dependent.cleanUpCalled))
|
|
163
190
|
return;
|
|
164
191
|
test.cleanUpCalled = true;
|
|
192
|
+
const log = options.log;
|
|
165
193
|
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
166
194
|
if (hook.type != HookType.CleanUp)
|
|
167
195
|
continue;
|
|
196
|
+
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'cleanUp' ? `.${propertyKey}:cleanUp` : ':cleanUp')));
|
|
197
|
+
let start = TimeDifference.begin();
|
|
168
198
|
try {
|
|
169
|
-
|
|
199
|
+
if (!options.orderDebug) {
|
|
200
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
|
|
201
|
+
}
|
|
202
|
+
let timeText = TimeFactor(start.end(), hook.timeout);
|
|
203
|
+
log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
170
204
|
}
|
|
171
205
|
catch (e) {
|
|
172
|
-
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'cleanUp' ? `.${propertyKey}:cleanUp` : ':cleanUp')));
|
|
173
206
|
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
174
207
|
console.error(e?.stack ?? e);
|
|
175
208
|
throw e;
|
|
176
209
|
}
|
|
177
210
|
}
|
|
178
211
|
for (let tree of test.dependencies) {
|
|
179
|
-
await HandleCleanUp(tree.dependency);
|
|
212
|
+
await HandleCleanUp(tree.dependency, options);
|
|
180
213
|
}
|
|
181
214
|
}
|
|
182
215
|
function DependencyLock(hashMap) {
|
package/dist/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAQ,MAAM,WAAW,CAAC;AAE3C,MAAM,MAAM,GAAI,IAAY,CAAC,OAAO,CAAC;AAErC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AACxD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AAC3D,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAClE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1D,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAQ,MAAM,WAAW,CAAC;AAE3C,MAAM,MAAM,GAAI,IAAY,CAAC,OAAO,CAAC;AAErC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;AACxD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AAC3D,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;AAClE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;AAC1D,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAOpE,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;QAChB,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACzC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAExB,OAAO,IAAI,OAAO,CAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QACjD,IAAI;YACF,IAAI,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAEjC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACjB,GAAG,CAAC,GAAG,WAAW,iBAAiB,CAAC,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;aACnC;YAED,OAAO,OAAO,CAAC,IAAI,EAAE;gBACnB,IAAI,IAAI,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;gBAE5C,IAAI,IAAI,EAAE;oBACR,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5B,yBAAyB,CAAC,IAAI,CAAC,CAAC;oBAChC,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBAEzB,MAAM,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBACvC,MAAM,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBACjC,MAAM,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBAEtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;oBAEvB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;wBAC/B,MAAM,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;qBACpC;iBACF;qBAAM;oBACL,cAAc,CAAC,OAAO,CAAC,CAAC;iBACzB;aACF;YAED,OAAO,EAAE,CAAC;SACX;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;SACX;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAuB;IACtD,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE;QACjC,IAAI,IAAI,CAAC,UAAU;YAAE,SAAS;QAC9B,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,SAAS;QAErE,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAU;IAC3C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACvC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAU;IACpC,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,YAAY,EAAE;QACxC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC;KAChF;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAAU,EAAE,OAAgB;IAC3D,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;QACpD,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,MAAM;YAAE,SAAS;QAE3C,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAExH,IAAI;YACF,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBACvB,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACtF;iBAAM;gBACL,IAAI,QAAQ,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAE3C,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC;aACrD;SAEF;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,gBAAgB,IAAI,QAAQ,IAAI,CAAC,CAAC;YACnD,OAAO,CAAC,KAAK,CAAE,CAAS,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,CAAC;SACT;KACF;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,IAAU,EAAE,OAAgB;IAC/D,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;QACpD,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,UAAU;YAAE,SAAS;QAC/C,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,WAAW,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,WAAW,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAEpI,IAAI;YACF,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBACvB,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACtF;iBAAM;gBACL,IAAI,QAAQ,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAE3C,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC;aACrD;SAEF;QAAC,OAAO,CAAC,EAAE;YAEV,OAAO,CAAC,KAAK,CAAC,GAAG,gBAAgB,IAAI,QAAQ,IAAI,CAAC,CAAC;YACnD,OAAO,CAAC,KAAK,CAAE,CAAS,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,CAAC;SACT;KACF;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,IAAU,EAAE,OAAgB;IAC9D,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;QACpD,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,SAAS;YAAE,SAAS;QAE9C,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEjI,IAAI;YACF,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBACvB,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACtF;iBAAM;gBACL,IAAI,QAAQ,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAE3C,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC;aACrD;SAEF;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,gBAAgB,IAAI,QAAQ,IAAI,CAAC,CAAC;YACnD,OAAO,CAAC,KAAK,CAAE,CAAS,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,CAAC;SACT;KACF;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAU,EAAE,OAAgB;IACrD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAExB,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;QACpD,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC;QAEzE,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,kBAAkB,IAAI,IAAI,CAAC,SAAS,EAAE;YACxC,IAAI,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAU,CAAC,MAAM,CAAC;YAC9F,GAAG,CAAC,GAAG,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvF,SAAS;SACV;QAED,MAAM,qBAAqB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE3C,IAAI,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;QAEnC,IAAI;YACF,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBACvB,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACtF;YAED,IAAI,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAErD,GAAG,CAAC,GAAG,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC;SAC7C;QAAC,OAAO,CAAC,EAAE;YACV,IAAK,CAAS,EAAE,YAAY,EAAE;gBAC5B,IAAI,MAAM,GAAI,CAAS,CAAC,MAAM,CAAC;gBAC/B,GAAG,CAAC,GAAG,iBAAiB,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,MAAM,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/F,SAAS;aACV;YAED,IAAI,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAErD,OAAO,CAAC,KAAK,CAAC,GAAG,WAAW,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC;YAC1D,OAAO,CAAC,KAAK,CAAE,CAAS,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,CAAC;SACT;QAED,MAAM,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC3C;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAU,EAAE,OAAgB;IAC1D,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;QACpD,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK;YAAE,SAAS;QAE1C,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAErH,IAAI;YACF,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBACvB,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACtF;iBAAM;gBACL,IAAI,QAAQ,GAAG,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;gBAE3C,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC;aACrD;SAEF;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,gBAAgB,IAAI,QAAQ,IAAI,CAAC,CAAC;YACnD,OAAO,CAAC,KAAK,CAAE,CAAS,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,CAAC;SACT;KACF;AACH,CAAC;AAGD,KAAK,UAAU,aAAa,CAAC,IAAU,EAAE,OAAgB;IACvD,IAAI,IAAI,CAAC,aAAa;QAAE,OAAO;IAC/B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,aAAa,CAAC;QAAE,OAAO;IAEjG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;IAE1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAExB,KAAK,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;QACpD,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO;YAAE,SAAS;QAE5C,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,WAAW,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3H,IAAI,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;QAEnC,IAAI;YACF,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBACvB,MAAM,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACtF;YAED,IAAI,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAErD,GAAG,CAAC,GAAG,OAAO,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC;SAC7C;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,GAAG,gBAAgB,IAAI,QAAQ,IAAI,CAAC,CAAC;YACnD,OAAO,CAAC,KAAK,CAAE,CAAS,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,CAAC;SACT;KACF;IAED,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE;QAClC,MAAM,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;KAC/C;AACH,CAAC;AAED,SAAS,cAAc,CAAC,OAAuB;IAC7C,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC;IAEvG,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrC,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE;QAEjC,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAChL;IAED,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAC/C,CAAC"}
|
package/dist/test.d.ts
CHANGED
package/dist/test.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,IAAI;
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,KAAK;IACpB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,IAAI;IAWI,MAAM,EAAE,GAAG;IAV9B,YAAY,EAAE,WAAW,EAAE,CAAM;IACjC,UAAU,EAAE,IAAI,EAAE,CAAM;IACxB,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;gBAEC,MAAM,EAAE,GAAG;IAE9B,IAAI,IAAI,QAEP;CACF;AAED,oBAAY,QAAQ;IAClB,MAAM,IAAA;IACN,KAAK,IAAA;IACL,UAAU,IAAA;IACV,SAAS,IAAA;IACT,OAAO,IAAA;CACR;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAAI,QAAO,CAAC,CAAC;CAAE"}
|
package/dist/test.js
CHANGED
|
@@ -7,9 +7,8 @@ export class Test {
|
|
|
7
7
|
this.skipClass = null;
|
|
8
8
|
this.specs = new Map();
|
|
9
9
|
this.hooks = new Map();
|
|
10
|
-
this.cleanUpCalled = false;
|
|
11
10
|
this.isFinished = false;
|
|
12
|
-
this.
|
|
11
|
+
this.cleanUpCalled = false;
|
|
13
12
|
}
|
|
14
13
|
get name() {
|
|
15
14
|
return this.target.name;
|
package/dist/test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAO,IAAI;
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAO,IAAI;IAWf,YAAmB,MAAW;QAAX,WAAM,GAAN,MAAM,CAAK;QAV9B,iBAAY,GAAkB,EAAE,CAAC;QACjC,eAAU,GAAW,EAAE,CAAC;QACxB,SAAI,GAAG,IAAI,GAAG,EAAiB,CAAC;QAChC,cAAS,GAAiB,IAAI,CAAC;QAC/B,UAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;QACjC,UAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;QACjC,eAAU,GAAY,KAAK,CAAC;QAC5B,kBAAa,GAAY,KAAK,CAAC;IAGE,CAAC;IAElC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,CAAN,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,2CAAM,CAAA;IACN,yCAAK,CAAA;IACL,mDAAU,CAAA;IACV,iDAAS,CAAA;IACT,6CAAO,CAAA;AACT,CAAC,EANW,QAAQ,KAAR,QAAQ,QAMnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.test.d.ts","sourceRoot":"","sources":["../../src/utils/executor.test.ts"],"names":[],"mappings":"AAIA,qBAAa,YAAY;IAEjB,QAAQ;IAMR,MAAM;IASN,OAAO;CAKd"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import * as assert from "assert";
|
|
11
|
+
import { Spec } from "../index.js";
|
|
12
|
+
import { Executor } from "./executor.js";
|
|
13
|
+
export class ExecutorTest {
|
|
14
|
+
async evaluate() {
|
|
15
|
+
await Executor(() => 1, 1);
|
|
16
|
+
await Executor(async () => 1, 1);
|
|
17
|
+
}
|
|
18
|
+
async throws() {
|
|
19
|
+
await assert.rejects(() => {
|
|
20
|
+
return Executor(() => {
|
|
21
|
+
throw new Error('throws');
|
|
22
|
+
}, 1);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
async timeout() {
|
|
26
|
+
await assert.rejects(() => {
|
|
27
|
+
return Executor(() => new Promise(() => { }), 10);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
__decorate([
|
|
32
|
+
Spec(),
|
|
33
|
+
__metadata("design:type", Function),
|
|
34
|
+
__metadata("design:paramtypes", []),
|
|
35
|
+
__metadata("design:returntype", Promise)
|
|
36
|
+
], ExecutorTest.prototype, "evaluate", null);
|
|
37
|
+
__decorate([
|
|
38
|
+
Spec(),
|
|
39
|
+
__metadata("design:type", Function),
|
|
40
|
+
__metadata("design:paramtypes", []),
|
|
41
|
+
__metadata("design:returntype", Promise)
|
|
42
|
+
], ExecutorTest.prototype, "throws", null);
|
|
43
|
+
__decorate([
|
|
44
|
+
Spec(),
|
|
45
|
+
__metadata("design:type", Function),
|
|
46
|
+
__metadata("design:paramtypes", []),
|
|
47
|
+
__metadata("design:returntype", Promise)
|
|
48
|
+
], ExecutorTest.prototype, "timeout", null);
|
|
49
|
+
//# sourceMappingURL=executor.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.test.js","sourceRoot":"","sources":["../../src/utils/executor.test.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,YAAY;IAEvB,KAAK,CAAC,QAAQ;QACZ,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,MAAM,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IAGD,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YACxB,OAAO,QAAQ,CAAC,GAAG,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC,EAAE,CAAC,CAAC,CAAC;QACR,CAAC,CAAC,CAAA;IACJ,CAAC;IAGD,KAAK,CAAC,OAAO;QACX,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YACxB,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC,CAAC,CAAA;IACJ,CAAC;CACF;AApBC;IADC,IAAI,EAAE;;;;4CAIN;AAGD;IADC,IAAI,EAAE;;;;0CAON;AAGD;IADC,IAAI,EAAE;;;;2CAKN"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time_difference.test.d.ts","sourceRoot":"","sources":["../../src/utils/time_difference.test.ts"],"names":[],"mappings":"AAKA,qBAAa,kBAAkB;IAEvB,QAAQ;CAIf"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Spec } from "../index.js";
|
|
11
|
+
import { TimeDifference } from "./time_difference.js";
|
|
12
|
+
export class TimeDifferenceTest {
|
|
13
|
+
async evaluate() {
|
|
14
|
+
const td = TimeDifference.begin();
|
|
15
|
+
td.end();
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
__decorate([
|
|
19
|
+
Spec(),
|
|
20
|
+
__metadata("design:type", Function),
|
|
21
|
+
__metadata("design:paramtypes", []),
|
|
22
|
+
__metadata("design:returntype", Promise)
|
|
23
|
+
], TimeDifferenceTest.prototype, "evaluate", null);
|
|
24
|
+
//# sourceMappingURL=time_difference.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time_difference.test.js","sourceRoot":"","sources":["../../src/utils/time_difference.test.ts"],"names":[],"mappings":";;;;;;;;;AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,OAAO,kBAAkB;IAE7B,KAAK,CAAC,QAAQ;QACZ,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE,CAAC;QAClC,EAAE,CAAC,GAAG,EAAE,CAAA;IACV,CAAC;CACF;AAJC;IADC,IAAI,EAAE;;;;kDAIN"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time_factor.test.d.ts","sourceRoot":"","sources":["../../src/utils/time_factor.test.ts"],"names":[],"mappings":"AAGA,qBAAa,cAAc;IAEnB,QAAQ;CAuBf"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Spec } from "../index.js";
|
|
11
|
+
import { Delay, TimeFactor } from "./time_factor.js";
|
|
12
|
+
export class TimeFactorTest {
|
|
13
|
+
async evaluate() {
|
|
14
|
+
await Delay(1);
|
|
15
|
+
for (const n of [
|
|
16
|
+
100,
|
|
17
|
+
1000,
|
|
18
|
+
60 * 1000,
|
|
19
|
+
120 * 1000,
|
|
20
|
+
60 * 60 * 1000,
|
|
21
|
+
65 * 60 * 1000,
|
|
22
|
+
25 * 60 * 60 * 1000
|
|
23
|
+
]) {
|
|
24
|
+
TimeFactor(n / 1000, n);
|
|
25
|
+
TimeFactor(n / 500, n);
|
|
26
|
+
TimeFactor(n / 10, n);
|
|
27
|
+
TimeFactor(n / 6, n);
|
|
28
|
+
TimeFactor(n / 4, n);
|
|
29
|
+
TimeFactor(n / 2, n);
|
|
30
|
+
TimeFactor(n / 1.5, n);
|
|
31
|
+
TimeFactor(n, n);
|
|
32
|
+
TimeFactor(n * 2, n);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
__decorate([
|
|
37
|
+
Spec(),
|
|
38
|
+
__metadata("design:type", Function),
|
|
39
|
+
__metadata("design:paramtypes", []),
|
|
40
|
+
__metadata("design:returntype", Promise)
|
|
41
|
+
], TimeFactorTest.prototype, "evaluate", null);
|
|
42
|
+
//# sourceMappingURL=time_factor.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time_factor.test.js","sourceRoot":"","sources":["../../src/utils/time_factor.test.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,OAAO,cAAc;IAEzB,KAAK,CAAC,QAAQ;QACZ,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;QAEf,KAAK,MAAM,CAAC,IAAI;YACd,GAAG;YACH,IAAI;YACJ,EAAE,GAAG,IAAI;YACT,GAAG,GAAG,IAAI;YACV,EAAE,GAAG,EAAE,GAAG,IAAI;YACd,EAAE,GAAG,EAAE,GAAG,IAAI;YACd,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;SACpB,EAAE;YACD,UAAU,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;YACxB,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;YACvB,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YACtB,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC;YACvB,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjB,UAAU,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;SACtB;IACH,CAAC;CACF;AAvBC;IADC,IAAI,EAAE;;;;8CAuBN"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nole",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Testing Library for Typescript projects",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
},
|
|
15
15
|
"scripts": {
|
|
16
16
|
"build": "tsc",
|
|
17
|
-
"test": "node --loader=ts-node/esm ./bin/nole.js ./test/**/*.test.ts"
|
|
17
|
+
"test": "node --loader=ts-node/esm ./bin/nole.js ./test/**/*.test.ts ./src/**/*.test.ts",
|
|
18
|
+
"coverage": "c8 npm run test"
|
|
18
19
|
},
|
|
19
20
|
"keywords": [
|
|
20
21
|
"typescript",
|
|
@@ -25,10 +26,30 @@
|
|
|
25
26
|
"license": "ISC",
|
|
26
27
|
"dependencies": {
|
|
27
28
|
"@types/node": "^16.11.41",
|
|
29
|
+
"camelcase": "^7.0.0",
|
|
28
30
|
"colors": "^1.3.3",
|
|
29
31
|
"commander": "^2.19.0",
|
|
30
32
|
"glob": "^7.2.3",
|
|
31
33
|
"ts-node": "^10.8.1",
|
|
32
34
|
"typescript": "^4.7.3"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"c8": "^7.11.3"
|
|
38
|
+
},
|
|
39
|
+
"c8": {
|
|
40
|
+
"all": true,
|
|
41
|
+
"check-coverage": true,
|
|
42
|
+
"report-dir": "./coverage",
|
|
43
|
+
"reporter": [
|
|
44
|
+
"text",
|
|
45
|
+
"lcovonly",
|
|
46
|
+
"text-summary"
|
|
47
|
+
],
|
|
48
|
+
"include": [
|
|
49
|
+
"src/**/*.ts"
|
|
50
|
+
],
|
|
51
|
+
"exclude": [
|
|
52
|
+
"**/*.test.ts"
|
|
53
|
+
]
|
|
33
54
|
}
|
|
34
55
|
}
|
package/src/data.ts
CHANGED
package/src/decorators.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { HashMap } from "./data.js";
|
|
2
2
|
import { Test, HookType, ClassDefition } from "./test.js";
|
|
3
|
+
import camelcase from "camelcase";
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Assignes method as test case
|
|
@@ -22,6 +23,23 @@ export function Dependency<T>(dependency: ClassDefition<T>): PropertyDecorator {
|
|
|
22
23
|
}
|
|
23
24
|
}
|
|
24
25
|
|
|
26
|
+
/**
|
|
27
|
+
* Assignes dependencies for test class
|
|
28
|
+
* @param dependencies a Test class array that needed
|
|
29
|
+
*/
|
|
30
|
+
export function Dependencies(dependencies: ClassDefition<any>[]): ClassDecorator {
|
|
31
|
+
return function (target) {
|
|
32
|
+
for (const dependency of dependencies) {
|
|
33
|
+
const propertyKey = camelcase(dependency.name, {
|
|
34
|
+
preserveConsecutiveUppercase: true,
|
|
35
|
+
locale: 'en-US'
|
|
36
|
+
});
|
|
37
|
+
DeclareDependencyForTestClass({ constructor: target }, propertyKey, dependency);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
|
|
25
43
|
|
|
26
44
|
/**
|
|
27
45
|
* Creates hook for test case
|
package/src/index.ts
CHANGED
package/src/run.ts
CHANGED
|
@@ -13,11 +13,18 @@ const DYNAMIC_SKIP_TEXT = colors.bold(colors.blue(' (dskip) '));
|
|
|
13
13
|
const FAILED_TEXT = colors.bold(colors.red(' (failed) '));
|
|
14
14
|
const HOOK_FAILED_TEXT = colors.bold(colors.red(' (hook failed) '));
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
interface Options {
|
|
17
|
+
log: Function,
|
|
18
|
+
orderDebug: boolean
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export function ManualRun(options: Options) {
|
|
22
|
+
if (!options.log) {
|
|
23
|
+
options.log = console.log.bind(console);
|
|
19
24
|
}
|
|
20
25
|
|
|
26
|
+
const log = options.log;
|
|
27
|
+
|
|
21
28
|
return new Promise<void>(async (resolve, reject) => {
|
|
22
29
|
try {
|
|
23
30
|
let hashMap = new Map(HashMap());
|
|
@@ -35,17 +42,15 @@ export function ManualRun(log: Function) {
|
|
|
35
42
|
CreateInstanceIfNotExists(test);
|
|
36
43
|
HandleDependencies(test);
|
|
37
44
|
|
|
38
|
-
await HandleBeforeHooks(test);
|
|
39
|
-
await HandleSpecs(test,
|
|
40
|
-
await HandleAfterHooks(test);
|
|
45
|
+
await HandleBeforeHooks(test, options);
|
|
46
|
+
await HandleSpecs(test, options);
|
|
47
|
+
await HandleAfterHooks(test, options);
|
|
41
48
|
|
|
42
49
|
test.isFinished = true;
|
|
43
|
-
|
|
50
|
+
|
|
44
51
|
if (test.dependents.length == 0) {
|
|
45
|
-
await HandleCleanUp(test);
|
|
52
|
+
await HandleCleanUp(test, options);
|
|
46
53
|
}
|
|
47
|
-
|
|
48
|
-
test.isFullyFinished = true;
|
|
49
54
|
} else {
|
|
50
55
|
DependencyLock(hashMap);
|
|
51
56
|
}
|
|
@@ -79,16 +84,22 @@ function HandleDependencies(test: Test) {
|
|
|
79
84
|
}
|
|
80
85
|
}
|
|
81
86
|
|
|
82
|
-
async function HandleBeforeHooks(test: Test) {
|
|
87
|
+
async function HandleBeforeHooks(test: Test, options: Options) {
|
|
83
88
|
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
84
89
|
if (hook.type != HookType.Before) continue;
|
|
85
90
|
|
|
91
|
+
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'before' ? `.${propertyKey}:before` : ':before')));
|
|
92
|
+
|
|
86
93
|
try {
|
|
87
|
-
|
|
94
|
+
if (!options.orderDebug) {
|
|
95
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
|
|
96
|
+
} else {
|
|
97
|
+
let timeText = TimeFactor(0, hook.timeout);
|
|
88
98
|
|
|
89
|
-
|
|
90
|
-
|
|
99
|
+
options.log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
100
|
+
}
|
|
91
101
|
|
|
102
|
+
} catch (e) {
|
|
92
103
|
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
93
104
|
console.error((e as any)?.stack ?? e);
|
|
94
105
|
throw e;
|
|
@@ -96,14 +107,21 @@ async function HandleBeforeHooks(test: Test) {
|
|
|
96
107
|
}
|
|
97
108
|
}
|
|
98
109
|
|
|
99
|
-
async function HandleBeforeEachHooks(test: Test) {
|
|
110
|
+
async function HandleBeforeEachHooks(test: Test, options: Options) {
|
|
100
111
|
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
101
112
|
if (hook.type != HookType.BeforeEach) continue;
|
|
113
|
+
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'beforeEach' ? `.${propertyKey}:beforeEach` : ':beforeEach')));
|
|
114
|
+
|
|
102
115
|
try {
|
|
103
|
-
|
|
116
|
+
if (!options.orderDebug) {
|
|
117
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
|
|
118
|
+
} else {
|
|
119
|
+
let timeText = TimeFactor(0, hook.timeout);
|
|
120
|
+
|
|
121
|
+
options.log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
122
|
+
}
|
|
104
123
|
|
|
105
124
|
} catch (e) {
|
|
106
|
-
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'beforeEach' ? `.${propertyKey}:beforeEach` : ':beforeEach')));
|
|
107
125
|
|
|
108
126
|
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
109
127
|
console.error((e as any)?.stack ?? e);
|
|
@@ -112,15 +130,22 @@ async function HandleBeforeEachHooks(test: Test) {
|
|
|
112
130
|
}
|
|
113
131
|
}
|
|
114
132
|
|
|
115
|
-
async function HandleAfterEachHooks(test: Test) {
|
|
133
|
+
async function HandleAfterEachHooks(test: Test, options: Options) {
|
|
116
134
|
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
117
135
|
if (hook.type != HookType.AfterEach) continue;
|
|
136
|
+
|
|
137
|
+
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'afterEach' ? `.${propertyKey}:afterEach` : ':afterEach')));
|
|
138
|
+
|
|
118
139
|
try {
|
|
119
|
-
|
|
140
|
+
if (!options.orderDebug) {
|
|
141
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
|
|
142
|
+
} else {
|
|
143
|
+
let timeText = TimeFactor(0, hook.timeout);
|
|
120
144
|
|
|
121
|
-
|
|
122
|
-
|
|
145
|
+
options.log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
146
|
+
}
|
|
123
147
|
|
|
148
|
+
} catch (e) {
|
|
124
149
|
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
125
150
|
console.error((e as any)?.stack ?? e);
|
|
126
151
|
throw e;
|
|
@@ -128,7 +153,9 @@ async function HandleAfterEachHooks(test: Test) {
|
|
|
128
153
|
}
|
|
129
154
|
}
|
|
130
155
|
|
|
131
|
-
async function HandleSpecs(test: Test,
|
|
156
|
+
async function HandleSpecs(test: Test, options: Options) {
|
|
157
|
+
const log = options.log;
|
|
158
|
+
|
|
132
159
|
for (let [propertyKey, spec] of test.specs.entries()) {
|
|
133
160
|
let testName = colors.bold(colors.yellow(test.name + '.' + propertyKey));
|
|
134
161
|
|
|
@@ -139,12 +166,14 @@ async function HandleSpecs(test: Test, log: Function) {
|
|
|
139
166
|
continue;
|
|
140
167
|
}
|
|
141
168
|
|
|
142
|
-
await HandleBeforeEachHooks(test);
|
|
169
|
+
await HandleBeforeEachHooks(test, options);
|
|
143
170
|
|
|
144
171
|
let start = TimeDifference.begin();
|
|
145
172
|
|
|
146
173
|
try {
|
|
147
|
-
|
|
174
|
+
if (!options.orderDebug) {
|
|
175
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), spec.timeout);
|
|
176
|
+
}
|
|
148
177
|
|
|
149
178
|
let timeText = TimeFactor(start.end(), spec.timeout);
|
|
150
179
|
|
|
@@ -163,19 +192,26 @@ async function HandleSpecs(test: Test, log: Function) {
|
|
|
163
192
|
throw e;
|
|
164
193
|
}
|
|
165
194
|
|
|
166
|
-
await HandleAfterEachHooks(test);
|
|
195
|
+
await HandleAfterEachHooks(test, options);
|
|
167
196
|
}
|
|
168
197
|
}
|
|
169
198
|
|
|
170
|
-
async function HandleAfterHooks(test: Test) {
|
|
199
|
+
async function HandleAfterHooks(test: Test, options: Options) {
|
|
171
200
|
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
172
201
|
if (hook.type != HookType.After) continue;
|
|
202
|
+
|
|
203
|
+
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'after' ? `.${propertyKey}:after` : ':after')));
|
|
204
|
+
|
|
173
205
|
try {
|
|
174
|
-
|
|
206
|
+
if (!options.orderDebug) {
|
|
207
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
|
|
208
|
+
} else {
|
|
209
|
+
let timeText = TimeFactor(0, hook.timeout);
|
|
175
210
|
|
|
176
|
-
|
|
177
|
-
|
|
211
|
+
options.log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
212
|
+
}
|
|
178
213
|
|
|
214
|
+
} catch (e) {
|
|
179
215
|
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
180
216
|
console.error((e as any)?.stack ?? e);
|
|
181
217
|
throw e;
|
|
@@ -184,20 +220,29 @@ async function HandleAfterHooks(test: Test) {
|
|
|
184
220
|
}
|
|
185
221
|
|
|
186
222
|
|
|
187
|
-
async function HandleCleanUp(test: Test) {
|
|
223
|
+
async function HandleCleanUp(test: Test, options: Options) {
|
|
188
224
|
if (test.cleanUpCalled) return;
|
|
189
|
-
if (!test.dependents.every(dependent => dependent.isFinished)) return;
|
|
225
|
+
if (!test.dependents.every(dependent => dependent.isFinished && dependent.cleanUpCalled)) return;
|
|
190
226
|
|
|
191
227
|
test.cleanUpCalled = true;
|
|
192
228
|
|
|
229
|
+
const log = options.log;
|
|
230
|
+
|
|
193
231
|
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
194
232
|
if (hook.type != HookType.CleanUp) continue;
|
|
233
|
+
|
|
234
|
+
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'cleanUp' ? `.${propertyKey}:cleanUp` : ':cleanUp')));
|
|
235
|
+
let start = TimeDifference.begin();
|
|
236
|
+
|
|
195
237
|
try {
|
|
196
|
-
|
|
238
|
+
if (!options.orderDebug) {
|
|
239
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
|
|
240
|
+
}
|
|
197
241
|
|
|
198
|
-
|
|
199
|
-
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'cleanUp' ? `.${propertyKey}:cleanUp` : ':cleanUp')));
|
|
242
|
+
let timeText = TimeFactor(start.end(), hook.timeout);
|
|
200
243
|
|
|
244
|
+
log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
245
|
+
} catch (e) {
|
|
201
246
|
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
202
247
|
console.error((e as any)?.stack ?? e);
|
|
203
248
|
throw e;
|
|
@@ -205,7 +250,7 @@ async function HandleCleanUp(test: Test) {
|
|
|
205
250
|
}
|
|
206
251
|
|
|
207
252
|
for (let tree of test.dependencies) {
|
|
208
|
-
await HandleCleanUp(tree.dependency);
|
|
253
|
+
await HandleCleanUp(tree.dependency, options);
|
|
209
254
|
}
|
|
210
255
|
}
|
|
211
256
|
|
package/src/test.ts
CHANGED
|
@@ -23,15 +23,11 @@ export class Test {
|
|
|
23
23
|
skipClass: ISkip | null = null;
|
|
24
24
|
specs = new Map<string, ISpec>();
|
|
25
25
|
hooks = new Map<string, IHook>();
|
|
26
|
-
isFinished: boolean; // cleanup ignored
|
|
27
|
-
isFullyFinished: boolean; // including cleanup
|
|
26
|
+
isFinished: boolean = false; // cleanup ignored
|
|
28
27
|
cleanUpCalled: boolean = false;
|
|
29
28
|
testInstance: any;
|
|
30
29
|
|
|
31
|
-
constructor(public target: any) {
|
|
32
|
-
this.isFinished = false;
|
|
33
|
-
this.isFullyFinished = false;
|
|
34
|
-
}
|
|
30
|
+
constructor(public target: any) {}
|
|
35
31
|
|
|
36
32
|
get name() {
|
|
37
33
|
return this.target.name;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as assert from "assert";
|
|
2
|
+
import { Spec } from "../index.js";
|
|
3
|
+
import { Executor } from "./executor.js";
|
|
4
|
+
|
|
5
|
+
export class ExecutorTest {
|
|
6
|
+
@Spec()
|
|
7
|
+
async evaluate() {
|
|
8
|
+
await Executor(() => 1, 1);
|
|
9
|
+
await Executor(async () => 1, 1);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@Spec()
|
|
13
|
+
async throws() {
|
|
14
|
+
await assert.rejects(() => {
|
|
15
|
+
return Executor(() => {
|
|
16
|
+
throw new Error('throws');
|
|
17
|
+
}, 1);
|
|
18
|
+
})
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
@Spec()
|
|
22
|
+
async timeout() {
|
|
23
|
+
await assert.rejects(() => {
|
|
24
|
+
return Executor(() => new Promise(() => {}), 10);
|
|
25
|
+
})
|
|
26
|
+
}
|
|
27
|
+
}
|
package/src/utils/executor.ts
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as assert from "assert";
|
|
2
|
+
import { Spec } from "../index.js";
|
|
3
|
+
import { Executor } from "./executor.js";
|
|
4
|
+
import { TimeDifference } from "./time_difference.js";
|
|
5
|
+
|
|
6
|
+
export class TimeDifferenceTest {
|
|
7
|
+
@Spec()
|
|
8
|
+
async evaluate() {
|
|
9
|
+
const td = TimeDifference.begin();
|
|
10
|
+
td.end()
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Spec } from "../index.js";
|
|
2
|
+
import { Delay, TimeFactor } from "./time_factor.js";
|
|
3
|
+
|
|
4
|
+
export class TimeFactorTest {
|
|
5
|
+
@Spec()
|
|
6
|
+
async evaluate() {
|
|
7
|
+
await Delay(1);
|
|
8
|
+
|
|
9
|
+
for (const n of [
|
|
10
|
+
100,
|
|
11
|
+
1000,
|
|
12
|
+
60 * 1000,
|
|
13
|
+
120 * 1000,
|
|
14
|
+
60 * 60 * 1000,
|
|
15
|
+
65 * 60 * 1000,
|
|
16
|
+
25 * 60 * 60 * 1000
|
|
17
|
+
]) {
|
|
18
|
+
TimeFactor(n / 1000, n);
|
|
19
|
+
TimeFactor(n / 500, n);
|
|
20
|
+
TimeFactor(n / 10, n);
|
|
21
|
+
TimeFactor(n / 6, n);
|
|
22
|
+
TimeFactor(n / 4, n);
|
|
23
|
+
TimeFactor(n / 2, n);
|
|
24
|
+
TimeFactor(n / 1.5, n);
|
|
25
|
+
TimeFactor(n, n);
|
|
26
|
+
TimeFactor(n * 2, n);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
package/test/hook.test.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as assert from 'assert';
|
|
2
2
|
import { Spec, Hook, Skip, HookType } from "../src/index.js";
|
|
3
3
|
|
|
4
|
-
export class
|
|
4
|
+
export class HookTest {
|
|
5
5
|
array: any[] = [1, 2, 3];
|
|
6
6
|
|
|
7
7
|
@Hook(HookType.BeforeEach)
|
|
8
|
-
async
|
|
8
|
+
async pushFourIntoArray() {
|
|
9
9
|
this.array.push(4);
|
|
10
10
|
}
|
|
11
11
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as assert from 'assert';
|
|
2
|
+
import { Dependencies, Spec } from "../src/index.js";
|
|
3
|
+
import { BasicTest } from './basic.test.js';
|
|
4
|
+
import { CleanUpLayer1Test, CleanUpLayer2Test, CleanUpLayer3Test } from './clean-up.test.js';
|
|
5
|
+
import { DynamicSkipTest } from './dynamic-skip.test.js';
|
|
6
|
+
import { HookTest } from './hook.test.js';
|
|
7
|
+
|
|
8
|
+
@Dependencies([
|
|
9
|
+
BasicTest,
|
|
10
|
+
CleanUpLayer1Test,
|
|
11
|
+
CleanUpLayer2Test,
|
|
12
|
+
CleanUpLayer3Test,
|
|
13
|
+
DynamicSkipTest,
|
|
14
|
+
HookTest
|
|
15
|
+
])
|
|
16
|
+
export class MultiDependency {
|
|
17
|
+
basicTest: BasicTest;
|
|
18
|
+
|
|
19
|
+
@Spec()
|
|
20
|
+
test() {
|
|
21
|
+
assert.strictEqual(this.basicTest.variable, 1);
|
|
22
|
+
}
|
|
23
|
+
}
|
package/test/skip-all.test.ts
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Spec, Dependencies } from "../src/index.js";
|
|
2
|
+
import { strict as assert } from 'assert';
|
|
3
|
+
|
|
4
|
+
export class ICharacterTest {
|
|
5
|
+
|
|
6
|
+
@Spec()
|
|
7
|
+
async test() { }
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
@Dependencies([
|
|
11
|
+
ICharacterTest
|
|
12
|
+
])
|
|
13
|
+
export class TurkishCharacterTest {
|
|
14
|
+
@Spec()
|
|
15
|
+
async check() {
|
|
16
|
+
assert.notEqual(this['iCharacterTest'], undefined, 'turkish character test is failed');
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|