nole 2.0.2 → 2.1.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.
- package/README.md +40 -1
- package/bin/nole.js +6 -2
- package/dist/decorators.d.ts.map +1 -1
- package/dist/decorators.js +3 -1
- package/dist/decorators.js.map +1 -1
- package/dist/run.d.ts +6 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +58 -28
- 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 +0 -1
- package/dist/test.js.map +1 -1
- package/package.json +1 -1
- package/src/decorators.ts +3 -1
- package/src/run.ts +74 -34
- package/src/test.ts +0 -1
- package/test/hook.test.ts +1 -1
- package/test/multiple-uppercased-chars.test.ts +18 -0
- package/test/turkish-chars.test.ts +18 -0
- package/dist/run.test.d.ts +0 -4
- package/dist/run.test.d.ts.map +0 -1
- package/dist/run.test.js +0 -31
- package/dist/run.test.js.map +0 -1
package/README.md
CHANGED
|
@@ -286,6 +286,38 @@ Connection closed!
|
|
|
286
286
|
|
|
287
287
|
We do not provide assert library. You can use chai or should.js.
|
|
288
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
|
+
|
|
289
321
|
## Compiled files
|
|
290
322
|
|
|
291
323
|
> Deprecated (v2.x+), It will always use ts-node/esm module
|
|
@@ -299,4 +331,11 @@ $ nole -T ./build/test/**/*.test.js
|
|
|
299
331
|
(ok) 1.09 ms QueueTest.Pipe()
|
|
300
332
|
```
|
|
301
333
|
|
|
302
|
-
> 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.
|
|
335
|
+
|
|
336
|
+
## Environment values to configure stuff
|
|
337
|
+
|
|
338
|
+
```
|
|
339
|
+
NOLE_PRESERVE_CONSECUTIVE_UPPERCASE=true
|
|
340
|
+
NOLE_PASCALCASE=false
|
|
341
|
+
```
|
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/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;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,
|
|
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,CAW/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
|
@@ -15,7 +15,9 @@ export function Dependencies(dependencies) {
|
|
|
15
15
|
return function (target) {
|
|
16
16
|
for (const dependency of dependencies) {
|
|
17
17
|
const propertyKey = camelcase(dependency.name, {
|
|
18
|
-
preserveConsecutiveUppercase: true
|
|
18
|
+
preserveConsecutiveUppercase: process.env.NOLE_PRESERVE_CONSECUTIVE_UPPERCASE == undefined ? true : (process.env.NOLE_PRESERVE_CONSECUTIVE_UPPERCASE === 'true'),
|
|
19
|
+
pascalCase: process.env.NOLE_PASCALCASE == undefined ? false : (process.env.NOLE_PASCALCASE === 'true'),
|
|
20
|
+
locale: 'en-US'
|
|
19
21
|
});
|
|
20
22
|
DeclareDependencyForTestClass({ constructor: target }, propertyKey, dependency);
|
|
21
23
|
}
|
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;AAC1D,OAAO,SAAS,MAAM,WAAW,CAAC;AAMlC,MAAM,UAAU,IAAI,CAAC,UAAkB,IAAI;IACzC,OAAO,UAAU,MAAM,EAAE,WAAW;QAClC,uBAAuB,CAAC,MAAM,EAAU,WAAW,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC,CAAA;AACH,CAAC;AAOD,MAAM,UAAU,UAAU,CAAI,UAA4B;IACxD,OAAO,UAAU,MAAM,EAAE,WAAW;QAClC,6BAA6B,CAAC,MAAM,EAAU,WAAW,EAAE,UAAU,CAAC,CAAC;IACzE,CAAC,CAAA;AACH,CAAC;AAMD,MAAM,UAAU,YAAY,CAAC,YAAkC;IAC7D,OAAO,UAAU,MAAM;QACrB,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE;YACrC,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE;gBAC7C,4BAA4B,EAAE,IAAI;
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"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"}
|
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,37 +159,46 @@ 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;
|
|
168
196
|
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'cleanUp' ? `.${propertyKey}:cleanUp` : ':cleanUp')));
|
|
169
197
|
let start = TimeDifference.begin();
|
|
170
198
|
try {
|
|
171
|
-
|
|
199
|
+
if (!options.orderDebug) {
|
|
200
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
|
|
201
|
+
}
|
|
172
202
|
let timeText = TimeFactor(start.end(), hook.timeout);
|
|
173
203
|
log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
174
204
|
}
|
|
@@ -179,7 +209,7 @@ async function HandleCleanUp(test, log) {
|
|
|
179
209
|
}
|
|
180
210
|
}
|
|
181
211
|
for (let tree of test.dependencies) {
|
|
182
|
-
await HandleCleanUp(tree.dependency,
|
|
212
|
+
await HandleCleanUp(tree.dependency, options);
|
|
183
213
|
}
|
|
184
214
|
}
|
|
185
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":"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"}
|
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
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"}
|
package/package.json
CHANGED
package/src/decorators.ts
CHANGED
|
@@ -31,7 +31,9 @@ export function Dependencies(dependencies: ClassDefition<any>[]): ClassDecorator
|
|
|
31
31
|
return function (target) {
|
|
32
32
|
for (const dependency of dependencies) {
|
|
33
33
|
const propertyKey = camelcase(dependency.name, {
|
|
34
|
-
preserveConsecutiveUppercase: true
|
|
34
|
+
preserveConsecutiveUppercase: process.env.NOLE_PRESERVE_CONSECUTIVE_UPPERCASE == undefined ? true : (process.env.NOLE_PRESERVE_CONSECUTIVE_UPPERCASE === 'true'),
|
|
35
|
+
pascalCase: process.env.NOLE_PASCALCASE == undefined ? false : (process.env.NOLE_PASCALCASE === 'true'),
|
|
36
|
+
locale: 'en-US'
|
|
35
37
|
});
|
|
36
38
|
DeclareDependencyForTestClass({ constructor: target }, propertyKey, dependency);
|
|
37
39
|
}
|
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,24 @@ 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;
|
|
195
|
-
|
|
233
|
+
|
|
196
234
|
let hookName = colors.bold(colors.yellow(test.name + (propertyKey != 'cleanUp' ? `.${propertyKey}:cleanUp` : ':cleanUp')));
|
|
197
235
|
let start = TimeDifference.begin();
|
|
198
236
|
|
|
199
237
|
try {
|
|
200
|
-
|
|
238
|
+
if (!options.orderDebug) {
|
|
239
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), hook.timeout);
|
|
240
|
+
}
|
|
201
241
|
|
|
202
242
|
let timeText = TimeFactor(start.end(), hook.timeout);
|
|
203
243
|
|
|
@@ -210,7 +250,7 @@ async function HandleCleanUp(test: Test, log: Function) {
|
|
|
210
250
|
}
|
|
211
251
|
|
|
212
252
|
for (let tree of test.dependencies) {
|
|
213
|
-
await HandleCleanUp(tree.dependency,
|
|
253
|
+
await HandleCleanUp(tree.dependency, options);
|
|
214
254
|
}
|
|
215
255
|
}
|
|
216
256
|
|
package/src/test.ts
CHANGED
|
@@ -24,7 +24,6 @@ export class Test {
|
|
|
24
24
|
specs = new Map<string, ISpec>();
|
|
25
25
|
hooks = new Map<string, IHook>();
|
|
26
26
|
isFinished: boolean = false; // cleanup ignored
|
|
27
|
-
isFullyFinished: boolean = false; // including cleanup
|
|
28
27
|
cleanUpCalled: boolean = false;
|
|
29
28
|
testInstance: any;
|
|
30
29
|
|
package/test/hook.test.ts
CHANGED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Spec, Dependencies } from "../src/index.js";
|
|
2
|
+
import { strict as assert } from 'assert';
|
|
3
|
+
|
|
4
|
+
export class IOTPOTest {
|
|
5
|
+
@Spec()
|
|
6
|
+
async test() { }
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
@Dependencies([
|
|
10
|
+
IOTPOTest
|
|
11
|
+
])
|
|
12
|
+
export class MultipleUppercasedCharsTest {
|
|
13
|
+
@Spec()
|
|
14
|
+
async check() {
|
|
15
|
+
assert.notEqual(this['IOTPOTest'], undefined, 'turkish character test is failed');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Spec, Dependencies } from "../src/index.js";
|
|
2
|
+
import { strict as assert } from 'assert';
|
|
3
|
+
|
|
4
|
+
export class ICharacterTest {
|
|
5
|
+
@Spec()
|
|
6
|
+
async test() { }
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
@Dependencies([
|
|
10
|
+
ICharacterTest
|
|
11
|
+
])
|
|
12
|
+
export class TurkishCharacterTest {
|
|
13
|
+
@Spec()
|
|
14
|
+
async check() {
|
|
15
|
+
assert.notEqual(this['iCharacterTest'], undefined, 'turkish character test is failed');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
package/dist/run.test.d.ts
DELETED
package/dist/run.test.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.test.d.ts","sourceRoot":"","sources":["../src/run.test.ts"],"names":[],"mappings":"AAIA,qBAAa,OAAO;IAEZ,QAAQ;CAYf"}
|
package/dist/run.test.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
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 { HashMap } from "./data.js";
|
|
11
|
-
import { Spec } from "./index.js";
|
|
12
|
-
import { ManualRun } from "./run.js";
|
|
13
|
-
export class RunTest {
|
|
14
|
-
async evaluate() {
|
|
15
|
-
const hashmap = HashMap();
|
|
16
|
-
const backup = new Map(hashmap);
|
|
17
|
-
hashmap.clear();
|
|
18
|
-
await ManualRun(console.log);
|
|
19
|
-
hashmap.clear();
|
|
20
|
-
for (const [key, value] of backup.entries()) {
|
|
21
|
-
hashmap.set(key, value);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
__decorate([
|
|
26
|
-
Spec(),
|
|
27
|
-
__metadata("design:type", Function),
|
|
28
|
-
__metadata("design:paramtypes", []),
|
|
29
|
-
__metadata("design:returntype", Promise)
|
|
30
|
-
], RunTest.prototype, "evaluate", null);
|
|
31
|
-
//# sourceMappingURL=run.test.js.map
|
package/dist/run.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.test.js","sourceRoot":"","sources":["../src/run.test.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,OAAO,OAAO;IAElB,KAAK,CAAC,QAAQ;QACZ,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QAEhC,OAAO,CAAC,KAAK,EAAE,CAAA;QACf,MAAM,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,CAAC,KAAK,EAAE,CAAC;QAEhB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE;YAC3C,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;SACzB;IACH,CAAC;CACF;AAZC;IADC,IAAI,EAAE;;;;uCAYN"}
|