nole 1.0.12 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +32 -0
  2. package/bin/nole.js +22 -22
  3. package/dist/data.d.ts +1 -1
  4. package/dist/data.d.ts.map +1 -1
  5. package/dist/data.js +2 -6
  6. package/dist/data.js.map +1 -1
  7. package/dist/decorators.d.ts +2 -1
  8. package/dist/decorators.d.ts.map +1 -1
  9. package/dist/decorators.js +20 -17
  10. package/dist/decorators.js.map +1 -1
  11. package/dist/dynamic.js +1 -5
  12. package/dist/dynamic.js.map +1 -1
  13. package/dist/index.d.ts +3 -3
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +3 -13
  16. package/dist/index.js.map +1 -1
  17. package/dist/run.d.ts.map +1 -1
  18. package/dist/run.js +39 -44
  19. package/dist/run.js.map +1 -1
  20. package/dist/run.test.d.ts +4 -0
  21. package/dist/run.test.d.ts.map +1 -0
  22. package/dist/run.test.js +31 -0
  23. package/dist/run.test.js.map +1 -0
  24. package/dist/test.d.ts +1 -0
  25. package/dist/test.d.ts.map +1 -1
  26. package/dist/test.js +5 -8
  27. package/dist/test.js.map +1 -1
  28. package/dist/utils/executor.js +1 -5
  29. package/dist/utils/executor.js.map +1 -1
  30. package/dist/utils/executor.test.d.ts +6 -0
  31. package/dist/utils/executor.test.d.ts.map +1 -0
  32. package/dist/utils/executor.test.js +49 -0
  33. package/dist/utils/executor.test.js.map +1 -0
  34. package/dist/utils/time_difference.js +1 -5
  35. package/dist/utils/time_difference.js.map +1 -1
  36. package/dist/utils/time_difference.test.d.ts +4 -0
  37. package/dist/utils/time_difference.test.d.ts.map +1 -0
  38. package/dist/utils/time_difference.test.js +24 -0
  39. package/dist/utils/time_difference.test.js.map +1 -0
  40. package/dist/utils/time_factor.d.ts +1 -1
  41. package/dist/utils/time_factor.d.ts.map +1 -1
  42. package/dist/utils/time_factor.js +5 -10
  43. package/dist/utils/time_factor.js.map +1 -1
  44. package/dist/utils/time_factor.test.d.ts +4 -0
  45. package/dist/utils/time_factor.test.d.ts.map +1 -0
  46. package/dist/utils/time_factor.test.js +42 -0
  47. package/dist/utils/time_factor.test.js.map +1 -0
  48. package/package.json +28 -6
  49. package/src/data.ts +2 -2
  50. package/src/decorators.ts +19 -2
  51. package/src/index.ts +3 -3
  52. package/src/run.ts +30 -21
  53. package/src/test.ts +3 -4
  54. package/src/utils/executor.test.ts +27 -0
  55. package/src/utils/executor.ts +1 -1
  56. package/src/utils/time_difference.test.ts +12 -0
  57. package/src/utils/time_factor.test.ts +29 -0
  58. package/src/utils/time_factor.ts +3 -1
  59. package/test/basic.test.ts +1 -1
  60. package/test/clean-up.test.ts +1 -1
  61. package/test/dynamic-skip.test.ts +1 -1
  62. package/test/dynamic.test.ts +1 -1
  63. package/test/hook.test.ts +2 -2
  64. package/test/multi-dependency.test.ts +23 -0
  65. package/test/skip-all.test.ts +9 -3
  66. package/test/tsconfig.json +3 -4
  67. package/tsconfig.json +4 -4
@@ -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;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,CAAC;IACpB,aAAa,EAAE,OAAO,CAAS;IAC/B,YAAY,EAAE,GAAG,CAAC;gBAEC,MAAM,EAAE,GAAG;IAI9B,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"}
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;IAYI,MAAM,EAAE,GAAG;IAX9B,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,eAAe,EAAE,OAAO,CAAS;IACjC,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
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HookType = exports.Test = void 0;
4
- class Test {
1
+ export class Test {
5
2
  constructor(target) {
6
3
  this.target = target;
7
4
  this.dependencies = [];
@@ -10,20 +7,20 @@ class Test {
10
7
  this.skipClass = null;
11
8
  this.specs = new Map();
12
9
  this.hooks = new Map();
13
- this.cleanUpCalled = false;
14
10
  this.isFinished = false;
11
+ this.isFullyFinished = false;
12
+ this.cleanUpCalled = false;
15
13
  }
16
14
  get name() {
17
15
  return this.target.name;
18
16
  }
19
17
  }
20
- exports.Test = Test;
21
- var HookType;
18
+ export var HookType;
22
19
  (function (HookType) {
23
20
  HookType[HookType["Before"] = 0] = "Before";
24
21
  HookType[HookType["After"] = 1] = "After";
25
22
  HookType[HookType["BeforeEach"] = 2] = "BeforeEach";
26
23
  HookType[HookType["AfterEach"] = 3] = "AfterEach";
27
24
  HookType[HookType["CleanUp"] = 4] = "CleanUp";
28
- })(HookType = exports.HookType || (exports.HookType = {}));
25
+ })(HookType || (HookType = {}));
29
26
  //# sourceMappingURL=test.js.map
package/dist/test.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";;;AAkBA,MAAa,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;QAEjC,kBAAa,GAAY,KAAK,CAAC;QAI7B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF;AAlBD,oBAkBC;AAED,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,2CAAM,CAAA;IACN,yCAAK,CAAA;IACL,mDAAU,CAAA;IACV,iDAAS,CAAA;IACT,6CAAO,CAAA;AACT,CAAC,EANW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAMnB"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"AAkBA,MAAM,OAAO,IAAI;IAYf,YAAmB,MAAW;QAAX,WAAM,GAAN,MAAM,CAAK;QAX9B,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,oBAAe,GAAY,KAAK,CAAC;QACjC,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"}
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Executor = void 0;
4
- function Executor(fn, timeout) {
1
+ export function Executor(fn, timeout) {
5
2
  return new Promise(async (resolve, reject) => {
6
3
  let _timeout = null;
7
4
  try {
@@ -20,5 +17,4 @@ function Executor(fn, timeout) {
20
17
  resolve();
21
18
  });
22
19
  }
23
- exports.Executor = Executor;
24
20
  //# sourceMappingURL=executor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/utils/executor.ts"],"names":[],"mappings":";;;AAAA,SAAgB,QAAQ,CAAC,EAAY,EAAE,OAAe;IACpD,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,QAAQ,GAAG,IAAI,CAAC;QAEpB,IAAI;YACF,IAAI,aAAa,GAAG,EAAE,EAAE,CAAC;YACzB,IAAI,aAAa,IAAI,aAAa,CAAC,IAAI,EAAE;gBACvC,QAAQ,GAAG,UAAU,CAAC;oBACpB,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,GAAG,OAAO,CAAC,CAAC,CAAC;gBAC3D,CAAC,EAAE,OAAO,CAAC,CAAC;gBAEZ,MAAM,aAAa,CAAC;aACrB;SACF;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;SACX;QAED,YAAY,CAAC,QAAS,CAAC,CAAC;QAExB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AArBD,4BAqBC"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/utils/executor.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAC,EAAY,EAAE,OAAe;IACpD,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,QAAQ,GAAG,IAAI,CAAC;QAEpB,IAAI;YACF,IAAI,aAAa,GAAG,EAAE,EAAE,CAAC;YACzB,IAAI,aAAa,IAAI,aAAa,CAAC,IAAI,EAAE;gBACvC,QAAQ,GAAG,UAAU,CAAC;oBACpB,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,GAAG,OAAO,CAAC,CAAC,CAAC;gBAC3D,CAAC,EAAE,OAAO,CAAC,CAAC;gBAEZ,MAAM,aAAa,CAAC;aACrB;SACF;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,CAAC,CAAC,CAAC,CAAC;SACX;QAED,YAAY,CAAC,QAAS,CAAC,CAAC;QAExB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare class ExecutorTest {
2
+ evaluate(): Promise<void>;
3
+ throws(): Promise<void>;
4
+ timeout(): Promise<void>;
5
+ }
6
+ //# sourceMappingURL=executor.test.d.ts.map
@@ -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"}
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.TimeDifference = void 0;
4
- class TimeDifference {
1
+ export class TimeDifference {
5
2
  constructor() {
6
3
  this.startAt = process.hrtime();
7
4
  }
@@ -13,5 +10,4 @@ class TimeDifference {
13
10
  return diff[0] * 1000 + diff[1] / 1e6;
14
11
  }
15
12
  }
16
- exports.TimeDifference = TimeDifference;
17
13
  //# sourceMappingURL=time_difference.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"time_difference.js","sourceRoot":"","sources":["../../src/utils/time_difference.ts"],"names":[],"mappings":";;;AAGA,MAAa,cAAc;IAGzB;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAClC,CAAC;IAMM,MAAM,CAAC,KAAK;QACjB,OAAO,IAAI,cAAc,EAAE,CAAC;IAC9B,CAAC;IAMD,GAAG;QACD,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAExC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACxC,CAAC;CACF;AAxBD,wCAwBC"}
1
+ {"version":3,"file":"time_difference.js","sourceRoot":"","sources":["../../src/utils/time_difference.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,cAAc;IAGzB;QACE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAClC,CAAC;IAMM,MAAM,CAAC,KAAK;QACjB,OAAO,IAAI,cAAc,EAAE,CAAC;IAC9B,CAAC;IAMD,GAAG;QACD,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAExC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACxC,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ export declare class TimeDifferenceTest {
2
+ evaluate(): Promise<void>;
3
+ }
4
+ //# sourceMappingURL=time_difference.test.d.ts.map
@@ -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"}
@@ -1,4 +1,4 @@
1
- export declare function TimeFactor(diff: number, timeout: number): string;
1
+ export declare function TimeFactor(diff: number, timeout: number): any;
2
2
  export declare function TimeResolve(ms: number): string;
3
3
  export declare function Delay(ms: number): Promise<void>;
4
4
  //# sourceMappingURL=time_factor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"time_factor.d.ts","sourceRoot":"","sources":["../../src/utils/time_factor.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAIvD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,UAKrC;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
1
+ {"version":3,"file":"time_factor.d.ts","sourceRoot":"","sources":["../../src/utils/time_factor.ts"],"names":[],"mappings":"AAIA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,OAIvD;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,UAKrC;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
@@ -1,16 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Delay = exports.TimeResolve = exports.TimeFactor = void 0;
4
- const colors = require("colors/safe");
5
- function TimeFactor(diff, timeout) {
1
+ import * as clrs from 'colors/safe.js';
2
+ const colors = clrs.default;
3
+ export function TimeFactor(diff, timeout) {
6
4
  if (diff < timeout / 5)
7
5
  return colors.green(TimeResolve(diff).padStart(9, ' '));
8
6
  if (diff < timeout / 2)
9
7
  return colors.yellow(TimeResolve(diff).padStart(9, ' '));
10
8
  return colors.red(TimeResolve(diff).padStart(9, ' '));
11
9
  }
12
- exports.TimeFactor = TimeFactor;
13
- function TimeResolve(ms) {
10
+ export function TimeResolve(ms) {
14
11
  if (ms < 1000)
15
12
  return (ms * 100 | 0) / 100 + ' ms';
16
13
  if (ms < 60 * 1000)
@@ -19,9 +16,7 @@ function TimeResolve(ms) {
19
16
  return (ms / 600 | 0) / 100 + ' m';
20
17
  return (ms / 36000 | 0) / 100 + ' h';
21
18
  }
22
- exports.TimeResolve = TimeResolve;
23
- function Delay(ms) {
19
+ export function Delay(ms) {
24
20
  return new Promise(resolve => setTimeout(resolve, ms));
25
21
  }
26
- exports.Delay = Delay;
27
22
  //# sourceMappingURL=time_factor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"time_factor.js","sourceRoot":"","sources":["../../src/utils/time_factor.ts"],"names":[],"mappings":";;;AAAA,sCAAsC;AAEtC,SAAgB,UAAU,CAAC,IAAY,EAAE,OAAe;IACtD,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAChF,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACjF,OAAO,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC;AAJD,gCAIC;AAED,SAAgB,WAAW,CAAC,EAAU;IACpC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;IACnD,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;QAAE,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;IACtD,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QAAE,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;IAC5D,OAAO,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AACvC,CAAC;AALD,kCAKC;AAED,SAAgB,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC;AAFD,sBAEC"}
1
+ {"version":3,"file":"time_factor.js","sourceRoot":"","sources":["../../src/utils/time_factor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AAEvC,MAAM,MAAM,GAAI,IAAY,CAAC,OAAO,CAAC;AAErC,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,OAAe;IACtD,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAChF,IAAI,IAAI,GAAG,OAAO,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACjF,OAAO,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;IACnD,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;QAAE,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;IACtD,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;QAAE,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;IAC5D,OAAO,CAAC,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare class TimeFactorTest {
2
+ evaluate(): Promise<void>;
3
+ }
4
+ //# sourceMappingURL=time_factor.test.d.ts.map
@@ -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,7 @@
1
1
  {
2
2
  "name": "nole",
3
- "version": "1.0.12",
3
+ "version": "2.0.2",
4
+ "type": "module",
4
5
  "description": "Testing Library for Typescript projects",
5
6
  "main": "dist/index.js",
6
7
  "types": "dist/index.d.ts",
@@ -13,7 +14,8 @@
13
14
  },
14
15
  "scripts": {
15
16
  "build": "tsc",
16
- "test": "node ./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"
17
19
  },
18
20
  "keywords": [
19
21
  "typescript",
@@ -23,11 +25,31 @@
23
25
  "author": "co3moz",
24
26
  "license": "ISC",
25
27
  "dependencies": {
26
- "@types/node": "^11.11.4",
28
+ "@types/node": "^16.11.41",
29
+ "camelcase": "^7.0.0",
27
30
  "colors": "^1.3.3",
28
31
  "commander": "^2.19.0",
29
- "glob": "^7.1.3",
30
- "ts-node": "^8.0.3",
31
- "typescript": "^4.3.5"
32
+ "glob": "^7.2.3",
33
+ "ts-node": "^10.8.1",
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
+ ]
32
54
  }
33
55
  }
package/src/data.ts CHANGED
@@ -1,9 +1,9 @@
1
- import { Test } from "./test";
1
+ import { Test } from "./test.js";
2
2
 
3
3
  const KEY = '_nole_hash';
4
4
 
5
5
  export function HashMap(): Map<any, Test> {
6
- let g: any = global || {};
6
+ let g: any = global;
7
7
 
8
8
  if (g[KEY]) {
9
9
  return g[KEY];
package/src/decorators.ts CHANGED
@@ -1,5 +1,6 @@
1
- import { HashMap } from "./data";
2
- import { Test, HookType, ClassDefition } from "./test";
1
+ import { HashMap } from "./data.js";
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,22 @@ 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
+ });
36
+ DeclareDependencyForTestClass({ constructor: target }, propertyKey, dependency);
37
+ }
38
+ }
39
+ }
40
+
41
+
25
42
 
26
43
  /**
27
44
  * Creates hook for test case
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
1
 
2
- export { Dependency, Spec, Hook, Skip, SkipClass } from './decorators';
3
- export { HookType } from './test';
4
- export { skipTest } from './dynamic';
2
+ export { Dependency, Spec, Hook, Skip, SkipClass, Dependencies } from './decorators.js';
3
+ export { HookType } from './test.js';
4
+ export { skipTest } from './dynamic.js';
package/src/run.ts CHANGED
@@ -1,9 +1,11 @@
1
- import { HashMap } from "./data";
2
- import { TimeDifference } from "./utils/time_difference";
3
- import { TimeFactor } from "./utils/time_factor";
4
- import * as colors from 'colors/safe';
5
- import { Executor } from "./utils/executor";
6
- import { HookType, Test } from "./test";
1
+ import { HashMap } from "./data.js";
2
+ import { TimeDifference } from "./utils/time_difference.js";
3
+ import { TimeFactor } from "./utils/time_factor.js";
4
+ import * as clrs from 'colors/safe.js';
5
+ import { Executor } from "./utils/executor.js";
6
+ import { HookType, Test } from "./test.js";
7
+
8
+ const colors = (clrs as any).default;
7
9
 
8
10
  const OK_TEXT = colors.bold(colors.green(' (ok) '));
9
11
  const SKIP_TEXT = colors.bold(colors.yellow(' (skip) '));
@@ -37,11 +39,13 @@ export function ManualRun(log: Function) {
37
39
  await HandleSpecs(test, log);
38
40
  await HandleAfterHooks(test);
39
41
 
42
+ test.isFinished = true;
43
+
40
44
  if (test.dependents.length == 0) {
41
- await HandleCleanUp(test);
45
+ await HandleCleanUp(test, log);
42
46
  }
43
-
44
- test.isFinished = true;
47
+
48
+ test.isFullyFinished = true;
45
49
  } else {
46
50
  DependencyLock(hashMap);
47
51
  }
@@ -86,7 +90,7 @@ async function HandleBeforeHooks(test: Test) {
86
90
  let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'before' ? `.${propertyKey}:before` : ':before')));
87
91
 
88
92
  console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
89
- console.error(e?.stack ?? e);
93
+ console.error((e as any)?.stack ?? e);
90
94
  throw e;
91
95
  }
92
96
  }
@@ -102,7 +106,7 @@ async function HandleBeforeEachHooks(test: Test) {
102
106
  let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'beforeEach' ? `.${propertyKey}:beforeEach` : ':beforeEach')));
103
107
 
104
108
  console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
105
- console.error(e?.stack ?? e);
109
+ console.error((e as any)?.stack ?? e);
106
110
  throw e;
107
111
  }
108
112
  }
@@ -118,7 +122,7 @@ async function HandleAfterEachHooks(test: Test) {
118
122
  let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'afterEach' ? `.${propertyKey}:afterEach` : ':afterEach')));
119
123
 
120
124
  console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
121
- console.error(e?.stack ?? e);
125
+ console.error((e as any)?.stack ?? e);
122
126
  throw e;
123
127
  }
124
128
  }
@@ -146,8 +150,8 @@ async function HandleSpecs(test: Test, log: Function) {
146
150
 
147
151
  log(`${OK_TEXT} ${timeText} ${testName}()`);
148
152
  } catch (e) {
149
- if (e?._nole_anchor) {
150
- let reason = e.reason;
153
+ if ((e as any)?._nole_anchor) {
154
+ let reason = (e as any).reason;
151
155
  log(`${DYNAMIC_SKIP_TEXT} ${' '.repeat(8)} ${testName}() ${reason ? '{' + reason + '}' : ''}`);
152
156
  continue;
153
157
  }
@@ -155,7 +159,7 @@ async function HandleSpecs(test: Test, log: Function) {
155
159
  let timeText = TimeFactor(start.end(), spec.timeout);
156
160
 
157
161
  console.error(`${FAILED_TEXT} ${timeText} ${testName}()`);
158
- console.error(e?.stack ?? e);
162
+ console.error((e as any)?.stack ?? e);
159
163
  throw e;
160
164
  }
161
165
 
@@ -173,14 +177,14 @@ async function HandleAfterHooks(test: Test) {
173
177
  let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'after' ? `.${propertyKey}:after` : ':after')));
174
178
 
175
179
  console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
176
- console.error(e?.stack ?? e);
180
+ console.error((e as any)?.stack ?? e);
177
181
  throw e;
178
182
  }
179
183
  }
180
184
  }
181
185
 
182
186
 
183
- async function HandleCleanUp(test: Test) {
187
+ async function HandleCleanUp(test: Test, log: Function) {
184
188
  if (test.cleanUpCalled) return;
185
189
  if (!test.dependents.every(dependent => dependent.isFinished)) return;
186
190
 
@@ -188,20 +192,25 @@ async function HandleCleanUp(test: Test) {
188
192
 
189
193
  for (let [propertyKey, hook] of test.hooks.entries()) {
190
194
  if (hook.type != HookType.CleanUp) continue;
195
+
196
+ let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'cleanUp' ? `.${propertyKey}:cleanUp` : ':cleanUp')));
197
+ let start = TimeDifference.begin();
198
+
191
199
  try {
192
200
  await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
193
201
 
194
- } catch (e) {
195
- let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'cleanUp' ? `.${propertyKey}:cleanUp` : ':cleanUp')));
202
+ let timeText = TimeFactor(start.end(), hook.timeout);
196
203
 
204
+ log(`${OK_TEXT} ${timeText} ${hookName}()`);
205
+ } catch (e) {
197
206
  console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
198
- console.error(e?.stack ?? e);
207
+ console.error((e as any)?.stack ?? e);
199
208
  throw e;
200
209
  }
201
210
  }
202
211
 
203
212
  for (let tree of test.dependencies) {
204
- HandleCleanUp(tree.dependency);
213
+ await HandleCleanUp(tree.dependency, log);
205
214
  }
206
215
  }
207
216
 
package/src/test.ts CHANGED
@@ -23,13 +23,12 @@ 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;
26
+ isFinished: boolean = false; // cleanup ignored
27
+ isFullyFinished: boolean = false; // including cleanup
27
28
  cleanUpCalled: boolean = false;
28
29
  testInstance: any;
29
30
 
30
- constructor(public target: any) {
31
- this.isFinished = false;
32
- }
31
+ constructor(public target: any) {}
33
32
 
34
33
  get name() {
35
34
  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
+ }
@@ -19,4 +19,4 @@ export function Executor(fn: Function, timeout: number): Promise<void> {
19
19
 
20
20
  resolve();
21
21
  });
22
- }
22
+ }
@@ -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
+ }