nole 2.2.2 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +142 -236
  2. package/bin/nole.js +43 -44
  3. package/dist/const.d.ts +8 -0
  4. package/dist/const.d.ts.map +1 -0
  5. package/dist/const.js +9 -0
  6. package/dist/core.d.ts +22 -0
  7. package/dist/core.d.ts.map +1 -0
  8. package/dist/core.js +56 -0
  9. package/dist/dynamic.d.ts +4 -1
  10. package/dist/dynamic.d.ts.map +1 -1
  11. package/dist/dynamic.js +25 -1
  12. package/dist/handle/after-each-hooks.d.ts +3 -0
  13. package/dist/handle/after-each-hooks.d.ts.map +1 -0
  14. package/dist/handle/after-each-hooks.js +26 -0
  15. package/dist/handle/after-hooks.d.ts +3 -0
  16. package/dist/handle/after-hooks.d.ts.map +1 -0
  17. package/dist/handle/after-hooks.js +24 -0
  18. package/dist/handle/before-each-hooks.d.ts +3 -0
  19. package/dist/handle/before-each-hooks.d.ts.map +1 -0
  20. package/dist/handle/before-each-hooks.js +26 -0
  21. package/dist/handle/before-hooks.d.ts +3 -0
  22. package/dist/handle/before-hooks.d.ts.map +1 -0
  23. package/dist/handle/before-hooks.js +24 -0
  24. package/dist/handle/cleanup-hooks.d.ts +3 -0
  25. package/dist/handle/cleanup-hooks.d.ts.map +1 -0
  26. package/dist/handle/cleanup-hooks.js +34 -0
  27. package/dist/handle/specs.d.ts +3 -0
  28. package/dist/handle/specs.d.ts.map +1 -0
  29. package/dist/handle/specs.js +41 -0
  30. package/dist/index.d.ts +3 -3
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +4 -4
  33. package/dist/run.d.ts +7 -6
  34. package/dist/run.d.ts.map +1 -1
  35. package/dist/run.js +158 -196
  36. package/dist/symbol.d.ts +2 -0
  37. package/dist/symbol.d.ts.map +1 -0
  38. package/dist/symbol.js +2 -0
  39. package/dist/test-wrap.d.ts +37 -0
  40. package/dist/test-wrap.d.ts.map +1 -0
  41. package/dist/test-wrap.js +30 -0
  42. package/dist/utils/executor.js +1 -1
  43. package/dist/utils/executor.test.d.ts +3 -1
  44. package/dist/utils/executor.test.d.ts.map +1 -1
  45. package/dist/utils/executor.test.js +3 -30
  46. package/dist/utils/time_difference.d.ts +9 -0
  47. package/dist/utils/time_difference.d.ts.map +1 -1
  48. package/dist/utils/time_difference.js +10 -1
  49. package/dist/utils/time_difference.test.d.ts +3 -1
  50. package/dist/utils/time_difference.test.d.ts.map +1 -1
  51. package/dist/utils/time_difference.test.js +5 -18
  52. package/dist/utils/time_factor.d.ts.map +1 -1
  53. package/dist/utils/time_factor.js +2 -3
  54. package/dist/utils/time_factor.test.d.ts +3 -1
  55. package/dist/utils/time_factor.test.d.ts.map +1 -1
  56. package/dist/utils/time_factor.test.js +3 -18
  57. package/package.json +6 -6
  58. package/src/const.ts +11 -0
  59. package/src/core.ts +89 -0
  60. package/src/dynamic.ts +43 -1
  61. package/src/handle/after-each-hooks.ts +41 -0
  62. package/src/handle/after-hooks.ts +38 -0
  63. package/src/handle/before-each-hooks.ts +40 -0
  64. package/src/handle/before-hooks.ts +39 -0
  65. package/src/handle/cleanup-hooks.ts +55 -0
  66. package/src/handle/specs.ts +68 -0
  67. package/src/index.ts +3 -13
  68. package/src/run.ts +184 -256
  69. package/src/symbol.ts +1 -0
  70. package/src/{test.ts → test-wrap.ts} +13 -12
  71. package/src/utils/executor.test.ts +2 -5
  72. package/src/utils/executor.ts +1 -1
  73. package/src/utils/time_difference.test.ts +2 -3
  74. package/src/utils/time_factor.test.ts +2 -3
  75. package/src/utils/time_factor.ts +1 -3
  76. package/test/basic.test.ts +8 -9
  77. package/test/before.test.ts +14 -27
  78. package/test/clean-up.test.ts +12 -16
  79. package/test/dynamic-skip.test.ts +2 -4
  80. package/test/dynamic.test.ts +23 -8
  81. package/test/extend.test.ts +43 -0
  82. package/test/hook.test.ts +9 -10
  83. package/test/multi-dependency.test.ts +25 -27
  84. package/test/multiple-uppercased-chars.test.ts +8 -7
  85. package/test/skip-all.test.ts +4 -13
  86. package/test/turkish-chars.test.ts +8 -7
  87. package/tsconfig.json +5 -7
  88. package/dist/data.d.ts +0 -3
  89. package/dist/data.d.ts.map +0 -1
  90. package/dist/data.js +0 -9
  91. package/dist/data.js.map +0 -1
  92. package/dist/decorators.d.ts +0 -9
  93. package/dist/decorators.d.ts.map +0 -1
  94. package/dist/decorators.js +0 -118
  95. package/dist/decorators.js.map +0 -1
  96. package/dist/dynamic.js.map +0 -1
  97. package/dist/index.js.map +0 -1
  98. package/dist/run.js.map +0 -1
  99. package/dist/test.d.ts +0 -39
  100. package/dist/test.d.ts.map +0 -1
  101. package/dist/test.js +0 -25
  102. package/dist/test.js.map +0 -1
  103. package/dist/utils/executor.js.map +0 -1
  104. package/dist/utils/executor.test.js.map +0 -1
  105. package/dist/utils/time_difference.js.map +0 -1
  106. package/dist/utils/time_difference.test.js.map +0 -1
  107. package/dist/utils/time_factor.js.map +0 -1
  108. package/dist/utils/time_factor.test.js.map +0 -1
  109. package/src/data.ts +0 -13
  110. package/src/decorators.ts +0 -208
@@ -1,54 +1,41 @@
1
1
  import { strict as assert } from "assert";
2
- import { Before, Spec, After, Hook, HookType, Dependents } from "../src/index.js";
3
2
 
4
- // @After(() => [AlwaysExecuteFirst])
5
- export class AlwaysExecuteLater {
6
- alwaysExecuteFirst: AlwaysExecuteFirst;
3
+ import { Test } from "../dist/core.js";
4
+ import { getTest } from "../dist/index.js";
7
5
 
8
- @Spec()
6
+ export class AlwaysExecuteLater extends Test({
7
+ after: () => [AlwaysExecuteFirst],
8
+ }) {
9
9
  test() {
10
- assert(this.alwaysExecuteFirst.value === 1);
10
+ const alwaysExecuteFirst = getTest(() => AlwaysExecuteFirst);
11
+ assert(alwaysExecuteFirst.value === 1);
11
12
  }
12
-
13
- @Hook(HookType.CleanUp)
14
- cleanUp() {}
15
13
  }
16
-
17
- @Dependents(() => [AlwaysExecuteLater])
18
- export class AlwaysExecuteFirst {
14
+ export class AlwaysExecuteFirst extends Test() {
19
15
  value = 0;
20
16
 
21
- @Spec()
22
17
  test() {
23
18
  this.value = 1;
24
19
  }
25
-
26
- @Hook(HookType.CleanUp)
27
- cleanUp() {}
28
20
  }
29
21
 
30
- @After(() => [AlwaysExecuteFirst2])
31
- export class AlwaysExecuteLater2 {
32
- alwaysExecuteFirst2: AlwaysExecuteFirst2;
33
-
34
- @Spec()
22
+ export class AlwaysExecuteLater2 extends Test({}) {
35
23
  test() {
36
- assert(this.alwaysExecuteFirst2.value === 1);
24
+ const alwaysExecuteFirst2 = getTest(() => AlwaysExecuteFirst2);
25
+ assert(alwaysExecuteFirst2.value === 1);
37
26
  }
38
27
 
39
- @Hook(HookType.CleanUp)
40
28
  cleanUp() {}
41
29
  }
42
30
 
43
- // @Before(() => [AlwaysExecuteLater2])
44
- export class AlwaysExecuteFirst2 {
31
+ export class AlwaysExecuteFirst2 extends Test({
32
+ before: () => [AlwaysExecuteLater2],
33
+ }) {
45
34
  value = 0;
46
35
 
47
- @Spec()
48
36
  test() {
49
37
  this.value = 1;
50
38
  }
51
39
 
52
- @Hook(HookType.CleanUp)
53
40
  cleanUp() {}
54
41
  }
@@ -1,50 +1,46 @@
1
- import { Spec, Dependency, Hook, HookType } from "../src/index.js";
1
+ import { Test } from "../dist/index";
2
2
 
3
- export class CleanUpLayer1Test {
3
+ export class CleanUpLayer1Test extends Test() {
4
4
  data: any;
5
5
 
6
- @Spec()
7
6
  async start() {
8
7
  this.data = { somethingImportant: 1 };
9
8
  }
10
9
 
11
- @Hook(HookType.CleanUp)
12
10
  async cleanUp() {
13
11
  this.data = null;
14
12
  console.log("layer 1 clean up completed!");
15
13
  }
16
14
  }
17
15
 
18
- export class CleanUpLayer2Test {
16
+ export class CleanUpLayer2Test extends Test({
17
+ dependencies: {
18
+ previousLayer: () => CleanUpLayer1Test,
19
+ },
20
+ }) {
19
21
  data: any;
20
22
 
21
- @Dependency(CleanUpLayer1Test)
22
- previousLayer!: any;
23
-
24
- @Spec()
25
23
  async start() {
26
24
  this.data = { somethingImportant: 1 };
27
25
  }
28
26
 
29
- @Hook(HookType.CleanUp)
30
27
  async cleanUp() {
31
28
  this.data = null;
32
29
  console.log("layer 2 clean up completed!");
33
30
  }
34
31
  }
35
32
 
36
- export class CleanUpLayer3Test {
33
+ export class CleanUpLayer3Test extends Test({
34
+ dependencies: {
35
+ previousLayer: () => CleanUpLayer2Test,
36
+ },
37
+ }) {
37
38
  data: any;
38
39
 
39
- @Dependency(CleanUpLayer2Test)
40
- previousLayer!: any;
41
-
42
- @Spec()
43
40
  async start() {
44
41
  this.data = { somethingImportant: 1 };
45
42
  }
46
43
 
47
- @Hook(HookType.CleanUp)
48
44
  async cleanUp() {
49
45
  this.data = null;
50
46
  console.log("layer 3 clean up completed!");
@@ -1,7 +1,5 @@
1
- import { skipTest, Spec } from "../src/index.js";
2
-
3
- export class DynamicSkipTest {
4
- @Spec()
1
+ import { Test, skipTest } from "../dist/index.js";
2
+ export class DynamicSkipTest extends Test() {
5
3
  async thisShouldBeSkipped() {
6
4
  skipTest("I don't like this test anymore!");
7
5
  }
@@ -1,13 +1,28 @@
1
1
  import * as assert from "assert";
2
- import { Spec } from "../src/index.js";
2
+ import { addTest } from "../dist/dynamic";
3
+ import { Test } from "../dist/index";
3
4
 
4
- export class DynamicTest {
5
- @Spec()
6
- async thisTestsShouldNotFail() {
7
- for (let i = 0; i < 10; i++) this.testThis(i);
8
- }
5
+ class DynamicTest extends Test() {
6
+ variable = 1;
7
+
8
+ async test() {
9
+ const v = (this.variable = Math.random());
9
10
 
10
- testThis(value: number) {
11
- assert.notEqual(value, 10);
11
+ addTest(
12
+ () =>
13
+ class UltraDynamic extends Test({
14
+ dependencies: { dynamicTest: () => DynamicTest },
15
+ }) {
16
+ async test() {
17
+ assert.equal(
18
+ this.dynamicTest.variable,
19
+ v,
20
+ "The dynamic test variable should be the same as the one in the parent test",
21
+ );
22
+ }
23
+ },
24
+ );
12
25
  }
13
26
  }
27
+
28
+ addTest(() => DynamicTest);
@@ -0,0 +1,43 @@
1
+ import * as assert from "assert";
2
+ import { Test } from "../dist/index.js";
3
+
4
+ class Simple extends Test() {
5
+ variable = 1;
6
+
7
+ async before() {
8
+ console.log("before", this.variable);
9
+ assert.equal(this.variable, 1);
10
+ }
11
+
12
+ async after() {
13
+ console.log("after", this.variable);
14
+ assert.equal(this.variable, 2);
15
+ }
16
+
17
+ async change() {
18
+ this.variable = 2;
19
+ }
20
+ }
21
+
22
+ class ExtendedSimple extends Simple {
23
+ async change() {
24
+ this.variable = 3;
25
+ }
26
+
27
+ async after() {
28
+ console.log("after", this.variable);
29
+ assert.equal(this.variable, 3);
30
+ }
31
+ }
32
+
33
+ export class ExtendedTest extends Test({
34
+ dependencies: {
35
+ simple: () => Simple,
36
+ extendedSimple: () => ExtendedSimple,
37
+ },
38
+ }) {
39
+ async check() {
40
+ assert.equal(this.simple.variable, 2);
41
+ assert.equal(this.extendedSimple.variable, 3);
42
+ }
43
+ }
package/test/hook.test.ts CHANGED
@@ -1,26 +1,25 @@
1
1
  import * as assert from "assert";
2
- import { Spec, Hook, Skip, HookType } from "../src/index.js";
2
+ import { Test } from "../dist/index.js";
3
3
 
4
- export class HookTest {
5
- array: any[] = [1, 2, 3];
4
+ export class HookTest extends Test() {
5
+ array: number[] = [1, 2, 3];
6
6
 
7
- @Hook(HookType.BeforeEach)
8
- async pushFourIntoArray() {
7
+ async beforeEach() {
9
8
  this.array.push(4);
10
9
  }
11
10
 
12
- @Spec()
11
+ async afterEach() {
12
+ assert.equal(this.array.length, 3);
13
+ }
14
+
13
15
  async hasToBe4() {
14
16
  assert.equal(this.array.pop(), 4);
15
17
  }
16
18
 
17
- @Skip("no need")
18
- @Spec()
19
- async hasToBe4Again() {
19
+ async skip_hasToBe4Again() {
20
20
  assert.equal(this.array.pop(), 4);
21
21
  }
22
22
 
23
- @Spec()
24
23
  async hasToBe4AgainButNotSkipped() {
25
24
  assert.equal(this.array.pop(), 4);
26
25
  }
@@ -1,6 +1,4 @@
1
1
  import * as assert from "assert";
2
- import { Dependencies, Spec } from "../src/index.js";
3
- import { BasicTest } from "./basic.test.js";
4
2
  import {
5
3
  CleanUpLayer1Test,
6
4
  CleanUpLayer2Test,
@@ -8,38 +6,38 @@ import {
8
6
  } from "./clean-up.test.js";
9
7
  import { DynamicSkipTest } from "./dynamic-skip.test.js";
10
8
  import { HookTest } from "./hook.test.js";
9
+ import { Test } from "../dist/index.js";
10
+ import { DependencyTest } from "./basic.test.js";
11
11
 
12
- @Dependencies(() => [
13
- BasicTest,
14
- CleanUpLayer1Test,
15
- CleanUpLayer2Test,
16
- CleanUpLayer3Test,
17
- DynamicSkipTest,
18
- HookTest,
19
- MultiDependency,
20
- ])
21
- export class MultiLazyDependency {
22
- basicTest: BasicTest;
12
+ export class MultiLazyDependency extends Test({
13
+ dependencies: {
14
+ dependencyTest: () => DependencyTest,
23
15
 
24
- @Spec()
16
+ c1: () => CleanUpLayer1Test,
17
+ c2: () => CleanUpLayer2Test,
18
+ c3: () => CleanUpLayer3Test,
19
+ c4: () => DynamicSkipTest,
20
+ c5: () => HookTest,
21
+ c6: () => MultiDependency,
22
+ },
23
+ }) {
25
24
  test() {
26
- assert.strictEqual(this.basicTest.variable, 1);
25
+ assert.strictEqual(this.dependencyTest.basicTest.variable, 1);
27
26
  }
28
27
  }
29
28
 
30
- @Dependencies([
31
- BasicTest,
32
- CleanUpLayer1Test,
33
- CleanUpLayer2Test,
34
- CleanUpLayer3Test,
35
- DynamicSkipTest,
36
- HookTest,
37
- ])
38
- export class MultiDependency {
39
- basicTest: BasicTest;
29
+ export class MultiDependency extends Test({
30
+ dependencies: {
31
+ dependencyTest: () => DependencyTest,
40
32
 
41
- @Spec()
33
+ c1: () => CleanUpLayer1Test,
34
+ c2: () => CleanUpLayer2Test,
35
+ c3: () => CleanUpLayer3Test,
36
+ c4: () => DynamicSkipTest,
37
+ c5: () => HookTest,
38
+ },
39
+ }) {
42
40
  test() {
43
- assert.strictEqual(this.basicTest.variable, 1);
41
+ assert.strictEqual(this.dependencyTest.basicTest.variable, 1);
44
42
  }
45
43
  }
@@ -1,19 +1,20 @@
1
- import { Spec, Dependencies } from "../src/index.js";
2
1
  import { strict as assert } from "assert";
2
+ import { Test } from "../dist/index";
3
3
 
4
- export class IOTPOTest {
5
- @Spec()
4
+ export class IOTPOTest extends Test() {
6
5
  async test() {}
7
6
  }
8
7
 
9
- @Dependencies([IOTPOTest])
10
- export class MultipleUppercasedCharsTest {
11
- @Spec()
8
+ export class MultipleUppercasedCharsTest extends Test({
9
+ dependencies: {
10
+ IOTPOTest: () => IOTPOTest,
11
+ },
12
+ }) {
12
13
  async check() {
13
14
  assert.notEqual(
14
15
  this["IOTPOTest"],
15
16
  undefined,
16
- "turkish character test is failed"
17
+ "turkish character test is failed",
17
18
  );
18
19
  }
19
20
  }
@@ -1,19 +1,10 @@
1
1
  import * as assert from "assert";
2
- import { Spec, Skip } from "../src/index.js";
3
- import { SkipClass } from "../src/decorators.js";
2
+ import { Test } from "../dist/index";
4
3
 
5
- @SkipClass("skip all class")
6
- export class SkipAllTest {
7
- @Spec()
4
+ export class SkipAllTest extends Test({
5
+ skip: "skip all class",
6
+ }) {
8
7
  async wontRun() {}
9
8
 
10
- @Skip("won't run too")
11
- @Spec()
12
9
  async wontRunToo() {}
13
10
  }
14
-
15
- @SkipClass()
16
- export class SkipAllWithoutReason {
17
- @Spec()
18
- async wontRun() {}
19
- }
@@ -1,19 +1,20 @@
1
- import { Spec, Dependencies } from "../src/index.js";
2
1
  import { strict as assert } from "assert";
2
+ import { Test } from "../dist/index";
3
3
 
4
- export class ICharacterTest {
5
- @Spec()
4
+ export class ICharacterTest extends Test() {
6
5
  async test() {}
7
6
  }
8
7
 
9
- @Dependencies([ICharacterTest])
10
- export class TurkishCharacterTest {
11
- @Spec()
8
+ export class TurkishCharacterTest extends Test({
9
+ dependencies: {
10
+ iCharacterTest: () => ICharacterTest,
11
+ },
12
+ }) {
12
13
  async check() {
13
14
  assert.notEqual(
14
15
  this["iCharacterTest"],
15
16
  undefined,
16
- "turkish character test is failed"
17
+ "turkish character test is failed",
17
18
  );
18
19
  }
19
20
  }
package/tsconfig.json CHANGED
@@ -1,17 +1,15 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  "target": "es2020",
4
- "module": "es2020",
5
- "moduleResolution": "node",
4
+ "module": "node16",
5
+ "moduleResolution": "node16",
6
6
  "lib": ["es2020", "esnext"],
7
7
  "declaration": true,
8
8
  "declarationMap": true,
9
- "sourceMap": true,
10
9
  "outDir": "dist",
11
- "removeComments": true,
12
- "experimentalDecorators": true,
13
- "emitDecoratorMetadata": true,
14
- "useDefineForClassFields": false
10
+ "strictNullChecks": true,
11
+ "inlineSourceMap": true,
12
+ "verbatimModuleSyntax": true
15
13
  },
16
14
  "include": ["src/**/*.ts"],
17
15
  "exclude": ["node_modules", "dist"]
package/dist/data.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { Test } from "./test.js";
2
- export declare function HashMap(): Map<any, Test>;
3
- //# sourceMappingURL=data.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,wBAAgB,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAQxC"}
package/dist/data.js DELETED
@@ -1,9 +0,0 @@
1
- const KEY = "_nole_hash";
2
- export function HashMap() {
3
- let g = global;
4
- if (g[KEY]) {
5
- return g[KEY];
6
- }
7
- return (g[KEY] = new Map());
8
- }
9
- //# sourceMappingURL=data.js.map
package/dist/data.js.map DELETED
@@ -1 +0,0 @@
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,CAAC;QACX,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAa,CAAC,CAAC;AACzC,CAAC"}
@@ -1,9 +0,0 @@
1
- import { HookType, ClassDefition } from "./test.js";
2
- export declare function Spec(timeout?: number): MethodDecorator;
3
- export declare function Dependency<T>(dependency: ClassDefition<T>): PropertyDecorator;
4
- export declare function Dependencies(dependencies: (() => ClassDefition<any>[]) | ClassDefition<any>[]): ClassDecorator;
5
- export declare function Dependents(dependents: (() => ClassDefition<any>[]) | ClassDefition<any>[]): ClassDecorator;
6
- export declare function Hook(type: HookType, timeout?: number): MethodDecorator;
7
- export declare function Skip(reason?: string): MethodDecorator;
8
- export declare function SkipClass(reason?: string): ClassDecorator;
9
- //# sourceMappingURL=decorators.d.ts.map
@@ -1 +0,0 @@
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;AAMD,wBAAgB,UAAU,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAI7E;AAMD,wBAAgB,YAAY,CAC1B,YAAY,EAAE,CAAC,MAAM,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,GAChE,cAAc,CAgBhB;AAMD,wBAAgB,UAAU,CACxB,UAAU,EAAE,CAAC,MAAM,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,GAC9D,cAAc,CAgBhB;AAOD,wBAAgB,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAE,MAAa,GAAG,eAAe,CAI5E;AAMD,wBAAgB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,eAAe,CAIrD;AAMD,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAIzD"}
@@ -1,118 +0,0 @@
1
- import { HashMap } from "./data.js";
2
- import { Test } from "./test.js";
3
- import camelcase from "camelcase";
4
- export function Spec(timeout = 5000) {
5
- return function (target, propertyKey) {
6
- DeclareSpecForTestClass(target, propertyKey, timeout);
7
- };
8
- }
9
- export function Dependency(dependency) {
10
- return function (target, propertyKey) {
11
- DeclareDependencyForTestClass(target, propertyKey, dependency);
12
- };
13
- }
14
- export function Dependencies(dependencies) {
15
- return function (target) {
16
- setImmediate(() => {
17
- const value = isFunction(dependencies) ? dependencies() : dependencies;
18
- for (const dependency of value) {
19
- const propertyKey = validPropertyName(dependency.name);
20
- DeclareDependencyForTestClass({ constructor: target }, propertyKey, dependency);
21
- }
22
- });
23
- };
24
- }
25
- export function Dependents(dependents) {
26
- return function (target) {
27
- setImmediate(() => {
28
- const value = isFunction(dependents) ? dependents() : dependents;
29
- for (const dependent of value) {
30
- const propertyKey = validPropertyName(target.name);
31
- DeclareDependencyForTestClass({ constructor: dependent }, propertyKey, target);
32
- }
33
- });
34
- };
35
- }
36
- export function Hook(type, timeout = 5000) {
37
- return function (target, propertyKey) {
38
- DeclareHookForTestClass(target, propertyKey, type, timeout);
39
- };
40
- }
41
- export function Skip(reason) {
42
- return function (target, propertyKey) {
43
- DeclareAsSkipped(target, propertyKey, reason ? reason : "");
44
- };
45
- }
46
- export function SkipClass(reason) {
47
- return function (target) {
48
- DeclareAsSkippedClass(target, reason ? reason : "");
49
- };
50
- }
51
- function GetTestInstanceOfTarget(target) {
52
- let instance = HashMap().get(target);
53
- if (!instance) {
54
- HashMap().set(target, (instance = new Test(target)));
55
- }
56
- return instance;
57
- }
58
- function DeclareDependencyForTestClass(protoOfTarget, propertyKey, dependency) {
59
- const target = protoOfTarget.constructor;
60
- const test = GetTestInstanceOfTarget(target);
61
- const depTest = GetTestInstanceOfTarget(dependency);
62
- test.dependencies.push({ propertyKey, dependency: depTest });
63
- depTest.dependents.push(test);
64
- }
65
- function DeclareSpecForTestClass(protoOfTarget, propertyKey, timeout) {
66
- const target = protoOfTarget.constructor;
67
- const test = GetTestInstanceOfTarget(target);
68
- if (test.hooks.has(propertyKey)) {
69
- throw new Error("@Hook cannot be used with @Spec! Test: ");
70
- }
71
- if (test.specs.has(propertyKey)) {
72
- throw new Error("Multiple @Spec for a single method is prohibited");
73
- }
74
- test.specs.set(propertyKey, { timeout });
75
- }
76
- function DeclareHookForTestClass(protoOfTarget, propertyKey, hookType, timeout) {
77
- const target = protoOfTarget.constructor;
78
- const test = GetTestInstanceOfTarget(target);
79
- if (test.specs.has(propertyKey)) {
80
- throw new Error("@Hook cannot be used with @Spec");
81
- }
82
- if (test.hooks.has(propertyKey)) {
83
- throw new Error("Multiple @Hook for a single method is prohibited");
84
- }
85
- test.hooks.set(propertyKey, { type: hookType, timeout });
86
- }
87
- function DeclareAsSkipped(protoOfTarget, propertyKey, reason) {
88
- const target = protoOfTarget.constructor;
89
- const test = GetTestInstanceOfTarget(target);
90
- if (test.skip.has(propertyKey)) {
91
- const obj = test.skip.get(propertyKey);
92
- if (reason) {
93
- obj.reason = (obj.reason ? obj.reason + ", " : "") + reason;
94
- }
95
- }
96
- else {
97
- test.skip.set(propertyKey, { reason });
98
- }
99
- }
100
- function DeclareAsSkippedClass(target, reason) {
101
- const test = GetTestInstanceOfTarget(target);
102
- test.skipClass = { reason };
103
- }
104
- function validPropertyName(name) {
105
- return camelcase(name, {
106
- preserveConsecutiveUppercase: process.env.NOLE_PRESERVE_CONSECUTIVE_UPPERCASE == undefined
107
- ? true
108
- : process.env.NOLE_PRESERVE_CONSECUTIVE_UPPERCASE === "true",
109
- pascalCase: process.env.NOLE_PASCALCASE == undefined
110
- ? false
111
- : process.env.NOLE_PASCALCASE === "true",
112
- locale: "en-US",
113
- });
114
- }
115
- function isFunction(thing) {
116
- return typeof thing !== "object" && typeof thing === "function";
117
- }
118
- //# sourceMappingURL=decorators.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dynamic.js","sourceRoot":"","sources":["../src/dynamic.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAC,MAAe;IACtC,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,cAAe,SAAQ,KAAK;IAGhC,YAAmB,MAAe;QAChC,KAAK,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC;QADrB,WAAM,GAAN,MAAM,CAAS;QAFlC,iBAAY,GAAG,CAAC,CAAC;IAIjB,CAAC;CACF"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,YAAY,IAAI,KAAK,EACrB,UAAU,IAAI,MAAM,EACpB,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC"}
package/dist/run.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}