nole 2.2.2 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ci.yaml +34 -0
- package/LICENSE.md +21 -0
- package/README.md +474 -388
- package/bin/nole.js +145 -111
- package/dist/const.d.ts +8 -0
- package/dist/const.d.ts.map +1 -0
- package/dist/const.js +9 -0
- package/dist/core.d.ts +22 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +56 -0
- package/dist/dynamic.d.ts +5 -1
- package/dist/dynamic.d.ts.map +1 -1
- package/dist/dynamic.js +35 -1
- package/dist/handle/after-each-hooks.d.ts +3 -0
- package/dist/handle/after-each-hooks.d.ts.map +1 -0
- package/dist/handle/after-each-hooks.js +26 -0
- package/dist/handle/after-hooks.d.ts +3 -0
- package/dist/handle/after-hooks.d.ts.map +1 -0
- package/dist/handle/after-hooks.js +24 -0
- package/dist/handle/before-each-hooks.d.ts +3 -0
- package/dist/handle/before-each-hooks.d.ts.map +1 -0
- package/dist/handle/before-each-hooks.js +26 -0
- package/dist/handle/before-hooks.d.ts +3 -0
- package/dist/handle/before-hooks.d.ts.map +1 -0
- package/dist/handle/before-hooks.js +34 -0
- package/dist/handle/cleanup-hooks.d.ts +3 -0
- package/dist/handle/cleanup-hooks.d.ts.map +1 -0
- package/dist/handle/cleanup-hooks.js +34 -0
- package/dist/handle/specs.d.ts +3 -0
- package/dist/handle/specs.d.ts.map +1 -0
- package/dist/handle/specs.js +50 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/pipeline.test.d.ts +7 -0
- package/dist/pipeline.test.d.ts.map +1 -0
- package/dist/pipeline.test.js +124 -0
- package/dist/run.d.ts +7 -6
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +166 -196
- package/dist/symbol.d.ts +2 -0
- package/dist/symbol.d.ts.map +1 -0
- package/dist/symbol.js +2 -0
- package/dist/test-wrap.d.ts +38 -0
- package/dist/test-wrap.d.ts.map +1 -0
- package/dist/test-wrap.js +30 -0
- package/dist/utils/executor.js +1 -1
- package/dist/utils/executor.test.d.ts +3 -1
- package/dist/utils/executor.test.d.ts.map +1 -1
- package/dist/utils/executor.test.js +3 -30
- package/dist/utils/time_difference.d.ts +9 -0
- package/dist/utils/time_difference.d.ts.map +1 -1
- package/dist/utils/time_difference.js +10 -1
- package/dist/utils/time_difference.test.d.ts +3 -1
- package/dist/utils/time_difference.test.d.ts.map +1 -1
- package/dist/utils/time_difference.test.js +5 -18
- package/dist/utils/time_factor.d.ts.map +1 -1
- package/dist/utils/time_factor.js +2 -3
- package/dist/utils/time_factor.test.d.ts +3 -1
- package/dist/utils/time_factor.test.d.ts.map +1 -1
- package/dist/utils/time_factor.test.js +3 -18
- package/package.json +58 -58
- package/tsconfig.json +18 -18
- package/dist/data.d.ts +0 -3
- package/dist/data.d.ts.map +0 -1
- package/dist/data.js +0 -9
- package/dist/data.js.map +0 -1
- package/dist/decorators.d.ts +0 -9
- package/dist/decorators.d.ts.map +0 -1
- package/dist/decorators.js +0 -118
- package/dist/decorators.js.map +0 -1
- package/dist/dynamic.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/run.js.map +0 -1
- package/dist/test.d.ts +0 -39
- package/dist/test.d.ts.map +0 -1
- package/dist/test.js +0 -25
- package/dist/test.js.map +0 -1
- package/dist/utils/executor.js.map +0 -1
- package/dist/utils/executor.test.js.map +0 -1
- package/dist/utils/time_difference.js.map +0 -1
- package/dist/utils/time_difference.test.js.map +0 -1
- package/dist/utils/time_factor.js.map +0 -1
- package/dist/utils/time_factor.test.js.map +0 -1
- package/src/data.ts +0 -13
- package/src/decorators.ts +0 -208
- package/src/dynamic.ts +0 -11
- package/src/index.ts +0 -13
- package/src/run.ts +0 -331
- package/src/test.ts +0 -47
- package/src/utils/executor.test.ts +0 -27
- package/src/utils/executor.ts +0 -22
- package/src/utils/time_difference.test.ts +0 -12
- package/src/utils/time_difference.ts +0 -26
- package/src/utils/time_factor.test.ts +0 -29
- package/src/utils/time_factor.ts +0 -35
- package/test/basic.test.ts +0 -24
- package/test/before.test.ts +0 -54
- package/test/clean-up.test.ts +0 -52
- package/test/dynamic-skip.test.ts +0 -8
- package/test/dynamic.test.ts +0 -13
- package/test/hook.test.ts +0 -27
- package/test/multi-dependency.test.ts +0 -45
- package/test/multiple-uppercased-chars.test.ts +0 -19
- package/test/skip-all.test.ts +0 -19
- package/test/tsconfig.json +0 -24
- package/test/turkish-chars.test.ts +0 -19
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { HookType, TestWrap } from "../test-wrap.js";
|
|
2
|
+
import { Executor } from "../utils/executor.js";
|
|
3
|
+
import { TimeDifference } from "../utils/time_difference.js";
|
|
4
|
+
import { TimeFactor } from "../utils/time_factor.js";
|
|
5
|
+
import { colors, DEFAULT_TIMEOUT, HOOK_FAILED_TEXT, OK_TEXT, } from "../const.js";
|
|
6
|
+
export async function handleCleanUp(test) {
|
|
7
|
+
const timeout = test.config.timeout ?? DEFAULT_TIMEOUT;
|
|
8
|
+
if (test.cleanUpCalled)
|
|
9
|
+
return;
|
|
10
|
+
if (!test.dependents.every((dependent) => dependent.isFinished && dependent.cleanUpCalled))
|
|
11
|
+
return;
|
|
12
|
+
test.cleanUpCalled = true;
|
|
13
|
+
for (let [propertyKey, hook] of test.hooks.entries()) {
|
|
14
|
+
if (hook.type != HookType.CleanUp)
|
|
15
|
+
continue;
|
|
16
|
+
let hookName = colors.bold(colors.yellow(test.name +
|
|
17
|
+
(propertyKey != "cleanUp" ? `.${propertyKey}:cleanUp` : ":cleanUp")));
|
|
18
|
+
let start = TimeDifference.begin();
|
|
19
|
+
try {
|
|
20
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), timeout);
|
|
21
|
+
let timeText = TimeFactor(start.end(), timeout);
|
|
22
|
+
console.log(`${OK_TEXT} ${timeText} ${hookName}()`);
|
|
23
|
+
}
|
|
24
|
+
catch (e) {
|
|
25
|
+
console.error(`${HOOK_FAILED_TEXT} ${hookName}()`);
|
|
26
|
+
console.error(e?.stack ?? e);
|
|
27
|
+
throw e;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
for (let tree of test.dependencies) {
|
|
31
|
+
await handleCleanUp(tree.dependency);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xlYW51cC1ob29rcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9oYW5kbGUvY2xlYW51cC1ob29rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFDTCxNQUFNLEVBQ04sZUFBZSxFQUNmLGdCQUFnQixFQUNoQixPQUFPLEdBQ1IsTUFBTSxhQUFhLENBQUM7QUFFckIsTUFBTSxDQUFDLEtBQUssVUFBVSxhQUFhLENBQUMsSUFBYztJQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUM7SUFFdkQsSUFBSSxJQUFJLENBQUMsYUFBYTtRQUFFLE9BQU87SUFDL0IsSUFDRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUNwQixDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLFVBQVUsSUFBSSxTQUFTLENBQUMsYUFBYSxDQUMvRDtRQUVELE9BQU87SUFFVCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztJQUUxQixLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3JELElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsT0FBTztZQUFFLFNBQVM7UUFFNUMsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDeEIsTUFBTSxDQUFDLE1BQU0sQ0FDWCxJQUFJLENBQUMsSUFBSTtZQUNQLENBQUMsV0FBVyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxXQUFXLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQ3RFLENBQ0YsQ0FBQztRQUNGLElBQUksS0FBSyxHQUFHLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUVuQyxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsQ0FDWixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQ3RELE9BQU8sQ0FDUixDQUFDO1lBRUYsSUFBSSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUVoRCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxJQUFJLFFBQVEsSUFBSSxRQUFRLElBQUksQ0FBQyxDQUFDO1FBQ3RELENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLGdCQUFnQixJQUFJLFFBQVEsSUFBSSxDQUFDLENBQUM7WUFDbkQsT0FBTyxDQUFDLEtBQUssQ0FBRSxDQUFTLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNuQyxNQUFNLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQztBQUNILENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specs.d.ts","sourceRoot":"","sources":["../../src/handle/specs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAerD,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,iBAiE/C"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { HookType, TestWrap } from "../test-wrap.js";
|
|
2
|
+
import { Executor } from "../utils/executor.js";
|
|
3
|
+
import { TimeDifference } from "../utils/time_difference.js";
|
|
4
|
+
import { TimeFactor } from "../utils/time_factor.js";
|
|
5
|
+
import { handleAfterEachHooks } from "./after-each-hooks.js";
|
|
6
|
+
import { handleBeforeEachHooks } from "./before-each-hooks.js";
|
|
7
|
+
import { colors, DEFAULT_TIMEOUT, DYNAMIC_SKIP_TEXT, FAILED_TEXT, OK_TEXT, SKIP_TEXT, } from "../const.js";
|
|
8
|
+
export async function handleSpecs(test) {
|
|
9
|
+
const timeout = test.config.timeout ?? DEFAULT_TIMEOUT;
|
|
10
|
+
for (let [propertyKey, spec] of test.specs.entries()) {
|
|
11
|
+
let testName = colors.bold(colors.yellow(test.name + "." + propertyKey));
|
|
12
|
+
const shouldPropertySkip = test.skip.has(propertyKey);
|
|
13
|
+
if (shouldPropertySkip || test.skipClass) {
|
|
14
|
+
let reason = shouldPropertySkip
|
|
15
|
+
? test.skip.get(propertyKey).reason
|
|
16
|
+
: test.skipClass.reason;
|
|
17
|
+
const hasOrigin = !!test.skipClass?.origin;
|
|
18
|
+
const TEXT = hasOrigin ? DYNAMIC_SKIP_TEXT : SKIP_TEXT;
|
|
19
|
+
console.log(`${TEXT} ${" ".repeat(hasOrigin ? 8 : 9)} ${testName}() ${reason ? "{" + reason + "}" : ""}${hasOrigin ? `\n${" ".repeat(22)}↳ skip came from ${test.skipClass?.origin}` : ``}`);
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
await handleBeforeEachHooks(test);
|
|
23
|
+
let start = TimeDifference.begin();
|
|
24
|
+
try {
|
|
25
|
+
await Executor(test.testInstance[propertyKey].bind(test.testInstance), timeout);
|
|
26
|
+
let timeText = TimeFactor(start.end(), timeout);
|
|
27
|
+
console.log(`${OK_TEXT} ${timeText} ${testName}()`);
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
const anchor = e?._nole_anchor;
|
|
31
|
+
if (anchor === 1) {
|
|
32
|
+
let reason = e.reason;
|
|
33
|
+
console.log(`${DYNAMIC_SKIP_TEXT} ${" ".repeat(8)} ${testName}() ${reason ? "{" + reason + "}" : ""}`);
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
else if (anchor === 2) {
|
|
37
|
+
let reason = e.reason;
|
|
38
|
+
test.skipClass = { reason, origin: "." + propertyKey };
|
|
39
|
+
console.log(`${DYNAMIC_SKIP_TEXT} ${" ".repeat(8)} ${testName}() ${reason ? "{" + reason + "}" : ""}`);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
let timeText = TimeFactor(start.end(), timeout);
|
|
43
|
+
console.error(`${FAILED_TEXT} ${timeText} ${testName}()`);
|
|
44
|
+
console.error(e?.stack ?? e);
|
|
45
|
+
throw e;
|
|
46
|
+
}
|
|
47
|
+
await handleAfterEachHooks(test);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaGFuZGxlL3NwZWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUNMLE1BQU0sRUFDTixlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxPQUFPLEVBQ1AsU0FBUyxHQUNWLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUFDLElBQWM7SUFDOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksZUFBZSxDQUFDO0lBRXZELEtBQUssSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDckQsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFFekUsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN0RCxJQUFJLGtCQUFrQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN6QyxJQUFJ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
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export { skipTest } from "./dynamic.js";
|
|
1
|
+
export { HookType } from "./test-wrap.js";
|
|
2
|
+
export { Test } from "./core.js";
|
|
3
|
+
export { skipTest, skipClass, getTest, addTest } 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":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
3
|
-
export { skipTest } from "./dynamic.js";
|
|
4
|
-
//# sourceMappingURL=
|
|
1
|
+
export { HookType } from "./test-wrap.js";
|
|
2
|
+
export { Test } from "./core.js";
|
|
3
|
+
export { skipTest, skipClass, getTest, addTest } from "./dynamic.js";
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGNBQWMsQ0FBQyJ9
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare const PipelineTest_base: new () => {} & import("./core.js").BaseTest;
|
|
2
|
+
export declare class PipelineTest extends PipelineTest_base {
|
|
3
|
+
dynamicApi(): Promise<void>;
|
|
4
|
+
drivesTheWholePipeline(): Promise<void>;
|
|
5
|
+
}
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=pipeline.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.test.d.ts","sourceRoot":"","sources":["../src/pipeline.test.ts"],"names":[],"mappings":";AAgHA,qBAAa,YAAa,SAAQ,iBAAM;IAChC,UAAU,kBAsBf;IAEK,sBAAsB,kBAoB3B;CACF"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import * as assert from "assert";
|
|
2
|
+
import { Test } from "./index.js";
|
|
3
|
+
import { addTest, getTest, skipClass, skipTest } from "./dynamic.js";
|
|
4
|
+
import { ManualRun } from "./run.js";
|
|
5
|
+
// These classes are not exported, so the outer runner ignores them. They are
|
|
6
|
+
// driven directly through the src ManualRun pipeline below, which is what lets
|
|
7
|
+
// coverage reach run.ts, the hook handlers and specs.ts.
|
|
8
|
+
class Dependency extends Test() {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
this.ready = false;
|
|
12
|
+
}
|
|
13
|
+
init() {
|
|
14
|
+
this.ready = true;
|
|
15
|
+
}
|
|
16
|
+
cleanUp() { }
|
|
17
|
+
}
|
|
18
|
+
class Main extends Test({
|
|
19
|
+
dependencies: {
|
|
20
|
+
dep: () => Dependency,
|
|
21
|
+
depDirect: Dependency, // covers the direct-class dependency branch
|
|
22
|
+
},
|
|
23
|
+
}) {
|
|
24
|
+
_internal() {
|
|
25
|
+
assert.fail("internal methods should never run as specs");
|
|
26
|
+
}
|
|
27
|
+
skip_thisOne() {
|
|
28
|
+
assert.fail("skip_ methods should never run");
|
|
29
|
+
}
|
|
30
|
+
hookInit() { }
|
|
31
|
+
async before() { }
|
|
32
|
+
async after() { }
|
|
33
|
+
async beforeEach() { }
|
|
34
|
+
async afterEach() { }
|
|
35
|
+
usesDependency() {
|
|
36
|
+
assert.equal(this.dep.ready, true);
|
|
37
|
+
assert.equal(this.depDirect.ready, true);
|
|
38
|
+
}
|
|
39
|
+
cleanUp() { }
|
|
40
|
+
}
|
|
41
|
+
class OrderFirst extends Test() {
|
|
42
|
+
step() { }
|
|
43
|
+
}
|
|
44
|
+
class OrderLast extends Test({ before: () => [OrderFirst] }) {
|
|
45
|
+
step() { }
|
|
46
|
+
}
|
|
47
|
+
class AfterAnchor extends Test() {
|
|
48
|
+
step() { }
|
|
49
|
+
}
|
|
50
|
+
class AfterDependent extends Test({ after: () => [AfterAnchor] }) {
|
|
51
|
+
step() { }
|
|
52
|
+
}
|
|
53
|
+
class DynamicSkipClassFromSpec extends Test() {
|
|
54
|
+
first() {
|
|
55
|
+
skipClass("skipped from a spec");
|
|
56
|
+
}
|
|
57
|
+
second() {
|
|
58
|
+
assert.fail("should have been class-skipped");
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
class DynamicSkipClassFromBefore extends Test() {
|
|
62
|
+
before() {
|
|
63
|
+
skipClass("skipped from before");
|
|
64
|
+
}
|
|
65
|
+
spec() {
|
|
66
|
+
assert.fail("should have been class-skipped");
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
class DynamicSkipSingleSpec extends Test() {
|
|
70
|
+
skipped() {
|
|
71
|
+
skipTest("just this one");
|
|
72
|
+
}
|
|
73
|
+
kept() { }
|
|
74
|
+
}
|
|
75
|
+
class StaticallySkipped extends Test({ skip: "static skip" }) {
|
|
76
|
+
spec() {
|
|
77
|
+
assert.fail("should have been skipped");
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
class Failing extends Test() {
|
|
81
|
+
boom() {
|
|
82
|
+
throw new Error("intentional failure");
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
class SkipTestInBefore extends Test() {
|
|
86
|
+
before() {
|
|
87
|
+
skipTest("wrong helper");
|
|
88
|
+
}
|
|
89
|
+
spec() { }
|
|
90
|
+
}
|
|
91
|
+
export class PipelineTest extends Test() {
|
|
92
|
+
async dynamicApi() {
|
|
93
|
+
class NeverRegistered extends Test() {
|
|
94
|
+
spec() { }
|
|
95
|
+
}
|
|
96
|
+
assert.equal(addTest(() => NeverRegistered), true);
|
|
97
|
+
assert.equal(addTest(() => NeverRegistered), false); // duplicate
|
|
98
|
+
const instance = getTest(() => NeverRegistered);
|
|
99
|
+
assert.ok(instance);
|
|
100
|
+
class Unknown extends Test() {
|
|
101
|
+
}
|
|
102
|
+
assert.equal(getTest(() => Unknown), null);
|
|
103
|
+
assert.throws(() => skipTest("x"), (e) => e._nole_anchor === 1 && e.reason === "x");
|
|
104
|
+
assert.throws(() => skipClass("y"), (e) => e._nole_anchor === 2 && e.reason === "y");
|
|
105
|
+
}
|
|
106
|
+
async drivesTheWholePipeline() {
|
|
107
|
+
await ManualRun(new Set([
|
|
108
|
+
Main,
|
|
109
|
+
OrderFirst,
|
|
110
|
+
OrderLast,
|
|
111
|
+
AfterAnchor,
|
|
112
|
+
AfterDependent,
|
|
113
|
+
DynamicSkipClassFromSpec,
|
|
114
|
+
DynamicSkipClassFromBefore,
|
|
115
|
+
DynamicSkipSingleSpec,
|
|
116
|
+
StaticallySkipped,
|
|
117
|
+
]));
|
|
118
|
+
// a throwing spec propagates out of the pipeline
|
|
119
|
+
await assert.rejects(() => ManualRun(new Set([Failing])));
|
|
120
|
+
// skipTest inside a before hook is a usage error
|
|
121
|
+
await assert.rejects(() => ManualRun(new Set([SkipTestInBefore])));
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZWxpbmUudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9waXBlbGluZS50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXJDLDZFQUE2RTtBQUM3RSwrRUFBK0U7QUFDL0UseURBQXlEO0FBRXpELE1BQU0sVUFBVyxTQUFRLElBQUksRUFBRTtJQUEvQjs7UUFDRSxVQUFLLEdBQUcsS0FBSyxDQUFDO0lBT2hCLENBQUM7SUFMQyxJQUFJO1FBQ0YsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELE9BQU8sS0FBSSxDQUFDO0NBQ2I7QUFFRCxNQUFNLElBQUssU0FBUSxJQUFJLENBQUM7SUFDdEIsWUFBWSxFQUFFO1FBQ1osR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVU7UUFDckIsU0FBUyxFQUFFLFVBQWlCLEVBQUUsNENBQTRDO0tBQzNFO0NBQ0YsQ0FBQztJQUNBLFNBQVM7UUFDUCxNQUFNLENBQUMsSUFBSSxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFFBQVEsS0FBSSxDQUFDO0lBRWIsS0FBSyxDQUFDLE1BQU0sS0FBSSxDQUFDO0lBQ2pCLEtBQUssQ0FBQyxLQUFLLEtBQUksQ0FBQztJQUNoQixLQUFLLENBQUMsVUFBVSxLQUFJLENBQUM7SUFDckIsS0FBSyxDQUFDLFNBQVMsS0FBSSxDQUFDO0lB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
|
package/dist/run.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export declare function
|
|
6
|
-
export
|
|
1
|
+
import { TestWrap } from "./test-wrap.js";
|
|
2
|
+
import { BaseTest } from "./core.js";
|
|
3
|
+
export declare function ManualRun(originalTests: Set<new () => BaseTest>): Promise<void>;
|
|
4
|
+
export declare function updateInformationForClass(target: new () => BaseTest, test: TestWrap, tests: Map<new () => BaseTest, TestWrap>): void;
|
|
5
|
+
export declare function createInstanceIfNotExists(test: TestWrap): void;
|
|
6
|
+
export declare function getTestMap(): Map<new () => BaseTest, TestWrap>;
|
|
7
|
+
export declare function getFutureTestMap(): Map<new () => BaseTest, TestWrap>;
|
|
7
8
|
//# sourceMappingURL=run.d.ts.map
|
package/dist/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAsB,MAAM,WAAW,CAAC;AAWzD,wBAAsB,SAAS,CAAC,aAAa,EAAE,GAAG,CAAC,UAAU,QAAQ,CAAC,iBA0CrE;AAUD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,UAAU,QAAQ,EAC1B,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,GAAG,CAAC,UAAU,QAAQ,EAAE,QAAQ,CAAC,QAyEzC;AAYD,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,QAAQ,QAWvD;AAgGD,wBAAgB,UAAU,kBA1PE,QAAQ,YA4PnC;AAED,wBAAgB,gBAAgB,kBA7PA,QAAQ,YA+PvC"}
|